peachsim 0.1.630 → 0.1.631
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/app-fonts.ts +23 -4
- package/cli/bridge-flow-runner.ts +35 -28
- package/cli/command-registry.ts +1 -0
- package/cli/commands/compat.ts +11 -60
- package/cli/commands/control.ts +12 -5
- package/cli/commands/detect.ts +289 -26
- package/cli/commands/inspect/core.ts +1 -1
- package/cli/commands/inspect.ts +4 -0
- package/cli/commands/maestro.ts +3 -1
- package/cli/commands/project-report.ts +386 -0
- package/cli/commands/projectReportContract.ts +42 -0
- package/cli/commands/report-issue.ts +38 -54
- package/cli/commands/setup.ts +6 -4
- package/cli/commands/telemetry.ts +8 -3
- package/cli/commands/test.ts +347 -134
- package/cli/main.ts +11 -1
- package/cli/outbound-endpoints.ts +2 -1
- package/cli/privacy.ts +1 -2
- package/cli/runtime-diagnostics.ts +51 -0
- package/cli/telemetry.ts +78 -7
- package/detox/index.ts +3 -8
- 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 +2 -7
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +8 -5
- package/dist-lib/host/bridge-host.cjs +110 -67
- 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 +5 -1
- 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 +11 -1
- package/dist-lib/menu.mjs +11 -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 +1 -1
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- 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 +3 -1
- package/dist-lib/sdk.mjs +2 -1
- package/dist-lib/skills.cjs +589 -268
- 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 +439 -167
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +2 -1
- package/skills/contrast/SKILL.md +1 -0
- package/src/home-paths.ts +11 -9
- package/src/menu.ts +11 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { consoleEntriesEval, type InspectBridge } from './commands/inspect/core'
|
|
2
|
+
import { diagnosticsAllowedForCurrentProcess } from './privacy'
|
|
3
|
+
import { setDiagnosticRuntimeVersion, trackCliDiagnostic } from './telemetry'
|
|
4
|
+
|
|
5
|
+
// reuse the same local console/error stores the CLI already inspects. only
|
|
6
|
+
// message strings cross into the diagnostic queue, never stacks or objects.
|
|
7
|
+
export async function collectRuntimeDiagnostics(bridge: InspectBridge): Promise<void> {
|
|
8
|
+
if (!diagnosticsAllowedForCurrentProcess()) return
|
|
9
|
+
try {
|
|
10
|
+
const result: unknown = await bridge.send(
|
|
11
|
+
{
|
|
12
|
+
type: 'evaluate',
|
|
13
|
+
code: `(() => {
|
|
14
|
+
const messages = []
|
|
15
|
+
const add = (kind, message) => {
|
|
16
|
+
if (typeof message === 'string' && message) messages.push({ kind, message: message.slice(0, 2048) })
|
|
17
|
+
}
|
|
18
|
+
const obs = window.__sootsimObservability
|
|
19
|
+
for (const e of (obs?.reportedErrors?.getSnapshot?.() || []).slice(-20)) add('runtime_error', e.message)
|
|
20
|
+
for (const [kind, entries] of [
|
|
21
|
+
['runtime_error', ${consoleEntriesEval('error', 20)}],
|
|
22
|
+
['runtime_warning', ${consoleEntriesEval('warn', 20)}],
|
|
23
|
+
]) {
|
|
24
|
+
for (const e of entries) {
|
|
25
|
+
const parts = e.args.map(a => typeof a === 'string' ? a : typeof a?.message === 'string' ? a.message : '').filter(Boolean)
|
|
26
|
+
add(kind, parts.join(' '))
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { runtimeVersion: window.__sootsimRuntimeVersion, messages: messages.slice(0, 50) }
|
|
30
|
+
})()`,
|
|
31
|
+
},
|
|
32
|
+
{ timeoutMs: 1000 },
|
|
33
|
+
)
|
|
34
|
+
if (!result || typeof result !== 'object') return
|
|
35
|
+
if ('runtimeVersion' in result && typeof result.runtimeVersion === 'string') {
|
|
36
|
+
setDiagnosticRuntimeVersion(result.runtimeVersion)
|
|
37
|
+
}
|
|
38
|
+
if (!('messages' in result) || !Array.isArray(result.messages)) return
|
|
39
|
+
for (const entry of result.messages.slice(0, 50)) {
|
|
40
|
+
if (!entry || typeof entry !== 'object') continue
|
|
41
|
+
if (
|
|
42
|
+
(entry.kind === 'runtime_error' || entry.kind === 'runtime_warning') &&
|
|
43
|
+
typeof entry.message === 'string'
|
|
44
|
+
) {
|
|
45
|
+
trackCliDiagnostic({ kind: entry.kind, message: entry.message })
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} catch {
|
|
49
|
+
// diagnostics never delay a failed bridge beyond this bounded probe.
|
|
50
|
+
}
|
|
51
|
+
}
|
package/cli/telemetry.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { homedir } from 'node:os'
|
|
2
|
+
import { getCliVersion } from '../src/cli-version'
|
|
3
|
+
import { readActiveRuntime, readOrCreateAnonymousId } from '../src/home-paths'
|
|
4
|
+
import { parseArgs } from './parse-args'
|
|
1
5
|
import { diagnosticsAllowedForCurrentProcess } from './privacy'
|
|
2
6
|
|
|
3
7
|
type PackageIncompatibility = {
|
|
@@ -10,9 +14,15 @@ type PackageIncompatibility = {
|
|
|
10
14
|
type ErrorShape = {
|
|
11
15
|
kind: 'error_shape'
|
|
12
16
|
errorClass: string
|
|
17
|
+
message: string
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
type RuntimeMessage = {
|
|
21
|
+
kind: 'runtime_error' | 'runtime_warning'
|
|
22
|
+
message: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type CliDiagnostic = PackageIncompatibility | ErrorShape | RuntimeMessage
|
|
16
26
|
|
|
17
27
|
type Config = { apiKey: string; host: string }
|
|
18
28
|
|
|
@@ -32,6 +42,46 @@ function bounded(value: string, max: number): string {
|
|
|
32
42
|
return value.trim().slice(0, max)
|
|
33
43
|
}
|
|
34
44
|
|
|
45
|
+
export function sanitizeDiagnosticMessage(value: string): string {
|
|
46
|
+
const firstLine = value.slice(0, 2048).split(/[\r\n\u2028\u2029]/, 1)[0] ?? ''
|
|
47
|
+
// retain package names from dependency paths, never source filenames,
|
|
48
|
+
// URL paths/queries, local paths, stack frames, or serialized app objects.
|
|
49
|
+
return firstLine
|
|
50
|
+
.split(homedir())
|
|
51
|
+
.join('<home>')
|
|
52
|
+
.replace(
|
|
53
|
+
/<package:(?:@[\w.-]+\/)?[\w.-]+>|(?:https?:\/\/|file:\/\/|[A-Za-z]:[\\/]|<home>[\\/]|\/|\.{1,2}[\\/]|\b[\w.-]+[\\/])[^\s"'<>]+/g,
|
|
54
|
+
(location) => {
|
|
55
|
+
if (location.startsWith('<package:')) return location
|
|
56
|
+
const dependency = /(?:^|[\\/])node_modules[\\/]((?:@[^\\/]+[\\/])?[^\\/]+)/.exec(
|
|
57
|
+
location,
|
|
58
|
+
)
|
|
59
|
+
return dependency ? `<package:${dependency[1]?.replace(/\\/g, '/')}>` : '<path>'
|
|
60
|
+
},
|
|
61
|
+
)
|
|
62
|
+
.replace(/\b[\w.-]+\.(?:tsx?|jsx?|swift|m|mm|kt|java)(?::\d+(?::\d+)?)?/g, '<source>')
|
|
63
|
+
.replace(/\{.*$|\[(?:\s*["'{\d]|$).*$/g, '<data>')
|
|
64
|
+
.replace(
|
|
65
|
+
/\b(?:const|let|var)\s+\w+\s*=.*$|\b(?:function|class)\s+\w+.*$|\b(?:import|export)\s+.*$|\breturn\s*[({<].*$/g,
|
|
66
|
+
'<source>',
|
|
67
|
+
)
|
|
68
|
+
.replace(/^\s*at\s+.*$|\bat\s+[\w.$<>]+\s*\([^)]*\)/g, '<stack>')
|
|
69
|
+
.trim()
|
|
70
|
+
.slice(0, 300)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let observedRuntimeVersion: string | null = null
|
|
74
|
+
|
|
75
|
+
function diagnosticVersion(version: string | null): string | null {
|
|
76
|
+
return version && version.length <= 80 && /^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(version)
|
|
77
|
+
? version
|
|
78
|
+
: null
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function setDiagnosticRuntimeVersion(version: string): void {
|
|
82
|
+
observedRuntimeVersion = diagnosticVersion(version)
|
|
83
|
+
}
|
|
84
|
+
|
|
35
85
|
export function buildCliDiagnosticEvent(diagnostic: CliDiagnostic) {
|
|
36
86
|
const properties =
|
|
37
87
|
diagnostic.kind === 'package_incompatibility'
|
|
@@ -42,12 +92,24 @@ export function buildCliDiagnosticEvent(diagnostic: CliDiagnostic) {
|
|
|
42
92
|
? { unsupported_api: bounded(diagnostic.unsupportedApi, 160) }
|
|
43
93
|
: {}),
|
|
44
94
|
}
|
|
45
|
-
:
|
|
95
|
+
: diagnostic.kind === 'error_shape'
|
|
96
|
+
? {
|
|
97
|
+
error_class: bounded(diagnostic.errorClass, 160),
|
|
98
|
+
message: sanitizeDiagnosticMessage(diagnostic.message),
|
|
99
|
+
}
|
|
100
|
+
: { message: sanitizeDiagnosticMessage(diagnostic.message) }
|
|
46
101
|
|
|
47
102
|
return {
|
|
48
103
|
event: diagnostic.kind,
|
|
49
|
-
distinct_id:
|
|
50
|
-
properties
|
|
104
|
+
distinct_id: readOrCreateAnonymousId(),
|
|
105
|
+
properties: {
|
|
106
|
+
cli_version: diagnosticVersion(getCliVersion()),
|
|
107
|
+
runtime_version: observedRuntimeVersion ?? diagnosticVersion(readActiveRuntime()),
|
|
108
|
+
os: process.platform,
|
|
109
|
+
arch: process.arch,
|
|
110
|
+
command: parseArgs(process.argv).command ?? 'open',
|
|
111
|
+
...properties,
|
|
112
|
+
},
|
|
51
113
|
}
|
|
52
114
|
}
|
|
53
115
|
|
|
@@ -55,12 +117,20 @@ const queue: CliDiagnostic[] = []
|
|
|
55
117
|
|
|
56
118
|
export function trackCliDiagnostic(diagnostic: CliDiagnostic): void {
|
|
57
119
|
if (!diagnosticsAllowedForCurrentProcess()) return
|
|
58
|
-
queue.
|
|
120
|
+
if (queue.length >= 50) return
|
|
121
|
+
const entry =
|
|
122
|
+
diagnostic.kind === 'package_incompatibility'
|
|
123
|
+
? diagnostic
|
|
124
|
+
: { ...diagnostic, message: sanitizeDiagnosticMessage(diagnostic.message) }
|
|
125
|
+
if (queue.some((queued) => JSON.stringify(queued) === JSON.stringify(entry))) return
|
|
126
|
+
queue.push(entry)
|
|
59
127
|
}
|
|
60
128
|
|
|
61
129
|
export function trackCliError(error: unknown): void {
|
|
62
130
|
const errorClass = error instanceof Error ? error.constructor.name : typeof error
|
|
63
|
-
|
|
131
|
+
const message =
|
|
132
|
+
error instanceof Error ? error.message : typeof error === 'string' ? error : ''
|
|
133
|
+
trackCliDiagnostic({ kind: 'error_shape', errorClass, message })
|
|
64
134
|
}
|
|
65
135
|
|
|
66
136
|
export async function flushCliTelemetry(): Promise<void> {
|
|
@@ -70,8 +140,9 @@ export async function flushCliTelemetry(): Promise<void> {
|
|
|
70
140
|
queue.length = 0
|
|
71
141
|
return
|
|
72
142
|
}
|
|
73
|
-
const
|
|
143
|
+
const diagnostics = queue.splice(0, queue.length)
|
|
74
144
|
try {
|
|
145
|
+
const batch = diagnostics.map((diagnostic) => buildCliDiagnosticEvent(diagnostic))
|
|
75
146
|
await fetch(`${config.host}/batch/`, {
|
|
76
147
|
method: 'POST',
|
|
77
148
|
headers: { 'content-type': 'application/json' },
|
package/detox/index.ts
CHANGED
|
@@ -605,7 +605,7 @@ export async function waitForSootsimIdle(
|
|
|
605
605
|
// find a node in the sootsim tree matching a matcher descriptor
|
|
606
606
|
async function findNodeByMatcher(matcher: Matcher): Promise<any> {
|
|
607
607
|
const page = getPage()
|
|
608
|
-
if (matcher.index !== undefined) {
|
|
608
|
+
if (matcher.index !== undefined || matcher.type === 'text') {
|
|
609
609
|
return page.evaluate(async (indexedMatcher: Matcher) => {
|
|
610
610
|
const filter =
|
|
611
611
|
indexedMatcher.type === 'id'
|
|
@@ -618,8 +618,8 @@ async function findNodeByMatcher(matcher: Matcher): Promise<any> {
|
|
|
618
618
|
? { hasRole: indexedMatcher.value }
|
|
619
619
|
: { type: indexedMatcher.value }
|
|
620
620
|
const results = await window.__sootsimTest!.queryAll(filter)
|
|
621
|
-
// detox
|
|
622
|
-
//
|
|
621
|
+
// detox by.text matches exact text elements, with or without an index.
|
|
622
|
+
// hasText also matches ancestors and substrings, which are not targets.
|
|
623
623
|
const indexed =
|
|
624
624
|
indexedMatcher.type === 'text'
|
|
625
625
|
? results.filter(
|
|
@@ -634,11 +634,6 @@ async function findNodeByMatcher(matcher: Matcher): Promise<any> {
|
|
|
634
634
|
(id: string) => window.__sootsimTest!.findByTestId(id),
|
|
635
635
|
matcher.value,
|
|
636
636
|
)
|
|
637
|
-
} else if (matcher.type === 'text') {
|
|
638
|
-
return page.evaluate(
|
|
639
|
-
(text: string) => window.__sootsimTest!.findByText(text),
|
|
640
|
-
matcher.value,
|
|
641
|
-
)
|
|
642
637
|
} else if (matcher.type === 'label') {
|
|
643
638
|
return page.evaluate(
|
|
644
639
|
(label: string) => window.__sootsimTest!.findByLabel(label),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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.631 | (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/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.631 | (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;
|
|
@@ -2474,7 +2474,7 @@ async function waitForSootsimIdle(page, maxMs = 3e3, strict = false) {
|
|
|
2474
2474
|
}
|
|
2475
2475
|
async function findNodeByMatcher(matcher) {
|
|
2476
2476
|
const page = getPage();
|
|
2477
|
-
if (matcher.index !== void 0) {
|
|
2477
|
+
if (matcher.index !== void 0 || matcher.type === "text") {
|
|
2478
2478
|
return page.evaluate(async (indexedMatcher) => {
|
|
2479
2479
|
const filter = indexedMatcher.type === "id" ? { hasId: indexedMatcher.value } : indexedMatcher.type === "text" ? { hasText: indexedMatcher.value } : indexedMatcher.type === "label" ? { hasLabel: indexedMatcher.value } : indexedMatcher.type === "role" ? { hasRole: indexedMatcher.value } : { type: indexedMatcher.value };
|
|
2480
2480
|
const results = await window.__sootsimTest.queryAll(filter);
|
|
@@ -2489,11 +2489,6 @@ async function findNodeByMatcher(matcher) {
|
|
|
2489
2489
|
(id) => window.__sootsimTest.findByTestId(id),
|
|
2490
2490
|
matcher.value
|
|
2491
2491
|
);
|
|
2492
|
-
} else if (matcher.type === "text") {
|
|
2493
|
-
return page.evaluate(
|
|
2494
|
-
(text) => window.__sootsimTest.findByText(text),
|
|
2495
|
-
matcher.value
|
|
2496
|
-
);
|
|
2497
2492
|
} else if (matcher.type === "label") {
|
|
2498
2493
|
return page.evaluate(
|
|
2499
2494
|
(label) => window.__sootsimTest.findByLabel(label),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.631 | (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/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.631 | (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;
|
|
@@ -226,7 +226,7 @@ function readPrivacyPreferences() {
|
|
|
226
226
|
return {
|
|
227
227
|
productAnalytics: typeof productAnalytics === "boolean" ? productAnalytics : false,
|
|
228
228
|
crashReports: typeof crashReports === "boolean" ? crashReports : false,
|
|
229
|
-
configured: typeof productAnalytics === "boolean"
|
|
229
|
+
configured: typeof productAnalytics === "boolean"
|
|
230
230
|
};
|
|
231
231
|
}
|
|
232
232
|
function writePrivacyPreferences(preferences) {
|
|
@@ -238,10 +238,13 @@ function writePrivacyPreferences(preferences) {
|
|
|
238
238
|
});
|
|
239
239
|
}
|
|
240
240
|
function readOrCreateAnonymousId() {
|
|
241
|
-
const existing = readSharedConfig().anonymousId;
|
|
242
|
-
if (typeof existing === "string" &&
|
|
241
|
+
const existing = readSharedConfig().settings?.anonymousId;
|
|
242
|
+
if (typeof existing === "string" && /^anon-cli-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(
|
|
243
|
+
existing
|
|
244
|
+
))
|
|
245
|
+
return existing;
|
|
243
246
|
const created = `anon-cli-${(0, import_node_crypto.randomUUID)()}`;
|
|
244
|
-
writeSharedConfig({ anonymousId: created });
|
|
247
|
+
writeSharedConfig({ settings: { anonymousId: created } });
|
|
245
248
|
return created;
|
|
246
249
|
}
|
|
247
250
|
function readDefaultBox() {
|