sootsim 0.1.127 → 0.1.129
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/dist-cli/bin.js +3 -3
- package/dist-cli/chunks/{agent-LUN4QHOL.js → agent-2CLXZJCE.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-APEJDITM.js → agent-wrapper-DMTETGFP.js} +2 -2
- package/dist-cli/chunks/{app-fonts-AKZ7ZDOK.js → app-fonts-25BQNOJE.js} +2 -2
- package/dist-cli/chunks/{assert-MFPNYG7R.js → assert-EYRTQ6ER.js} +2 -2
- package/dist-cli/chunks/auto-bootstrap-NB4SLPAE.js +2 -0
- package/dist-cli/chunks/beta-2LKOVRW5.js +2 -0
- package/dist-cli/chunks/{chunk-GNG6W27T.js → chunk-3QJLWCBD.js} +2 -2
- package/dist-cli/chunks/{chunk-GNYI3JAB.js → chunk-4DT5LVP3.js} +1 -1
- package/dist-cli/chunks/{chunk-LF3KGYGE.js → chunk-4PN5EVFA.js} +2 -2
- package/dist-cli/chunks/{chunk-5UWZ47FH.js → chunk-56IYXKG5.js} +1 -1
- package/dist-cli/chunks/{chunk-ZP3CCVT7.js → chunk-5AR7JQNL.js} +1 -1
- package/dist-cli/chunks/{chunk-4JCC7SR2.js → chunk-5ITNDSDP.js} +2 -2
- package/dist-cli/chunks/{chunk-OKAG4ZKD.js → chunk-5T5OIH3R.js} +2 -2
- package/dist-cli/chunks/{chunk-HNEBMDYQ.js → chunk-5Y4V7DHL.js} +2 -2
- package/dist-cli/chunks/{chunk-ZGXZQPYO.js → chunk-7FDXV4PE.js} +2 -2
- package/dist-cli/chunks/{chunk-5WIVTKYW.js → chunk-7HRQGZ7J.js} +1 -1
- package/dist-cli/chunks/{chunk-7DAYDZ6K.js → chunk-AQSGGVCD.js} +3 -3
- package/dist-cli/chunks/{chunk-NDGBW36P.js → chunk-CHCJWMYW.js} +1 -1
- package/dist-cli/chunks/chunk-DLMQVCTV.js +1 -0
- package/dist-cli/chunks/{chunk-FMCKRPCU.js → chunk-EMTFJESP.js} +1 -1
- package/dist-cli/chunks/{chunk-B56YQYVI.js → chunk-EP3L4A52.js} +1 -1
- package/dist-cli/chunks/{chunk-L2CWZNGS.js → chunk-EP3YPVJY.js} +2 -2
- package/dist-cli/chunks/{chunk-24GWVHOQ.js → chunk-FSYDDBEL.js} +2 -2
- package/dist-cli/chunks/{chunk-SM2JP7BO.js → chunk-GPUIF547.js} +1 -1
- package/dist-cli/chunks/{chunk-36AO2O2R.js → chunk-HHI7444G.js} +57 -17
- package/dist-cli/chunks/{chunk-FGTMXDHE.js → chunk-IAG3ZUAE.js} +2 -2
- package/dist-cli/chunks/{chunk-DQAWYKPD.js → chunk-IFHNUWKU.js} +2 -2
- package/dist-cli/chunks/{chunk-Y4YKDIS6.js → chunk-J4RRVZLG.js} +1 -1
- package/dist-cli/chunks/{chunk-7JJF24H4.js → chunk-KG247GVZ.js} +2 -2
- package/dist-cli/chunks/{chunk-2YJLYAL3.js → chunk-LNU7WB6Z.js} +2 -2
- package/dist-cli/chunks/{chunk-BY4HZZZH.js → chunk-MMR2PBWA.js} +3 -3
- package/dist-cli/chunks/{chunk-MT6WASRO.js → chunk-NHK744OV.js} +1 -1
- package/dist-cli/chunks/{chunk-7QBGAHCM.js → chunk-NW72VNGA.js} +3 -3
- package/dist-cli/chunks/chunk-PAZWCF3C.js +1 -0
- package/dist-cli/chunks/{chunk-52XT4NSH.js → chunk-PEQUGH7X.js} +2 -2
- package/dist-cli/chunks/{chunk-VIXWXLVX.js → chunk-PSMCJQXE.js} +2 -2
- package/dist-cli/chunks/{chunk-DC6VXHIZ.js → chunk-QF6IUOSK.js} +1 -1
- package/dist-cli/chunks/{chunk-CSXM46RX.js → chunk-QJCDLCY7.js} +2 -2
- package/dist-cli/chunks/chunk-QMDFOSCP.js +1 -0
- package/dist-cli/chunks/{chunk-6D4U74IK.js → chunk-RJ6BJSSK.js} +2 -2
- package/dist-cli/chunks/{chunk-FPVP3O53.js → chunk-SY4CNQ7Q.js} +2 -2
- package/dist-cli/chunks/{chunk-IWSLRFIG.js → chunk-T73PO7QP.js} +2 -2
- package/dist-cli/chunks/{chunk-3U2ZPTHG.js → chunk-VXLPV53O.js} +2 -2
- package/dist-cli/chunks/{chunk-TGJWE3CN.js → chunk-WA4F3S3O.js} +2 -2
- package/dist-cli/chunks/{chunk-FG6YYUCT.js → chunk-WAK4QVNM.js} +1 -1
- package/dist-cli/chunks/{chunk-NKJJMS2M.js → chunk-WB3P3VGN.js} +1 -1
- package/dist-cli/chunks/{chunk-5WSDKWL7.js → chunk-X6UBD524.js} +2 -2
- package/dist-cli/chunks/chunk-XLUUJCSP.js +2 -0
- package/dist-cli/chunks/{chunk-3DHE4SHG.js → chunk-Y3YURX2A.js} +1 -1
- package/dist-cli/chunks/{chunk-YVB5QNKO.js → chunk-YKXKGZSJ.js} +1 -1
- package/dist-cli/chunks/cli-version-I3UMBT5O.js +2 -0
- package/dist-cli/chunks/{compat-JELEOJPN.js → compat-EIQNZ4JY.js} +3 -3
- package/dist-cli/chunks/{config-REAVTZCI.js → config-WBBB4KAF.js} +2 -2
- package/dist-cli/chunks/control-EX3VXQ7V.js +2 -0
- package/dist-cli/chunks/{cpu-profile-OGVBRPW7.js → cpu-profile-334GREGX.js} +2 -2
- package/dist-cli/chunks/{daemon-ZUOHTLAC.js → daemon-J65WSF5U.js} +2 -2
- package/dist-cli/chunks/{debug-G533AR4F.js → debug-DB737GNO.js} +3 -3
- package/dist-cli/chunks/{detox-TBWG4AR3.js → detox-GYZJZZB6.js} +2 -2
- package/dist-cli/chunks/{device-PQEM6FOV.js → device-CNPPTXFU.js} +2 -2
- package/dist-cli/chunks/{diagnose-4J75PLPF.js → diagnose-ERZANOHM.js} +2 -2
- package/dist-cli/chunks/drivers-7YH3VVVZ.js +2 -0
- package/dist-cli/chunks/{electron-A2SD7F3N.js → electron-4BT5EQHI.js} +3 -3
- package/dist-cli/chunks/flow-OFD6LF6V.js +2 -0
- package/dist-cli/chunks/help-FRUNM3LL.js +2 -0
- package/dist-cli/chunks/{hints-7PG63DKS.js → hints-VUH6VBJ7.js} +2 -2
- package/dist-cli/chunks/{home-paths-QIX4W62B.js → home-paths-ECU3BYCS.js} +2 -2
- package/dist-cli/chunks/{inspect-T3H6FTHE.js → inspect-KKQJ5KQV.js} +4 -4
- package/dist-cli/chunks/install-LZLX3YZP.js +2 -0
- package/dist-cli/chunks/{install-desktop-AJ7MV6OQ.js → install-desktop-Q6QSPYQS.js} +3 -3
- package/dist-cli/chunks/{keys-ODRTRJX7.js → keys-XMG7L2AL.js} +2 -2
- package/dist-cli/chunks/{launch-5BF5JBYF.js → launch-WH323264.js} +3 -3
- package/dist-cli/chunks/{login-MQ2PDQNI.js → login-3YYWFKB3.js} +4 -4
- package/dist-cli/chunks/{logout-KH374434.js → logout-U77GYAWT.js} +2 -2
- package/dist-cli/chunks/{maestro-J5GGRVH6.js → maestro-NQEF23G7.js} +2 -2
- package/dist-cli/chunks/{preview-CCPCRU6W.js → preview-AOTCHNWB.js} +2 -2
- package/dist-cli/chunks/{profile-MTL2HU6F.js → profile-57CSZI4O.js} +2 -2
- package/dist-cli/chunks/{react-UTYPZQWT.js → react-5JGWHJCG.js} +2 -2
- package/dist-cli/chunks/{record-AFRD6E2J.js → record-JQW5AQDG.js} +2 -2
- package/dist-cli/chunks/runtime-3PEHSFYI.js +2 -0
- package/dist-cli/chunks/{runtime-delivery-PJZCHZOA.js → runtime-delivery-2SY6VTTC.js} +2 -2
- package/dist-cli/chunks/{screenshot-AQHIB3G7.js → screenshot-LNYP7U72.js} +2 -2
- package/dist-cli/chunks/{screenshot-mode-NOOW6RL5.js → screenshot-mode-LMUUUFJY.js} +2 -2
- package/dist-cli/chunks/{screenshots-KVKV2KAZ.js → screenshots-R7T7DOBG.js} +2 -2
- package/dist-cli/chunks/{server-6KNS5Y7Q.js → server-7H67CYP4.js} +12 -12
- package/dist-cli/chunks/setup-repo-QJEHYA7R.js +2 -0
- package/dist-cli/chunks/{skills-62FUBTDY.js → skills-SDSSTD44.js} +2 -2
- package/dist-cli/chunks/{start-XBAW57QL.js → start-MQAJ7GA6.js} +4 -4
- package/dist-cli/chunks/store-ZYMG4VDY.js +2 -0
- package/dist-cli/chunks/telemetry-AXLZH6Y2.js +2 -0
- package/dist-cli/chunks/{test-TSJ5PCO6.js → test-3IWJYEBS.js} +3 -3
- package/dist-cli/chunks/{three-mode-VK2D4NYV.js → three-mode-4F5PHPL2.js} +2 -2
- package/dist-cli/chunks/{timeline-HY7B7HAW.js → timeline-XDSEYH2S.js} +2 -2
- package/dist-cli/chunks/{upgrade-BHZN6X5M.js → upgrade-DH362WFZ.js} +2 -2
- package/dist-cli/chunks/upload-TJUKEH3W.js +2 -0
- package/dist-cli/chunks/{version-YFEE6ZGK.js → version-FRIIGCBS.js} +2 -2
- package/dist-cli/chunks/web-D3OXRMIU.js +2 -0
- package/dist-cli/chunks/{what-happened-VDAD5V3N.js → what-happened-QWW5OLBU.js} +2 -2
- package/dist-cli/chunks/{whoami-ONERUEKE.js → whoami-HU3F2UE5.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.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/cli-constants.cjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +20 -7
- package/dist-lib/host/fetch-proxy-handler.cjs +20 -7
- package/dist-lib/host/fetch-proxy-overrides.cjs +10 -6
- package/dist-lib/host/fetch-proxy-overrides.mjs +10 -6
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/demo-app-registry.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +65 -11
- package/dist-lib/sdk.mjs +64 -11
- package/dist-lib/skills.cjs +27 -13
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/host/fetch-proxy-handler.ts +23 -2
- package/src/host/fetch-proxy-overrides.ts +17 -5
- package/dist-cli/chunks/auto-bootstrap-LBKZGZZF.js +0 -2
- package/dist-cli/chunks/beta-VGO5KHIW.js +0 -2
- package/dist-cli/chunks/chunk-3WXNKHSH.js +0 -1
- package/dist-cli/chunks/chunk-FW5SXCE2.js +0 -2
- package/dist-cli/chunks/chunk-QVIEWXVS.js +0 -1
- package/dist-cli/chunks/chunk-UWEGL2QF.js +0 -1
- package/dist-cli/chunks/cli-version-YVYBW43E.js +0 -2
- package/dist-cli/chunks/control-3AUN3AWZ.js +0 -2
- package/dist-cli/chunks/drivers-PNGLYCLQ.js +0 -2
- package/dist-cli/chunks/flow-THQYC2Y4.js +0 -2
- package/dist-cli/chunks/help-ASEA4FFM.js +0 -2
- package/dist-cli/chunks/install-FXTDM3ZL.js +0 -2
- package/dist-cli/chunks/runtime-SE4VB7MF.js +0 -2
- package/dist-cli/chunks/setup-repo-XXEF6YK3.js +0 -2
- package/dist-cli/chunks/store-FOWKJFEJ.js +0 -2
- package/dist-cli/chunks/telemetry-FDYR6W5E.js +0 -2
- package/dist-cli/chunks/upload-B6UNK5GQ.js +0 -2
- package/dist-cli/chunks/web-KNX5TVQW.js +0 -2
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.129 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// cli/commands/inspect/core.ts
|
|
4
4
|
function resolveMaxMsFlag(args, fallbackMs) {
|
|
@@ -166,6 +166,39 @@ var LAYOUT_GET_NATIVE_EVAL = `(async () => {
|
|
|
166
166
|
const n = typeof raw === 'number' ? raw : (typeof raw === 'string' ? parseFloat(raw) : NaN)
|
|
167
167
|
return Number.isFinite(n) ? Math.round(n) : 0
|
|
168
168
|
}
|
|
169
|
+
// styling extractors \u2014 omit boring defaults so the agent only sees notable
|
|
170
|
+
// styling (low opacity, struck text, clipping, a real border/color).
|
|
171
|
+
const colorStr = (v) => {
|
|
172
|
+
if (v == null) return undefined
|
|
173
|
+
const s = String(v).split(' ').join('')
|
|
174
|
+
return s && s !== 'transparent' && s !== 'rgba(0,0,0,0)' ? s : undefined
|
|
175
|
+
}
|
|
176
|
+
const opacityOf = (style) => {
|
|
177
|
+
const o = style && style.opacity
|
|
178
|
+
const n = typeof o === 'number' ? o : (typeof o === 'string' ? parseFloat(o) : NaN)
|
|
179
|
+
return Number.isFinite(n) && n < 1 ? Math.round(n * 100) / 100 : undefined
|
|
180
|
+
}
|
|
181
|
+
const weightOf = (style) => {
|
|
182
|
+
const w = style && style.fontWeight
|
|
183
|
+
const n = typeof w === 'number' ? w : (typeof w === 'string' ? parseInt(w, 10) : NaN)
|
|
184
|
+
return Number.isFinite(n) && n >= 600 ? n : undefined
|
|
185
|
+
}
|
|
186
|
+
const decoOf = (style) => {
|
|
187
|
+
const d = style && (style.textDecorationLine || style.textDecoration)
|
|
188
|
+
return d && d !== 'none' && d !== 'normal' ? String(d).split(' ')[0] : undefined
|
|
189
|
+
}
|
|
190
|
+
const overflowOf = (style) => (style && style.overflow === 'hidden' ? 'hidden' : undefined)
|
|
191
|
+
const borderWOf = (style) => {
|
|
192
|
+
if (!style) return undefined
|
|
193
|
+
const keys = ['borderWidth','borderTopWidth','borderBottomWidth','borderLeftWidth','borderRightWidth']
|
|
194
|
+
let max = 0
|
|
195
|
+
for (const k of keys) {
|
|
196
|
+
const r = style[k]
|
|
197
|
+
const n = typeof r === 'number' ? r : (typeof r === 'string' ? parseFloat(r) : NaN)
|
|
198
|
+
if (Number.isFinite(n)) max = Math.max(max, n)
|
|
199
|
+
}
|
|
200
|
+
return max > 0 ? Math.round(max) : undefined
|
|
201
|
+
}
|
|
169
202
|
|
|
170
203
|
const isVisible = (n) => {
|
|
171
204
|
const layout = n && n.layout
|
|
@@ -196,6 +229,13 @@ var LAYOUT_GET_NATIVE_EVAL = `(async () => {
|
|
|
196
229
|
borderRadius: radiusOf(style),
|
|
197
230
|
padding: { t: round(pad.top), r: round(pad.right), b: round(pad.bottom), l: round(pad.left) },
|
|
198
231
|
fontSize: fontSizeOf(style),
|
|
232
|
+
color: text ? colorStr(style.color) : undefined,
|
|
233
|
+
bg: colorStr(style.backgroundColor),
|
|
234
|
+
opacity: opacityOf(style),
|
|
235
|
+
fontWeight: weightOf(style),
|
|
236
|
+
textDecoration: decoOf(style),
|
|
237
|
+
overflow: overflowOf(style),
|
|
238
|
+
borderWidth: borderWOf(style),
|
|
199
239
|
}
|
|
200
240
|
})
|
|
201
241
|
})()`;
|
|
@@ -203,7 +243,7 @@ async function inspectGetLayout(bridge) {
|
|
|
203
243
|
const raw = await bridge.send({ type: "evaluate", code: LAYOUT_GET_NATIVE_EVAL });
|
|
204
244
|
return Array.isArray(raw) ? raw : [];
|
|
205
245
|
}
|
|
206
|
-
function formatLayoutElements(elements) {
|
|
246
|
+
function formatLayoutElements(elements, opts) {
|
|
207
247
|
if (elements.length === 0) return " no visible elements found";
|
|
208
248
|
const lines = elements.map((el) => {
|
|
209
249
|
const ident = el.testID ? `#${el.testID}` : el.selector ? el.selector : el.role ? `[${el.role}]` : `<${el.type}>`;
|
|
@@ -215,6 +255,15 @@ function formatLayoutElements(elements) {
|
|
|
215
255
|
parts.push(uniform ? `pad:${p.t}` : `pad:${p.t},${p.r},${p.b},${p.l}`);
|
|
216
256
|
}
|
|
217
257
|
if (el.fontSize > 0) parts.push(`font:${el.fontSize}`);
|
|
258
|
+
if (opts?.styling) {
|
|
259
|
+
if (el.fontWeight) parts.push(`weight:${el.fontWeight}`);
|
|
260
|
+
if (el.color) parts.push(`color:${el.color}`);
|
|
261
|
+
if (el.bg) parts.push(`bg:${el.bg}`);
|
|
262
|
+
if (el.opacity != null) parts.push(`opacity:${el.opacity}`);
|
|
263
|
+
if (el.textDecoration) parts.push(`deco:${el.textDecoration}`);
|
|
264
|
+
if (el.overflow) parts.push(`overflow:${el.overflow}`);
|
|
265
|
+
if (el.borderWidth) parts.push(`border:${el.borderWidth}`);
|
|
266
|
+
}
|
|
218
267
|
if (el.text) {
|
|
219
268
|
const text = el.text.length > 40 ? `${el.text.slice(0, 39)}\u2026` : el.text;
|
|
220
269
|
parts.push(`"${text}"`);
|
|
@@ -599,8 +648,11 @@ var WAIT_READY_PROGRESS_INTERVAL_MS = 2e3;
|
|
|
599
648
|
function readyProbeHasContent(probe) {
|
|
600
649
|
return probe.targets > 0 || probe.nodes >= READY_CONTENT_NODE_FLOOR;
|
|
601
650
|
}
|
|
651
|
+
function readyProbeHasTargetContent(probe) {
|
|
652
|
+
return probe.targets > 0;
|
|
653
|
+
}
|
|
602
654
|
function waitReadyReason(status) {
|
|
603
|
-
return status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
|
|
655
|
+
return status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
|
|
604
656
|
}
|
|
605
657
|
async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
606
658
|
const start = Date.now();
|
|
@@ -642,14 +694,14 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
642
694
|
lastNodes = last.nodes;
|
|
643
695
|
nodeStableSince = now;
|
|
644
696
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
}
|
|
697
|
+
const hasReadySignal = last.flag === true && readyProbeHasContent(last);
|
|
698
|
+
const hasRenderedContentWithoutReadySignal = last.flag !== true && readyProbeHasTargetContent(last);
|
|
699
|
+
if ((hasReadySignal || hasRenderedContentWithoutReadySignal) && last.externalReady !== false && !last.externalError && !last.loadingText) {
|
|
700
|
+
if (now - nodeStableSince >= READY_NODE_STABLE_MS) {
|
|
701
|
+
return {
|
|
702
|
+
...status,
|
|
703
|
+
ready: true
|
|
704
|
+
};
|
|
653
705
|
}
|
|
654
706
|
}
|
|
655
707
|
if (options.onProgress && progressIntervalMs > 0 && now >= nextProgressAt) {
|
|
@@ -1643,6 +1695,7 @@ export {
|
|
|
1643
1695
|
isTapSuccess,
|
|
1644
1696
|
rankInteractive,
|
|
1645
1697
|
readyProbeHasContent,
|
|
1698
|
+
readyProbeHasTargetContent,
|
|
1646
1699
|
resolveFindMode,
|
|
1647
1700
|
resolveMaxMsFlag,
|
|
1648
1701
|
scoreInteractive,
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.129 | (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;
|
|
@@ -3045,13 +3045,13 @@ var init_registry = __esm({
|
|
|
3045
3045
|
},
|
|
3046
3046
|
"expo-dev-client": {
|
|
3047
3047
|
category: "Expo SDK",
|
|
3048
|
-
stubType: "
|
|
3048
|
+
stubType: "native",
|
|
3049
3049
|
versions: [
|
|
3050
3050
|
{
|
|
3051
3051
|
range: ">=1.0.0",
|
|
3052
3052
|
coverage: 1,
|
|
3053
|
-
note: "
|
|
3054
|
-
working: "
|
|
3053
|
+
note: "native-seam: the real package (`export * from 'expo-dev-menu'`) runs from the bundle; the ExpoDevMenu expo native module (openMenu/closeMenu/hideMenu/addDevMenuCallbacks) is installed inline by stubs/expo-modules-core.ts as an honest no-op so registerDevMenuItems and the menu controls boot without crashing. Custom dev-menu entries are not surfaced (a dev-build affordance), matching how the native module is absent in a production build.",
|
|
3054
|
+
working: "openMenu, closeMenu, hideMenu, registerDevMenuItems"
|
|
3055
3055
|
}
|
|
3056
3056
|
]
|
|
3057
3057
|
},
|
|
@@ -5335,9 +5335,10 @@ var init_registry = __esm({
|
|
|
5335
5335
|
versions: [
|
|
5336
5336
|
{
|
|
5337
5337
|
range: ">=0.5.0",
|
|
5338
|
-
coverage:
|
|
5339
|
-
note: "
|
|
5340
|
-
|
|
5338
|
+
coverage: 0.92,
|
|
5339
|
+
note: "native-seam only - upstream Galeria root / Galeria.Image / context run from the bundle; the Expo Galeria view manager opens SootSim's shared image viewer with thumbnail transition, Galeria-specific chrome, swipe, pinch, rotation, double-tap zoom, and dismiss",
|
|
5340
|
+
working: "Galeria root, Galeria.Image, grouped urls, Image.resolveAssetSource mapping, tap-to-open from thumbnail, grouped thumbnail registry for close transitions, fullscreen viewer, adjacent-image swipe, pinch/rotate/double-tap zoom, vertical dismiss, close control, right nav action callback, page indicators, hidePageIndicators, hideBlurOverlay, light/dark theme, onIndexChange, onDismiss, onLongPress",
|
|
5341
|
+
missing: "SF Symbol names render as textual controls instead of exact symbol glyphs; no native blur effect when blur overlay is shown; natural image dimensions are async and fall back to screen aspect until measured"
|
|
5341
5342
|
}
|
|
5342
5343
|
]
|
|
5343
5344
|
},
|
|
@@ -12467,16 +12468,17 @@ function headerOverridesFor(hostname) {
|
|
|
12467
12468
|
const host = hostname.toLowerCase();
|
|
12468
12469
|
for (const override of HOST_HEADER_OVERRIDES) {
|
|
12469
12470
|
if (host === override.hostSuffix || host.endsWith(`.${override.hostSuffix}`)) {
|
|
12470
|
-
return override
|
|
12471
|
+
return override;
|
|
12471
12472
|
}
|
|
12472
12473
|
}
|
|
12473
|
-
return
|
|
12474
|
+
return void 0;
|
|
12474
12475
|
}
|
|
12475
12476
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
12477
|
+
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
12476
12478
|
return {
|
|
12477
12479
|
"accept-encoding": "identity",
|
|
12478
|
-
"user-agent": FETCH_PROXY_BROWSER_USER_AGENT,
|
|
12479
|
-
...
|
|
12480
|
+
...hostOverrides?.suppressBrowserUserAgent ? {} : { "user-agent": FETCH_PROXY_BROWSER_USER_AGENT },
|
|
12481
|
+
...hostOverrides?.headers
|
|
12480
12482
|
};
|
|
12481
12483
|
}
|
|
12482
12484
|
var FETCH_PROXY_BROWSER_USER_AGENT, HOST_HEADER_OVERRIDES;
|
|
@@ -12490,7 +12492,10 @@ var init_fetch_proxy_overrides = __esm({
|
|
|
12490
12492
|
headers: {
|
|
12491
12493
|
origin: "https://app.uniswap.org",
|
|
12492
12494
|
referer: "https://app.uniswap.org/"
|
|
12493
|
-
}
|
|
12495
|
+
},
|
|
12496
|
+
// uniswap's native gateway accepts the app origin, but forcing a desktop
|
|
12497
|
+
// browser ua on native api posts returns a bogus 414/tcp-stack response.
|
|
12498
|
+
suppressBrowserUserAgent: true
|
|
12494
12499
|
}
|
|
12495
12500
|
];
|
|
12496
12501
|
}
|
|
@@ -12516,6 +12521,12 @@ function formatFetchProxyError(targetUrl, err) {
|
|
|
12516
12521
|
}
|
|
12517
12522
|
return message;
|
|
12518
12523
|
}
|
|
12524
|
+
function isTextProxyContentType(contentType) {
|
|
12525
|
+
const value = Array.isArray(contentType) ? contentType[0] : contentType;
|
|
12526
|
+
const normalized = value?.split(";", 1)[0]?.trim().toLowerCase();
|
|
12527
|
+
if (!normalized) return false;
|
|
12528
|
+
return normalized.startsWith("text/") || normalized === "application/json" || normalized.endsWith("+json") || normalized === "application/x-www-form-urlencoded" || normalized === "application/xml" || normalized.endsWith("+xml") || normalized === "application/javascript" || normalized === "application/graphql";
|
|
12529
|
+
}
|
|
12519
12530
|
function buildFetchProxyHeaders(reqHeaders, targetUrl) {
|
|
12520
12531
|
const headers = {};
|
|
12521
12532
|
for (const [key, value] of Object.entries(reqHeaders)) {
|
|
@@ -12581,7 +12592,10 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
12581
12592
|
for await (const chunk of req) {
|
|
12582
12593
|
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
12583
12594
|
}
|
|
12584
|
-
if (chunks.length > 0)
|
|
12595
|
+
if (chunks.length > 0) {
|
|
12596
|
+
const bytes = Buffer.concat(chunks);
|
|
12597
|
+
body = isTextProxyContentType(req.headers["content-type"]) ? bytes.toString("utf8") : bytes;
|
|
12598
|
+
}
|
|
12585
12599
|
}
|
|
12586
12600
|
let upstream;
|
|
12587
12601
|
try {
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.129 | (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;
|
package/package.json
CHANGED
|
@@ -98,6 +98,22 @@ function formatFetchProxyError(targetUrl: string, err: unknown): string {
|
|
|
98
98
|
return message
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
function isTextProxyContentType(contentType: string | string[] | undefined): boolean {
|
|
102
|
+
const value = Array.isArray(contentType) ? contentType[0] : contentType
|
|
103
|
+
const normalized = value?.split(';', 1)[0]?.trim().toLowerCase()
|
|
104
|
+
if (!normalized) return false
|
|
105
|
+
return (
|
|
106
|
+
normalized.startsWith('text/') ||
|
|
107
|
+
normalized === 'application/json' ||
|
|
108
|
+
normalized.endsWith('+json') ||
|
|
109
|
+
normalized === 'application/x-www-form-urlencoded' ||
|
|
110
|
+
normalized === 'application/xml' ||
|
|
111
|
+
normalized.endsWith('+xml') ||
|
|
112
|
+
normalized === 'application/javascript' ||
|
|
113
|
+
normalized === 'application/graphql'
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
|
|
101
117
|
export function buildFetchProxyHeaders(
|
|
102
118
|
reqHeaders: Record<string, string | string[] | undefined>,
|
|
103
119
|
targetUrl?: URL,
|
|
@@ -176,13 +192,18 @@ export async function handleFetchProxyRequest(
|
|
|
176
192
|
|
|
177
193
|
const headers = buildFetchProxyHeaders(req.headers, upstreamUrl)
|
|
178
194
|
|
|
179
|
-
let body:
|
|
195
|
+
let body: BodyInit | undefined
|
|
180
196
|
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
181
197
|
const chunks: Buffer[] = []
|
|
182
198
|
for await (const chunk of req) {
|
|
183
199
|
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))
|
|
184
200
|
}
|
|
185
|
-
if (chunks.length > 0)
|
|
201
|
+
if (chunks.length > 0) {
|
|
202
|
+
const bytes = Buffer.concat(chunks)
|
|
203
|
+
body = isTextProxyContentType(req.headers['content-type'])
|
|
204
|
+
? bytes.toString('utf8')
|
|
205
|
+
: bytes
|
|
206
|
+
}
|
|
186
207
|
}
|
|
187
208
|
|
|
188
209
|
let upstream: Response
|
|
@@ -10,6 +10,7 @@ export const FETCH_PROXY_BROWSER_USER_AGENT =
|
|
|
10
10
|
const HOST_HEADER_OVERRIDES: Array<{
|
|
11
11
|
hostSuffix: string
|
|
12
12
|
headers: Record<string, string>
|
|
13
|
+
suppressBrowserUserAgent?: boolean
|
|
13
14
|
}> = [
|
|
14
15
|
{
|
|
15
16
|
hostSuffix: 'uniswap.org',
|
|
@@ -17,23 +18,34 @@ const HOST_HEADER_OVERRIDES: Array<{
|
|
|
17
18
|
origin: 'https://app.uniswap.org',
|
|
18
19
|
referer: 'https://app.uniswap.org/',
|
|
19
20
|
},
|
|
21
|
+
// uniswap's native gateway accepts the app origin, but forcing a desktop
|
|
22
|
+
// browser ua on native api posts returns a bogus 414/tcp-stack response.
|
|
23
|
+
suppressBrowserUserAgent: true,
|
|
20
24
|
},
|
|
21
25
|
]
|
|
22
26
|
|
|
23
|
-
function headerOverridesFor(hostname: string):
|
|
27
|
+
function headerOverridesFor(hostname: string):
|
|
28
|
+
| {
|
|
29
|
+
headers: Record<string, string>
|
|
30
|
+
suppressBrowserUserAgent?: boolean
|
|
31
|
+
}
|
|
32
|
+
| undefined {
|
|
24
33
|
const host = hostname.toLowerCase()
|
|
25
34
|
for (const override of HOST_HEADER_OVERRIDES) {
|
|
26
35
|
if (host === override.hostSuffix || host.endsWith(`.${override.hostSuffix}`)) {
|
|
27
|
-
return override
|
|
36
|
+
return override
|
|
28
37
|
}
|
|
29
38
|
}
|
|
30
|
-
return
|
|
39
|
+
return undefined
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
export function getFetchProxyTargetHeaders(targetUrl: URL): Record<string, string> {
|
|
43
|
+
const hostOverrides = headerOverridesFor(targetUrl.hostname)
|
|
34
44
|
return {
|
|
35
45
|
'accept-encoding': 'identity',
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
...(hostOverrides?.suppressBrowserUserAgent
|
|
47
|
+
? {}
|
|
48
|
+
: { 'user-agent': FETCH_PROXY_BROWSER_USER_AGENT }),
|
|
49
|
+
...hostOverrides?.headers,
|
|
38
50
|
}
|
|
39
51
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d}from"./chunk-BY4HZZZH.js";import"./chunk-52XT4NSH.js";import"./chunk-ZP3CCVT7.js";import"./chunk-5WIVTKYW.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k,o as l,p as m,q as n,r as o,s as p,t as q,u as r,v as s}from"./chunk-7JJF24H4.js";import"./chunk-FGTMXDHE.js";import"./chunk-6D4U74IK.js";import"./chunk-36AO2O2R.js";import"./chunk-YVB5QNKO.js";import"./chunk-52XT4NSH.js";import"./chunk-VIXWXLVX.js";import"./chunk-3DHE4SHG.js";import"./chunk-3WXNKHSH.js";import"./chunk-OKAG4ZKD.js";import"./chunk-DC6VXHIZ.js";import"./chunk-ZP3CCVT7.js";import"./chunk-FW5SXCE2.js";import"./chunk-5WIVTKYW.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{e as buildOpenUrl,d as buildShellUrl,q as closeSimsBulk,r as planBulkCloseTargets,i as playwrightHostPidForSim,g as printConnectedSims,b as resolveBundleTarget,c as resolveDefaultShellBaseUrl,a as resolveDriverConnectWaitOptions,p as runClaimCommand,s as runCloseCommand,o as runFocusCommand,l as runListCommand,m as runOpenCommand,n as runUseCommand,j as signalDriverLaunchConnected,f as summarizeSimUrl,k as terminatePlaywrightHostsForSims,h as waitForSimMatch};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import"./chunk-UWEGL2QF.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-VIXWXLVX.js";import"./chunk-3DHE4SHG.js";import"./chunk-3WXNKHSH.js";import"./chunk-OKAG4ZKD.js";import"./chunk-DC6VXHIZ.js";import"./chunk-ZP3CCVT7.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{e as ALL_DRIVERS,i as buildDriverListRows,a as chromiumDriver,b as electronDriver,f as getAllDrivers,g as getDriver,c as playwrightDriver,h as resolveDriver,d as systemDriver};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a as c,b as d,c as e,d as f}from"./chunk-7DAYDZ6K.js";import"./chunk-3U2ZPTHG.js";import"./chunk-QVIEWXVS.js";import"./chunk-ZGXZQPYO.js";import"./chunk-L2CWZNGS.js";import"./chunk-TGJWE3CN.js";import{d as a,e as b}from"./chunk-DQAWYKPD.js";import"./chunk-7JJF24H4.js";import"./chunk-FGTMXDHE.js";import"./chunk-6D4U74IK.js";import"./chunk-36AO2O2R.js";import"./chunk-YVB5QNKO.js";import"./chunk-52XT4NSH.js";import"./chunk-VIXWXLVX.js";import"./chunk-3DHE4SHG.js";import"./chunk-3WXNKHSH.js";import"./chunk-OKAG4ZKD.js";import"./chunk-DC6VXHIZ.js";import"./chunk-ZP3CCVT7.js";import"./chunk-HNEBMDYQ.js";import"./chunk-GNG6W27T.js";import"./chunk-LF3KGYGE.js";import"./chunk-FW5SXCE2.js";import"./chunk-5WIVTKYW.js";import"./chunk-2YJLYAL3.js";import"./chunk-FG6YYUCT.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{c as discoverSootsimUrl,e as hoistLeadingSimFlag,a as parseFlowFile,f as runFlow,d as runFlowPlayback,b as validateFlowFile};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-5WSDKWL7.js";import"./chunk-LF3KGYGE.js";import"./chunk-NDGBW36P.js";import"./chunk-FW5SXCE2.js";import"./chunk-5WIVTKYW.js";import"./chunk-MT6WASRO.js";import"./chunk-5UWZ47FH.js";import"./chunk-FG6YYUCT.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a as o}from"./chunk-FPVP3O53.js";import"./chunk-GNYI3JAB.js";import"./chunk-BY4HZZZH.js";import"./chunk-52XT4NSH.js";import"./chunk-ZP3CCVT7.js";import"./chunk-HNEBMDYQ.js";import"./chunk-GNG6W27T.js";import"./chunk-5WIVTKYW.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";async function t(n){console.error(" note: `sootsim install` is now `sootsim setup-repo`. forwarding\u2026\n"),await o(n)}export{t as runInstall};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b}from"./chunk-7QBGAHCM.js";import"./chunk-52XT4NSH.js";import"./chunk-ZP3CCVT7.js";import"./chunk-5WIVTKYW.js";import"./chunk-IWSLRFIG.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{b as formatReleaseEntry,a as runRuntime};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-FPVP3O53.js";import"./chunk-GNYI3JAB.js";import"./chunk-BY4HZZZH.js";import"./chunk-52XT4NSH.js";import"./chunk-ZP3CCVT7.js";import"./chunk-HNEBMDYQ.js";import"./chunk-GNG6W27T.js";import"./chunk-5WIVTKYW.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{a as runSetupRepo};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.127 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-L2CWZNGS.js";import"./chunk-TGJWE3CN.js";import"./chunk-YVB5QNKO.js";import"./chunk-52XT4NSH.js";import"./chunk-3WXNKHSH.js";import"./chunk-DC6VXHIZ.js";import"./chunk-ZP3CCVT7.js";import"./chunk-HNEBMDYQ.js";import"./chunk-GNG6W27T.js";import"./chunk-5WIVTKYW.js";import"./chunk-Y4YKDIS6.js";import"./chunk-B56YQYVI.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
|