peachsim 0.1.627 → 0.1.629
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/LICENSE +1 -1
- package/cli/bin.ts +6 -2
- package/cli/bridge-flow-runner.ts +79 -72
- package/cli/commands/cleanup.ts +6 -6
- package/cli/commands/control.ts +4 -5
- package/cli/commands/detox.ts +25 -11
- package/cli/commands/flow.ts +3 -2
- package/cli/commands/inspect/core.ts +5 -0
- package/cli/commands/inspect.ts +43 -49
- package/cli/commands/mode.ts +11 -7
- package/cli/commands/report-issue.ts +1 -1
- package/cli/commands/setup.ts +16 -11
- package/cli/commands/show-touches-mode.ts +33 -0
- package/cli/commands/skills.ts +16 -0
- package/cli/commands/test.ts +8 -1
- package/cli/commands/welcome.ts +3 -3
- package/cli/drivers/playwright-sim-host.ts +6 -5
- package/cli/help-core.ts +9 -4
- package/cli/internal-child.ts +14 -2
- package/cli/levenshtein.ts +27 -0
- package/cli/main.ts +28 -18
- package/cli/ws-bridge.ts +3 -2
- package/detox/index.ts +234 -7
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.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/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +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/detox/index.cjs +170 -13
- package/dist-lib/dev-bundle-resolution.cjs +2 -2
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +57 -97
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- 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 +44 -5
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +7 -1
- package/dist-lib/menu.mjs +7 -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 +43 -4
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.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 +159 -210
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- 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.cjs +7276 -7131
- package/dist-lib/vite-kotlin.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +43 -4
- package/package.json +1 -1
- package/skills/contrast/SKILL.md +1 -1
- package/src/dev-bundle-resolution.ts +1 -1
- package/src/host/bridge-host.ts +2 -34
- package/src/menu.ts +7 -0
- package/src/native-seam-manifest.ts +4 -16
- package/src/runtime-assets.ts +59 -2
- package/src/screenshots/frame-compose.ts +4 -1
- package/src/vite-plugin.ts +723 -25
package/detox/index.ts
CHANGED
|
@@ -369,6 +369,52 @@ function reapOwnedBrowser(): void {
|
|
|
369
369
|
} catch {}
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
+
// an open picture-in-picture window keeps the browser context alive and
|
|
373
|
+
// context.close() never settles (expo-pip has no exit api, and the OS
|
|
374
|
+
// window outlives its video element). exit PiP in every page first; the
|
|
375
|
+
// page's leavepictureinpicture handler stops the capture tracks and
|
|
376
|
+
// removes the video. bounded and best-effort so a wedged page cannot eat
|
|
377
|
+
// the close budget.
|
|
378
|
+
const CONTEXT_MEDIA_QUIESCE_TIMEOUT_MS = 2_500
|
|
379
|
+
|
|
380
|
+
async function quiesceContextMedia(context: BrowserContext): Promise<void> {
|
|
381
|
+
const pages = context.pages()
|
|
382
|
+
if (pages.length === 0) return
|
|
383
|
+
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
384
|
+
await Promise.race([
|
|
385
|
+
Promise.all(
|
|
386
|
+
pages.map((page) =>
|
|
387
|
+
page
|
|
388
|
+
.evaluate(() => {
|
|
389
|
+
const doc = globalThis.document
|
|
390
|
+
if (!doc) return
|
|
391
|
+
if (
|
|
392
|
+
doc.pictureInPictureElement &&
|
|
393
|
+
typeof doc.exitPictureInPicture === 'function'
|
|
394
|
+
) {
|
|
395
|
+
void doc.exitPictureInPicture().catch(() => {})
|
|
396
|
+
}
|
|
397
|
+
doc.querySelectorAll('video').forEach((v) => {
|
|
398
|
+
try {
|
|
399
|
+
if (
|
|
400
|
+
v.srcObject &&
|
|
401
|
+
typeof (v.srcObject as MediaStream).getTracks === 'function'
|
|
402
|
+
) {
|
|
403
|
+
;(v.srcObject as MediaStream).getTracks().forEach((t) => t.stop())
|
|
404
|
+
v.srcObject = null
|
|
405
|
+
}
|
|
406
|
+
v.pause()
|
|
407
|
+
v.remove()
|
|
408
|
+
} catch {}
|
|
409
|
+
})
|
|
410
|
+
})
|
|
411
|
+
.catch(() => {}),
|
|
412
|
+
),
|
|
413
|
+
),
|
|
414
|
+
sleep(CONTEXT_MEDIA_QUIESCE_TIMEOUT_MS),
|
|
415
|
+
]).catch(() => {})
|
|
416
|
+
}
|
|
417
|
+
|
|
372
418
|
async function closeContext() {
|
|
373
419
|
if (_browserCompromised) {
|
|
374
420
|
throw new Error(`sootsim browser is compromised: ${_browserCompromised}`)
|
|
@@ -377,6 +423,7 @@ async function closeContext() {
|
|
|
377
423
|
const context = _context
|
|
378
424
|
const closingContextId = contextIdentity
|
|
379
425
|
try {
|
|
426
|
+
await quiesceContextMedia(context)
|
|
380
427
|
await withLifecycleTimeout('context.close()', closingContextId, () => context.close())
|
|
381
428
|
_context = null
|
|
382
429
|
_page = null
|
|
@@ -715,7 +762,9 @@ async function focusElementForTextEntry(el: SootSimElement): Promise<void> {
|
|
|
715
762
|
// would edit around a caret the tap then moves, so wait for its focus.
|
|
716
763
|
await pollUntil(
|
|
717
764
|
() =>
|
|
718
|
-
page.evaluate(
|
|
765
|
+
page.evaluate(
|
|
766
|
+
async () => (await window.__sootsimTest!.getFocusedNode?.())?.nodeId ?? null,
|
|
767
|
+
),
|
|
719
768
|
(focusedNodeId) => focusedNodeId === node.nodeId,
|
|
720
769
|
{
|
|
721
770
|
timeoutMs: 5000,
|
|
@@ -1535,6 +1584,14 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
1535
1584
|
visible: node.layout.width > 0 && node.layout.height > 0,
|
|
1536
1585
|
enabled: !node.accessibilityState?.disabled,
|
|
1537
1586
|
...node,
|
|
1587
|
+
frame: node.absolutePosition
|
|
1588
|
+
? {
|
|
1589
|
+
x: node.absolutePosition.x,
|
|
1590
|
+
y: node.absolutePosition.y,
|
|
1591
|
+
width: node.absolutePosition.width ?? node.frame?.width ?? 0,
|
|
1592
|
+
height: node.absolutePosition.height ?? node.frame?.height ?? 0,
|
|
1593
|
+
}
|
|
1594
|
+
: node.frame,
|
|
1538
1595
|
}
|
|
1539
1596
|
},
|
|
1540
1597
|
|
|
@@ -1552,6 +1609,131 @@ export function element(matcher: Matcher): SootSimElement {
|
|
|
1552
1609
|
}
|
|
1553
1610
|
|
|
1554
1611
|
// device object -- app lifecycle
|
|
1612
|
+
export interface DetoxUserNotificationParams {
|
|
1613
|
+
trigger: {
|
|
1614
|
+
type: string
|
|
1615
|
+
[key: string]: unknown
|
|
1616
|
+
}
|
|
1617
|
+
title?: unknown
|
|
1618
|
+
subtitle?: unknown
|
|
1619
|
+
body?: unknown
|
|
1620
|
+
badge?: unknown
|
|
1621
|
+
category?: unknown
|
|
1622
|
+
'content-available'?: unknown
|
|
1623
|
+
payload?: Record<string, unknown>
|
|
1624
|
+
'user-text'?: unknown
|
|
1625
|
+
'action-identifier'?: unknown
|
|
1626
|
+
[key: string]: unknown
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
// detox's documented sendUserNotification data, converted the way detox ios
|
|
1630
|
+
// builds it (DetoxUserNotificationDispatcher.payload): the user info is the
|
|
1631
|
+
// custom `payload`, with the top-level title, subtitle, and body written into
|
|
1632
|
+
// its aps alert and badge, category, and content-available written into its
|
|
1633
|
+
// aps. a top-level key that is absent removes the payload's own value, as
|
|
1634
|
+
// assigning nil to a swift dictionary does; every other aps key survives.
|
|
1635
|
+
function detoxNotificationToApnsPayload(params: DetoxUserNotificationParams): {
|
|
1636
|
+
payload: Record<string, unknown>
|
|
1637
|
+
actionId?: string
|
|
1638
|
+
userText?: string
|
|
1639
|
+
} {
|
|
1640
|
+
const trigger = objectOrEmpty(objectOrEmpty(params).trigger)
|
|
1641
|
+
const supported = ['push', 'calendar', 'location', 'timeInterval']
|
|
1642
|
+
if (typeof trigger.type !== 'string' || !supported.includes(trigger.type)) {
|
|
1643
|
+
throw new Error(
|
|
1644
|
+
`Missing trigger or invalid trigger type. A 'trigger' key must exist, with one of the following types: '${supported.join("', '")}'`,
|
|
1645
|
+
)
|
|
1646
|
+
}
|
|
1647
|
+
if (trigger.type !== 'push') {
|
|
1648
|
+
throw new Error(
|
|
1649
|
+
`sootsim device.sendUserNotification: trigger type '${trigger.type}' is not simulated, only 'push'`,
|
|
1650
|
+
)
|
|
1651
|
+
}
|
|
1652
|
+
const assign = (record: Record<string, unknown>, key: string, value: unknown) => {
|
|
1653
|
+
if (value === undefined) delete record[key]
|
|
1654
|
+
else record[key] = value
|
|
1655
|
+
}
|
|
1656
|
+
const payload = { ...objectOrEmpty(params.payload) }
|
|
1657
|
+
const aps = { ...objectOrEmpty(payload.aps) }
|
|
1658
|
+
const alert = { ...objectOrEmpty(aps.alert) }
|
|
1659
|
+
assign(alert, 'title', params.title)
|
|
1660
|
+
assign(alert, 'subtitle', params.subtitle)
|
|
1661
|
+
assign(alert, 'body', params.body)
|
|
1662
|
+
aps.alert = alert
|
|
1663
|
+
assign(aps, 'badge', params.badge)
|
|
1664
|
+
assign(aps, 'category', params.category)
|
|
1665
|
+
assign(aps, 'content-available', params['content-available'])
|
|
1666
|
+
payload.aps = aps
|
|
1667
|
+
return {
|
|
1668
|
+
payload,
|
|
1669
|
+
actionId:
|
|
1670
|
+
typeof params['action-identifier'] === 'string'
|
|
1671
|
+
? params['action-identifier']
|
|
1672
|
+
: undefined,
|
|
1673
|
+
userText: typeof params['user-text'] === 'string' ? params['user-text'] : undefined,
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
function objectOrEmpty(value: unknown): Record<string, unknown> {
|
|
1678
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
1679
|
+
? { ...value }
|
|
1680
|
+
: {}
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
interface PreparedRemotePush {
|
|
1684
|
+
payload: Record<string, unknown>
|
|
1685
|
+
actionId?: string
|
|
1686
|
+
userText?: string
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
async function postPreparedRemotePush(
|
|
1690
|
+
prepared: PreparedRemotePush,
|
|
1691
|
+
launch: boolean,
|
|
1692
|
+
): Promise<void> {
|
|
1693
|
+
const { payload, actionId, userText } = prepared
|
|
1694
|
+
const page = getPage()
|
|
1695
|
+
await page.evaluate(
|
|
1696
|
+
({ request }) => {
|
|
1697
|
+
const bridges = (
|
|
1698
|
+
window as unknown as {
|
|
1699
|
+
SootSim?: {
|
|
1700
|
+
bridges?: {
|
|
1701
|
+
shellHost?: { postNativeUIRequest?: (request: unknown) => unknown }
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1705
|
+
).SootSim?.bridges
|
|
1706
|
+
// the shell host queues requests until the shell worker connects, so a
|
|
1707
|
+
// post here never silently drops. (mainShell.postNativeUIRequest would
|
|
1708
|
+
// swallow a not-yet-connected shell and report success.)
|
|
1709
|
+
const target = bridges?.shellHost
|
|
1710
|
+
const post = target?.postNativeUIRequest
|
|
1711
|
+
if (typeof post !== 'function') {
|
|
1712
|
+
throw new Error(
|
|
1713
|
+
'sootsim device.sendUserNotification: simulator shell unavailable — call device.launchApp() first',
|
|
1714
|
+
)
|
|
1715
|
+
}
|
|
1716
|
+
post.call(target, request)
|
|
1717
|
+
},
|
|
1718
|
+
{
|
|
1719
|
+
request: {
|
|
1720
|
+
kind: 'notification.remote-push',
|
|
1721
|
+
payload,
|
|
1722
|
+
launch,
|
|
1723
|
+
...(actionId !== undefined ? { actionId } : {}),
|
|
1724
|
+
...(userText !== undefined ? { userText } : {}),
|
|
1725
|
+
},
|
|
1726
|
+
},
|
|
1727
|
+
)
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
async function postRemotePushToSimulator(
|
|
1731
|
+
params: DetoxUserNotificationParams,
|
|
1732
|
+
launch: boolean,
|
|
1733
|
+
): Promise<void> {
|
|
1734
|
+
await postPreparedRemotePush(detoxNotificationToApnsPayload(params), launch)
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1555
1737
|
export const device = {
|
|
1556
1738
|
_currentUrl: '',
|
|
1557
1739
|
_platform: DETOX_PLATFORM as 'ios' | 'android',
|
|
@@ -1561,6 +1743,9 @@ export const device = {
|
|
|
1561
1743
|
newInstance?: boolean
|
|
1562
1744
|
url?: string
|
|
1563
1745
|
launchArgs?: Record<string, any>
|
|
1746
|
+
// launch from a notification, like detox launchApp({ userNotification }):
|
|
1747
|
+
// dispatched during launch, so the app receives its tap response.
|
|
1748
|
+
userNotification?: DetoxUserNotificationParams
|
|
1564
1749
|
// when set, the new BrowserContext records video at this dir. used by
|
|
1565
1750
|
// captureProofMenuStages for the multi-stage animation diff path. must
|
|
1566
1751
|
// be set at launchApp time because playwright recordVideo can't be
|
|
@@ -1601,6 +1786,9 @@ export const device = {
|
|
|
1601
1786
|
)
|
|
1602
1787
|
_suspendedAppId = null
|
|
1603
1788
|
await waitForSootsimTree(page, 10000)
|
|
1789
|
+
if (opts?.userNotification) {
|
|
1790
|
+
await postRemotePushToSimulator(opts.userNotification, true)
|
|
1791
|
+
}
|
|
1604
1792
|
return
|
|
1605
1793
|
}
|
|
1606
1794
|
|
|
@@ -1649,16 +1837,17 @@ export const device = {
|
|
|
1649
1837
|
const request = readBrowserCompositeCaptureRequest(value)
|
|
1650
1838
|
const session = await source.page.context().newCDPSession(source.page)
|
|
1651
1839
|
try {
|
|
1840
|
+
const { clip, originX, originY } = resolveBrowserCompositeCdpClip(
|
|
1841
|
+
request,
|
|
1842
|
+
await session.send('Page.getLayoutMetrics'),
|
|
1843
|
+
)
|
|
1652
1844
|
const result = await session.send('Page.captureScreenshot', {
|
|
1653
1845
|
format: 'png',
|
|
1654
1846
|
fromSurface: true,
|
|
1655
1847
|
captureBeyondViewport: true,
|
|
1656
|
-
clip
|
|
1657
|
-
request,
|
|
1658
|
-
await session.send('Page.getLayoutMetrics'),
|
|
1659
|
-
),
|
|
1848
|
+
clip,
|
|
1660
1849
|
})
|
|
1661
|
-
return 'data:image/png;base64,' + result.data
|
|
1850
|
+
return { dataUrl: 'data:image/png;base64,' + result.data, originX, originY }
|
|
1662
1851
|
} finally {
|
|
1663
1852
|
await session.detach()
|
|
1664
1853
|
}
|
|
@@ -1683,6 +1872,25 @@ export const device = {
|
|
|
1683
1872
|
operation: 'launchApp',
|
|
1684
1873
|
})
|
|
1685
1874
|
|
|
1875
|
+
if (opts?.userNotification) {
|
|
1876
|
+
// detox dispatches the launch notification before the app's js runs.
|
|
1877
|
+
// the shell and tenant channels queue it until they connect, so it is
|
|
1878
|
+
// posted once, as soon as the shell accepts requests.
|
|
1879
|
+
const prepared = detoxNotificationToApnsPayload(opts.userNotification)
|
|
1880
|
+
await pollUntil(
|
|
1881
|
+
() =>
|
|
1882
|
+
postPreparedRemotePush(prepared, true).then(
|
|
1883
|
+
() => true,
|
|
1884
|
+
() => false,
|
|
1885
|
+
),
|
|
1886
|
+
Boolean,
|
|
1887
|
+
{
|
|
1888
|
+
timeoutMs: 60000,
|
|
1889
|
+
label: 'SootSim shell to accept launch notification',
|
|
1890
|
+
},
|
|
1891
|
+
)
|
|
1892
|
+
}
|
|
1893
|
+
|
|
1686
1894
|
await waitForSootsimTree(_page!, 30000)
|
|
1687
1895
|
await waitForSootsimSurfaceMetrics(_page!, 30000)
|
|
1688
1896
|
await waitForSootsimShellReady(_page!, 30000)
|
|
@@ -1728,6 +1936,13 @@ export const device = {
|
|
|
1728
1936
|
await waitForSootsimWorkletsIdle(page, 3000)
|
|
1729
1937
|
},
|
|
1730
1938
|
|
|
1939
|
+
// detox device.sendUserNotification on ios: the notification goes straight
|
|
1940
|
+
// to the app's notification center delegate. an active app gets willPresent;
|
|
1941
|
+
// otherwise the app gets the tap response.
|
|
1942
|
+
async sendUserNotification(params: DetoxUserNotificationParams) {
|
|
1943
|
+
await postRemotePushToSimulator(params, false)
|
|
1944
|
+
},
|
|
1945
|
+
|
|
1731
1946
|
async takeScreenshot(name: string): Promise<string> {
|
|
1732
1947
|
return writeSootsimScreenshot(name)
|
|
1733
1948
|
},
|
|
@@ -2832,8 +3047,20 @@ export const device = {
|
|
|
2832
3047
|
// no-op for sootsim
|
|
2833
3048
|
},
|
|
2834
3049
|
|
|
3050
|
+
// set the simulated device location at the platform level, the same step
|
|
3051
|
+
// native detox's setLocation takes: on iOS it drives the simulator location
|
|
3052
|
+
// (AppleSimUtils/simctl location set) and CLLocationManager delivers the fix
|
|
3053
|
+
// asynchronously. here the platform is the harness browser, so grant page
|
|
3054
|
+
// geolocation and override the context fix; the guest location seam observes
|
|
3055
|
+
// it through navigator.geolocation exactly like the app observes Core
|
|
3056
|
+
// Location. app permission state is untouched, matching native.
|
|
2835
3057
|
async setLocation(lat: number, lon: number) {
|
|
2836
|
-
|
|
3058
|
+
const page = getPage()
|
|
3059
|
+
const context = _context ?? page.context()
|
|
3060
|
+
await context.grantPermissions(['geolocation'], {
|
|
3061
|
+
origin: new URL(page.url()).origin,
|
|
3062
|
+
})
|
|
3063
|
+
await context.setGeolocation({ latitude: lat, longitude: lon })
|
|
2837
3064
|
},
|
|
2838
3065
|
|
|
2839
3066
|
async setStatusBar(config: StatusBarConfig) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.629 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|