sootsim 0.1.234 → 0.1.235
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 +4 -4
- package/dist-cli/chunks/{agent-RKA6QTYE.js → agent-VY6XJQDL.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-OB6OUCSF.js → agent-wrapper-NSBHSS3Y.js} +2 -2
- package/dist-cli/chunks/{app-fonts-6PFARL6B.js → app-fonts-BRTQV44M.js} +2 -2
- package/dist-cli/chunks/{assert-Q6BV2NEM.js → assert-WOOZQZ67.js} +2 -2
- package/dist-cli/chunks/{auth-HJ3NXFJP.js → auth-7J7WDEFG.js} +2 -2
- package/dist-cli/chunks/beta-E3A3FN5N.js +2 -0
- package/dist-cli/chunks/{camera-LWGYRGBB.js → camera-KWI4FUYT.js} +2 -2
- package/dist-cli/chunks/{chunk-DVPVSP7S.js → chunk-2NTPCZNI.js} +2 -2
- package/dist-cli/chunks/{chunk-B77AQNOH.js → chunk-4IGHCZBZ.js} +1 -1
- package/dist-cli/chunks/{chunk-37CANPD2.js → chunk-4WKY22WY.js} +3 -3
- package/dist-cli/chunks/{chunk-2YOWFGX3.js → chunk-6EZX7YXZ.js} +1 -1
- package/dist-cli/chunks/{chunk-FSSTNYFL.js → chunk-6XLP5EB5.js} +2 -2
- package/dist-cli/chunks/{chunk-UQEDU53Q.js → chunk-7DV3AEBI.js} +2 -2
- package/dist-cli/chunks/chunk-ANOU6P4R.js +1 -0
- package/dist-cli/chunks/{chunk-DAWIWEWR.js → chunk-APBFMXMM.js} +1 -1
- package/dist-cli/chunks/{chunk-HTTSF6YF.js → chunk-AQ6HSRGZ.js} +2 -2
- package/dist-cli/chunks/{chunk-AASXS3LK.js → chunk-BZPJSFSP.js} +2 -2
- package/dist-cli/chunks/{chunk-5JX4BCGL.js → chunk-CFIAG2RO.js} +1 -1
- package/dist-cli/chunks/{chunk-IHRBDBGS.js → chunk-EB52ZQ3B.js} +2 -2
- package/dist-cli/chunks/{chunk-LW25UTSS.js → chunk-EOUBCSIZ.js} +2 -2
- package/dist-cli/chunks/{chunk-6KZBSG52.js → chunk-G4VPOKCZ.js} +2 -2
- package/dist-cli/chunks/{chunk-IB6NUH34.js → chunk-GD6LJ2CR.js} +2 -2
- package/dist-cli/chunks/{chunk-KIYCMEMO.js → chunk-HVKLAOZM.js} +3 -3
- package/dist-cli/chunks/{chunk-KIALD4JX.js → chunk-ITU3SFQX.js} +2 -2
- package/dist-cli/chunks/{chunk-7G4VSJQ4.js → chunk-IZGWQAPR.js} +1 -1
- package/dist-cli/chunks/{chunk-TGPXK5U2.js → chunk-JPXFE6M4.js} +2 -2
- package/dist-cli/chunks/{chunk-2QOLVYFF.js → chunk-K3Q4FEMG.js} +1 -1
- package/dist-cli/chunks/{chunk-57FLKZOS.js → chunk-KEZZHUOP.js} +3 -3
- package/dist-cli/chunks/{chunk-4NTBHQZU.js → chunk-MSXVV6JQ.js} +3 -3
- package/dist-cli/chunks/{chunk-LJLYNHJF.js → chunk-OUZCXC3F.js} +1 -1
- package/dist-cli/chunks/{chunk-KQCFBS3K.js → chunk-P3IXWUXV.js} +2 -2
- package/dist-cli/chunks/{chunk-A3R3A55R.js → chunk-PULCBYY6.js} +2 -2
- package/dist-cli/chunks/chunk-R7RUIOMK.js +2 -0
- package/dist-cli/chunks/{chunk-5AVOWKYR.js → chunk-RJ5ZTFTF.js} +1 -1
- package/dist-cli/chunks/{chunk-TD3PSMQU.js → chunk-TA6OIGXV.js} +1 -1
- package/dist-cli/chunks/{chunk-DFAMEHIJ.js → chunk-TEEK6DLL.js} +2 -2
- package/dist-cli/chunks/{chunk-WPS3EFNK.js → chunk-TR25YKVI.js} +1 -1
- package/dist-cli/chunks/{chunk-KIYNMK6P.js → chunk-TZJ6V6E3.js} +2 -2
- package/dist-cli/chunks/{chunk-VWAOND2T.js → chunk-UMRMWSAM.js} +1 -1
- package/dist-cli/chunks/{chunk-36HLSYS2.js → chunk-VZQLOXV4.js} +2 -2
- package/dist-cli/chunks/{chunk-YV35LVCO.js → chunk-WQ5DQ5X7.js} +2 -2
- package/dist-cli/chunks/{chunk-JXPGKN3F.js → chunk-XUJDCVTH.js} +6 -6
- package/dist-cli/chunks/{chunk-6NUCPZGB.js → chunk-XWRHHNOK.js} +1 -1
- package/dist-cli/chunks/{chunk-4YPQAOC6.js → chunk-YAX25DGN.js} +1 -1
- package/dist-cli/chunks/{chunk-54U7A36G.js → chunk-YLSEQMQK.js} +1 -1
- package/dist-cli/chunks/{chunk-VVVCJPSQ.js → chunk-YQDB5ODC.js} +1 -1
- package/dist-cli/chunks/{chunk-XK5YL6SF.js → chunk-YXP22OFA.js} +2 -2
- package/dist-cli/chunks/{chunk-PSDDQWFO.js → chunk-YYW4JGGL.js} +1 -1
- package/dist-cli/chunks/chunk-Z3BORSD4.js +1 -0
- package/dist-cli/chunks/{chunk-MS33P5CV.js → chunk-Z7TEEXRM.js} +1 -1
- package/dist-cli/chunks/{chunk-5FDIH76R.js → chunk-ZVVEXBEJ.js} +2 -2
- package/dist-cli/chunks/cli-version-YYFAD5AQ.js +2 -0
- package/dist-cli/chunks/{compat-NN643MYB.js → compat-7NLJUPG6.js} +3 -3
- package/dist-cli/chunks/{config-GVVXK4LX.js → config-LODVAH4H.js} +2 -2
- package/dist-cli/chunks/{control-TL666XUK.js → control-H4RVHEDW.js} +2 -2
- package/dist-cli/chunks/daemon-NQ5RDWC4.js +2 -0
- package/dist-cli/chunks/{debug-4D7UPKL6.js → debug-PM3WQ2Z5.js} +3 -3
- package/dist-cli/chunks/{desktop-UK3TXNWM.js → desktop-MF4ZQA2W.js} +3 -3
- package/dist-cli/chunks/{detox-GGCJIYAO.js → detox-IFKFVHIT.js} +2 -2
- package/dist-cli/chunks/{device-27GVWZRM.js → device-6EQ2R5CO.js} +2 -2
- package/dist-cli/chunks/{diagnose-MRGZ2QTM.js → diagnose-AKWL66RQ.js} +2 -2
- package/dist-cli/chunks/drivers-5NKXLGOH.js +2 -0
- package/dist-cli/chunks/{film-SFZGOMH5.js → film-NIR3F3EQ.js} +3 -3
- package/dist-cli/chunks/flow-DYOXMN3T.js +2 -0
- package/dist-cli/chunks/help-ZEEVDVCV.js +2 -0
- package/dist-cli/chunks/{hidden-runtime-alias-EJ5NRH2V.js → hidden-runtime-alias-QT52GUMS.js} +2 -2
- package/dist-cli/chunks/{home-paths-ICQCVYFE.js → home-paths-TZFWKT7O.js} +2 -2
- package/dist-cli/chunks/inspect-KSPWBUAB.js +2 -0
- package/dist-cli/chunks/install-desktop-4GT67C5I.js +2 -0
- package/dist-cli/chunks/{login-YJFCUM4C.js → login-553MMERY.js} +4 -4
- package/dist-cli/chunks/{logout-T4MKUGMT.js → logout-UX4PNMDO.js} +2 -2
- package/dist-cli/chunks/{maestro-MJH5BSJG.js → maestro-XVWZ37YC.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-5ORUBHVA.js → maestro-generate-O3J2XRQD.js} +3 -3
- package/dist-cli/chunks/{mode-D7MC6TTG.js → mode-S7PO7F4H.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-BVQUDY4V.js +2 -0
- package/dist-cli/chunks/{perf-IRUFRNO5.js → perf-SQD72526.js} +2 -2
- package/dist-cli/chunks/{record-GTZOEPUV.js → record-TFIQZHAO.js} +3 -3
- package/dist-cli/chunks/runtime-XCEDZMMB.js +2 -0
- package/dist-cli/chunks/{screenshot-command-72DH5GXF.js → screenshot-command-TCUSGETC.js} +3 -3
- package/dist-cli/chunks/{screenshots-capture-6QQ4NPZ6.js → screenshots-capture-TUGNPCWG.js} +2 -2
- package/dist-cli/chunks/{serve-C2GAQBTN.js → serve-JAKYFLDC.js} +6 -6
- package/dist-cli/chunks/{setup-TOAATCCA.js → setup-WBQ5PYMM.js} +3 -3
- package/dist-cli/chunks/{skills-PPGCRJYB.js → skills-U5NQ6Y2O.js} +2 -2
- package/dist-cli/chunks/{storage-LI55AAJB.js → storage-X6CEYBPL.js} +2 -2
- package/dist-cli/chunks/store-Z2X4OFEM.js +2 -0
- package/dist-cli/chunks/telemetry-NWD6GLRC.js +2 -0
- package/dist-cli/chunks/{timeline-VTU7U2F7.js → timeline-RUVDOAYG.js} +2 -2
- package/dist-cli/chunks/{upgrade-VQSDSFTG.js → upgrade-X52FGN22.js} +2 -2
- package/dist-cli/chunks/upload-ZUHYO36E.js +2 -0
- package/dist-cli/chunks/{version-V37CLU3B.js → version-SMQW5VNI.js} +2 -2
- package/dist-cli/chunks/{web-PPVH2K63.js → web-2NTSSKPW.js} +2 -2
- package/dist-cli/chunks/{what-happened-3ZN3FV34.js → what-happened-3AXYUGTU.js} +2 -2
- 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 +15 -3
- 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 +12 -5
- 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/websocket-proxy.cjs +12 -5
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +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/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 +30 -10
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/bridge-constants.ts +14 -0
- package/src/host/websocket-proxy.ts +11 -2
- package/dist-cli/chunks/beta-7LVCC4DC.js +0 -2
- package/dist-cli/chunks/chunk-2RP6TUZ3.js +0 -1
- package/dist-cli/chunks/chunk-7ST3HVVO.js +0 -2
- package/dist-cli/chunks/chunk-TAPKEEG2.js +0 -1
- package/dist-cli/chunks/cli-version-7DTLL57G.js +0 -2
- package/dist-cli/chunks/daemon-MTBKLQAM.js +0 -2
- package/dist-cli/chunks/drivers-BHAS62HS.js +0 -2
- package/dist-cli/chunks/flow-X3NSSQNP.js +0 -2
- package/dist-cli/chunks/help-7WJO45XU.js +0 -2
- package/dist-cli/chunks/inspect-FRSSCWP2.js +0 -2
- package/dist-cli/chunks/install-desktop-67O3RXXA.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-KV3FG6HR.js +0 -2
- package/dist-cli/chunks/runtime-RXHJI4Y4.js +0 -2
- package/dist-cli/chunks/store-L4ASCJJM.js +0 -2
- package/dist-cli/chunks/telemetry-BVONU4AY.js +0 -2
- package/dist-cli/chunks/upload-REVW5JI2.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.235 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-XWRHHNOK.js";import{g as A,i as _}from"./chunk-XUJDCVTH.js";import"./chunk-R7RUIOMK.js";import{c as k}from"./chunk-YLSEQMQK.js";import"./chunk-CFIAG2RO.js";import"./chunk-K3Q4FEMG.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
|
|
3
3
|
sootsim what-happened \u2014 show recent events from the semantic timeline
|
|
4
4
|
|
|
5
5
|
usage:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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;
|
|
@@ -27,7 +27,8 @@ __export(bridge_constants_exports, {
|
|
|
27
27
|
SOOTSIM_BRIDGE_SIM_CLOSE_REASON: () => SOOTSIM_BRIDGE_SIM_CLOSE_REASON,
|
|
28
28
|
resolveSootsimBridgePort: () => resolveSootsimBridgePort,
|
|
29
29
|
resolveSootsimBridgePortForHttpPort: () => resolveSootsimBridgePortForHttpPort,
|
|
30
|
-
resolveSootsimBridgePortForRuntimeLocation: () => resolveSootsimBridgePortForRuntimeLocation
|
|
30
|
+
resolveSootsimBridgePortForRuntimeLocation: () => resolveSootsimBridgePortForRuntimeLocation,
|
|
31
|
+
resolveSootsimBridgeWebSocketUrl: () => resolveSootsimBridgeWebSocketUrl
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(bridge_constants_exports);
|
|
33
34
|
var DEFAULT_SOOTSIM_BRIDGE_PORT = 7668;
|
|
@@ -104,6 +105,16 @@ function resolveSootsimBridgePortForRuntimeLocation(input = {}) {
|
|
|
104
105
|
if (baseHttpPort === null) return DEFAULT_SOOTSIM_BRIDGE_PORT;
|
|
105
106
|
return resolveSootsimBridgePortForHttpPort({ httpPort, baseHttpPort });
|
|
106
107
|
}
|
|
108
|
+
function resolveSootsimBridgeWebSocketUrl(input) {
|
|
109
|
+
const pageUrl = parseHrefUrl(input.href);
|
|
110
|
+
if (!pageUrl || pageUrl.protocol !== "http:" && pageUrl.protocol !== "https:") {
|
|
111
|
+
throw new Error(`invalid SootSim browser bridge page URL: ${input.href}`);
|
|
112
|
+
}
|
|
113
|
+
const proxyUrl = new URL("/__websocket-proxy", pageUrl);
|
|
114
|
+
proxyUrl.protocol = pageUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
115
|
+
proxyUrl.searchParams.set("url", `ws://localhost:${input.bridgePort}`);
|
|
116
|
+
return proxyUrl.href;
|
|
117
|
+
}
|
|
107
118
|
var SOOTSIM_BRIDGE_SIM_CLOSE_CODE = 4001;
|
|
108
119
|
var SOOTSIM_BRIDGE_SIM_CLOSE_REASON = "sootsim close";
|
|
109
120
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -113,5 +124,6 @@ var SOOTSIM_BRIDGE_SIM_CLOSE_REASON = "sootsim close";
|
|
|
113
124
|
SOOTSIM_BRIDGE_SIM_CLOSE_REASON,
|
|
114
125
|
resolveSootsimBridgePort,
|
|
115
126
|
resolveSootsimBridgePortForHttpPort,
|
|
116
|
-
resolveSootsimBridgePortForRuntimeLocation
|
|
127
|
+
resolveSootsimBridgePortForRuntimeLocation,
|
|
128
|
+
resolveSootsimBridgeWebSocketUrl
|
|
117
129
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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;
|
|
@@ -2862,11 +2862,18 @@ function connectProxyPair(clientWs, upstream) {
|
|
|
2862
2862
|
clientWs.on("error", () => safeClose(upstream, 1011, "proxy client error"));
|
|
2863
2863
|
upstream.on("error", () => safeClose(clientWs, 1011, "upstream websocket error"));
|
|
2864
2864
|
}
|
|
2865
|
-
function createUpstreamWebSocket(targetUrl, protocols, headers) {
|
|
2865
|
+
function createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin) {
|
|
2866
2866
|
const upstreamHeaders = { ...headers };
|
|
2867
|
-
|
|
2867
|
+
const originKeys = Object.keys(upstreamHeaders).filter(
|
|
2868
|
+
(key) => key.toLowerCase() === "origin"
|
|
2869
|
+
);
|
|
2870
|
+
if (forwardOrigin && originKeys.length === 0) {
|
|
2868
2871
|
upstreamHeaders.origin = getDefaultWebSocketOrigin(targetUrl);
|
|
2872
|
+
} else if (!forwardOrigin) {
|
|
2873
|
+
for (const key of originKeys) delete upstreamHeaders[key];
|
|
2869
2874
|
}
|
|
2875
|
+
if (Object.keys(upstreamHeaders).length === 0)
|
|
2876
|
+
return new import_ws.WebSocket(targetUrl.href, protocols);
|
|
2870
2877
|
return new import_ws.WebSocket(targetUrl.href, protocols, {
|
|
2871
2878
|
headers: upstreamHeaders
|
|
2872
2879
|
});
|
|
@@ -2879,7 +2886,7 @@ function isWebSocketProxyRequestUrl(rawUrl) {
|
|
|
2879
2886
|
return false;
|
|
2880
2887
|
}
|
|
2881
2888
|
}
|
|
2882
|
-
function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
2889
|
+
function handleWebSocketProxyUpgrade(req, socket, head, forwardOrigin = true) {
|
|
2883
2890
|
if (!isWebSocketProxyRequestUrl(req.url)) return false;
|
|
2884
2891
|
if (!isSameOriginUpgrade(req)) {
|
|
2885
2892
|
rejectUpgrade(socket, 403, "forbidden websocket proxy origin");
|
|
@@ -2905,7 +2912,7 @@ function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
|
2905
2912
|
return true;
|
|
2906
2913
|
}
|
|
2907
2914
|
const protocols = getRequestedProtocols(req);
|
|
2908
|
-
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers);
|
|
2915
|
+
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin);
|
|
2909
2916
|
let completed = false;
|
|
2910
2917
|
socket.once("close", () => {
|
|
2911
2918
|
if (!completed) upstream.terminate();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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;
|
|
@@ -124,11 +124,18 @@ function connectProxyPair(clientWs, upstream) {
|
|
|
124
124
|
clientWs.on("error", () => safeClose(upstream, 1011, "proxy client error"));
|
|
125
125
|
upstream.on("error", () => safeClose(clientWs, 1011, "upstream websocket error"));
|
|
126
126
|
}
|
|
127
|
-
function createUpstreamWebSocket(targetUrl, protocols, headers) {
|
|
127
|
+
function createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin) {
|
|
128
128
|
const upstreamHeaders = { ...headers };
|
|
129
|
-
|
|
129
|
+
const originKeys = Object.keys(upstreamHeaders).filter(
|
|
130
|
+
(key) => key.toLowerCase() === "origin"
|
|
131
|
+
);
|
|
132
|
+
if (forwardOrigin && originKeys.length === 0) {
|
|
130
133
|
upstreamHeaders.origin = getDefaultWebSocketOrigin(targetUrl);
|
|
134
|
+
} else if (!forwardOrigin) {
|
|
135
|
+
for (const key of originKeys) delete upstreamHeaders[key];
|
|
131
136
|
}
|
|
137
|
+
if (Object.keys(upstreamHeaders).length === 0)
|
|
138
|
+
return new import_ws.WebSocket(targetUrl.href, protocols);
|
|
132
139
|
return new import_ws.WebSocket(targetUrl.href, protocols, {
|
|
133
140
|
headers: upstreamHeaders
|
|
134
141
|
});
|
|
@@ -141,7 +148,7 @@ function isWebSocketProxyRequestUrl(rawUrl) {
|
|
|
141
148
|
return false;
|
|
142
149
|
}
|
|
143
150
|
}
|
|
144
|
-
function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
151
|
+
function handleWebSocketProxyUpgrade(req, socket, head, forwardOrigin = true) {
|
|
145
152
|
if (!isWebSocketProxyRequestUrl(req.url)) return false;
|
|
146
153
|
if (!isSameOriginUpgrade(req)) {
|
|
147
154
|
rejectUpgrade(socket, 403, "forbidden websocket proxy origin");
|
|
@@ -167,7 +174,7 @@ function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
|
167
174
|
return true;
|
|
168
175
|
}
|
|
169
176
|
const protocols = getRequestedProtocols(req);
|
|
170
|
-
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers);
|
|
177
|
+
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin);
|
|
171
178
|
let completed = false;
|
|
172
179
|
socket.once("close", () => {
|
|
173
180
|
if (!completed) upstream.terminate();
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/menu.mjs
CHANGED
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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/sdk.mjs
CHANGED
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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;
|
|
@@ -7490,7 +7490,7 @@ var init_registry = __esm({
|
|
|
7490
7490
|
{
|
|
7491
7491
|
range: ">=1.0.0",
|
|
7492
7492
|
coverage: 0.85,
|
|
7493
|
-
note: "native-seam: the two pure-JS constants (ScreenCornerRadius, IsScreenRounded) run from the real bundle; only the ScreenCornerRadius NativeModule is ours, and its `cornerRadius` constant returns the live simulated device's display corner radius from the same
|
|
7493
|
+
note: "native-seam: the two pure-JS constants (ScreenCornerRadius, IsScreenRounded) run from the real bundle; only the ScreenCornerRadius NativeModule is ours, and its `cornerRadius` constant returns the live simulated device's measured display corner radius from the same device spec the engine renders the chrome from. this is the package's entire purpose and SootSim answers it precisely. faithful complete contract, not a no-op.",
|
|
7494
7494
|
working: "NativeModules.ScreenCornerRadius.cornerRadius (real per-device radius, synchronous constant read at import like upstream); ScreenCornerRadius + IsScreenRounded constants computed by the real package JS off that value, so IsScreenRounded is correct per device",
|
|
7495
7495
|
missing: 'none functionally \u2014 returns the exact display corner radius of the simulated device; 0 only in the pre-boot window before the first device spec publishes, which the upstream `?? 0` already treats as "couldn\'t be detected"'
|
|
7496
7496
|
}
|
|
@@ -10309,7 +10309,8 @@ __export(bridge_constants_exports, {
|
|
|
10309
10309
|
SOOTSIM_BRIDGE_SIM_CLOSE_REASON: () => SOOTSIM_BRIDGE_SIM_CLOSE_REASON,
|
|
10310
10310
|
resolveSootsimBridgePort: () => resolveSootsimBridgePort,
|
|
10311
10311
|
resolveSootsimBridgePortForHttpPort: () => resolveSootsimBridgePortForHttpPort,
|
|
10312
|
-
resolveSootsimBridgePortForRuntimeLocation: () => resolveSootsimBridgePortForRuntimeLocation
|
|
10312
|
+
resolveSootsimBridgePortForRuntimeLocation: () => resolveSootsimBridgePortForRuntimeLocation,
|
|
10313
|
+
resolveSootsimBridgeWebSocketUrl: () => resolveSootsimBridgeWebSocketUrl
|
|
10313
10314
|
});
|
|
10314
10315
|
function parsePort(value) {
|
|
10315
10316
|
if (typeof value === "number") {
|
|
@@ -10376,6 +10377,16 @@ function resolveSootsimBridgePortForRuntimeLocation(input = {}) {
|
|
|
10376
10377
|
if (baseHttpPort === null) return DEFAULT_SOOTSIM_BRIDGE_PORT;
|
|
10377
10378
|
return resolveSootsimBridgePortForHttpPort({ httpPort, baseHttpPort });
|
|
10378
10379
|
}
|
|
10380
|
+
function resolveSootsimBridgeWebSocketUrl(input) {
|
|
10381
|
+
const pageUrl = parseHrefUrl(input.href);
|
|
10382
|
+
if (!pageUrl || pageUrl.protocol !== "http:" && pageUrl.protocol !== "https:") {
|
|
10383
|
+
throw new Error(`invalid SootSim browser bridge page URL: ${input.href}`);
|
|
10384
|
+
}
|
|
10385
|
+
const proxyUrl = new URL("/__websocket-proxy", pageUrl);
|
|
10386
|
+
proxyUrl.protocol = pageUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
10387
|
+
proxyUrl.searchParams.set("url", `ws://localhost:${input.bridgePort}`);
|
|
10388
|
+
return proxyUrl.href;
|
|
10389
|
+
}
|
|
10379
10390
|
var DEFAULT_SOOTSIM_BRIDGE_PORT, CONTRAST_DEV_HTTP_BASE_PORT, SOOTSIM_SITE_DEV_HTTP_BASE_PORT, SOOTSIM_SHELL_DEV_HTTP_BASE_PORT, LOCAL_DEV_HTTP_BASE_PORTS, MAX_LOCAL_DEV_PORT_OFFSET, SOOTSIM_BRIDGE_SIM_CLOSE_CODE, SOOTSIM_BRIDGE_SIM_CLOSE_REASON;
|
|
10380
10391
|
var init_bridge_constants = __esm({
|
|
10381
10392
|
"src/bridge-constants.ts"() {
|
|
@@ -13325,11 +13336,18 @@ function connectProxyPair(clientWs, upstream) {
|
|
|
13325
13336
|
clientWs.on("error", () => safeClose(upstream, 1011, "proxy client error"));
|
|
13326
13337
|
upstream.on("error", () => safeClose(clientWs, 1011, "upstream websocket error"));
|
|
13327
13338
|
}
|
|
13328
|
-
function createUpstreamWebSocket(targetUrl, protocols, headers) {
|
|
13339
|
+
function createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin) {
|
|
13329
13340
|
const upstreamHeaders = { ...headers };
|
|
13330
|
-
|
|
13341
|
+
const originKeys = Object.keys(upstreamHeaders).filter(
|
|
13342
|
+
(key) => key.toLowerCase() === "origin"
|
|
13343
|
+
);
|
|
13344
|
+
if (forwardOrigin && originKeys.length === 0) {
|
|
13331
13345
|
upstreamHeaders.origin = getDefaultWebSocketOrigin(targetUrl);
|
|
13346
|
+
} else if (!forwardOrigin) {
|
|
13347
|
+
for (const key of originKeys) delete upstreamHeaders[key];
|
|
13332
13348
|
}
|
|
13349
|
+
if (Object.keys(upstreamHeaders).length === 0)
|
|
13350
|
+
return new import_ws.WebSocket(targetUrl.href, protocols);
|
|
13333
13351
|
return new import_ws.WebSocket(targetUrl.href, protocols, {
|
|
13334
13352
|
headers: upstreamHeaders
|
|
13335
13353
|
});
|
|
@@ -13342,7 +13360,7 @@ function isWebSocketProxyRequestUrl(rawUrl) {
|
|
|
13342
13360
|
return false;
|
|
13343
13361
|
}
|
|
13344
13362
|
}
|
|
13345
|
-
function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
13363
|
+
function handleWebSocketProxyUpgrade(req, socket, head, forwardOrigin = true) {
|
|
13346
13364
|
if (!isWebSocketProxyRequestUrl(req.url)) return false;
|
|
13347
13365
|
if (!isSameOriginUpgrade(req)) {
|
|
13348
13366
|
rejectUpgrade(socket, 403, "forbidden websocket proxy origin");
|
|
@@ -13368,7 +13386,7 @@ function handleWebSocketProxyUpgrade(req, socket, head) {
|
|
|
13368
13386
|
return true;
|
|
13369
13387
|
}
|
|
13370
13388
|
const protocols = getRequestedProtocols(req);
|
|
13371
|
-
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers);
|
|
13389
|
+
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin);
|
|
13372
13390
|
let completed = false;
|
|
13373
13391
|
socket.once("close", () => {
|
|
13374
13392
|
if (!completed) upstream.terminate();
|
|
@@ -15591,9 +15609,11 @@ __export(ws_bridge_exports, {
|
|
|
15591
15609
|
worldForBridgePort: () => worldForBridgePort
|
|
15592
15610
|
});
|
|
15593
15611
|
function resolveBridgeWorld() {
|
|
15594
|
-
|
|
15595
|
-
resolvedWorld
|
|
15596
|
-
|
|
15612
|
+
const homeDir = sootsimHomeDir();
|
|
15613
|
+
if (resolvedWorld?.homeDir === homeDir) return resolvedWorld.world;
|
|
15614
|
+
const world = resolveBridgeWorldFresh();
|
|
15615
|
+
resolvedWorld = { homeDir, world };
|
|
15616
|
+
return world;
|
|
15597
15617
|
}
|
|
15598
15618
|
function resolveBridgeWorldFresh() {
|
|
15599
15619
|
const dev = readDevBridgeLockfile();
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.235 | (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
package/src/bridge-constants.ts
CHANGED
|
@@ -106,6 +106,20 @@ export function resolveSootsimBridgePortForRuntimeLocation(
|
|
|
106
106
|
return resolveSootsimBridgePortForHttpPort({ httpPort, baseHttpPort })
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
export function resolveSootsimBridgeWebSocketUrl(input: {
|
|
110
|
+
bridgePort: number
|
|
111
|
+
href: string
|
|
112
|
+
}): string {
|
|
113
|
+
const pageUrl = parseHrefUrl(input.href)
|
|
114
|
+
if (!pageUrl || (pageUrl.protocol !== 'http:' && pageUrl.protocol !== 'https:')) {
|
|
115
|
+
throw new Error(`invalid SootSim browser bridge page URL: ${input.href}`)
|
|
116
|
+
}
|
|
117
|
+
const proxyUrl = new URL('/__websocket-proxy', pageUrl)
|
|
118
|
+
proxyUrl.protocol = pageUrl.protocol === 'https:' ? 'wss:' : 'ws:'
|
|
119
|
+
proxyUrl.searchParams.set('url', `ws://localhost:${input.bridgePort}`)
|
|
120
|
+
return proxyUrl.href
|
|
121
|
+
}
|
|
122
|
+
|
|
109
123
|
// private websocket close code used when the daemon intentionally closes a
|
|
110
124
|
// sim. browser clients treat it as terminal and skip their normal reconnect
|
|
111
125
|
// loop; playwright-owned sims use it to close their hosting context.
|
|
@@ -116,11 +116,19 @@ function createUpstreamWebSocket(
|
|
|
116
116
|
targetUrl: URL,
|
|
117
117
|
protocols: string[],
|
|
118
118
|
headers: Record<string, string>,
|
|
119
|
+
forwardOrigin: boolean,
|
|
119
120
|
): WebSocket {
|
|
120
121
|
const upstreamHeaders = { ...headers }
|
|
121
|
-
|
|
122
|
+
const originKeys = Object.keys(upstreamHeaders).filter(
|
|
123
|
+
(key) => key.toLowerCase() === 'origin',
|
|
124
|
+
)
|
|
125
|
+
if (forwardOrigin && originKeys.length === 0) {
|
|
122
126
|
upstreamHeaders.origin = getDefaultWebSocketOrigin(targetUrl)
|
|
127
|
+
} else if (!forwardOrigin) {
|
|
128
|
+
for (const key of originKeys) delete upstreamHeaders[key]
|
|
123
129
|
}
|
|
130
|
+
if (Object.keys(upstreamHeaders).length === 0)
|
|
131
|
+
return new WebSocket(targetUrl.href, protocols)
|
|
124
132
|
return new WebSocket(targetUrl.href, protocols, {
|
|
125
133
|
headers: upstreamHeaders,
|
|
126
134
|
})
|
|
@@ -139,6 +147,7 @@ export function handleWebSocketProxyUpgrade(
|
|
|
139
147
|
req: IncomingMessage,
|
|
140
148
|
socket: Duplex,
|
|
141
149
|
head: Buffer,
|
|
150
|
+
forwardOrigin = true,
|
|
142
151
|
): boolean {
|
|
143
152
|
if (!isWebSocketProxyRequestUrl(req.url)) return false
|
|
144
153
|
if (!isSameOriginUpgrade(req)) {
|
|
@@ -167,7 +176,7 @@ export function handleWebSocketProxyUpgrade(
|
|
|
167
176
|
}
|
|
168
177
|
|
|
169
178
|
const protocols = getRequestedProtocols(req)
|
|
170
|
-
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers)
|
|
179
|
+
const upstream = createUpstreamWebSocket(targetUrl, protocols, headers, forwardOrigin)
|
|
171
180
|
let completed = false
|
|
172
181
|
socket.once('close', () => {
|
|
173
182
|
if (!completed) upstream.terminate()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d,e}from"./chunk-36HLSYS2.js";import"./chunk-KIYNMK6P.js";import"./chunk-KQCFBS3K.js";import"./chunk-HTTSF6YF.js";import"./chunk-A3R3A55R.js";import"./chunk-LW25UTSS.js";import"./chunk-XK5YL6SF.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-TD3PSMQU.js";import"./chunk-5JX4BCGL.js";import"./chunk-7G4VSJQ4.js";import"./chunk-5AVOWKYR.js";import"./chunk-DAWIWEWR.js";import"./chunk-2QOLVYFF.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,d as teardownDaemonService,e as teardownSootsimHome};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import"./chunk-2RP6TUZ3.js";import{f as a,g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i}from"./chunk-6KZBSG52.js";import"./chunk-MS33P5CV.js";import"./chunk-WPS3EFNK.js";import"./chunk-54U7A36G.js";import"./chunk-5JX4BCGL.js";import"./chunk-2QOLVYFF.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.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{c,d,e,f,g,h}from"./chunk-KIYCMEMO.js";import"./chunk-FSSTNYFL.js";import"./chunk-PSDDQWFO.js";import{c as a,d as b}from"./chunk-57FLKZOS.js";import"./chunk-DFAMEHIJ.js";import"./chunk-DVPVSP7S.js";import"./chunk-5FDIH76R.js";import"./chunk-IB6NUH34.js";import"./chunk-AASXS3LK.js";import"./chunk-TAPKEEG2.js";import"./chunk-6KZBSG52.js";import"./chunk-MS33P5CV.js";import"./chunk-4YPQAOC6.js";import"./chunk-VVVCJPSQ.js";import"./chunk-WPS3EFNK.js";import"./chunk-VWAOND2T.js";import"./chunk-YV35LVCO.js";import"./chunk-6NUCPZGB.js";import"./chunk-JXPGKN3F.js";import"./chunk-LJLYNHJF.js";import"./chunk-KIYNMK6P.js";import"./chunk-KQCFBS3K.js";import"./chunk-LW25UTSS.js";import"./chunk-XK5YL6SF.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-TD3PSMQU.js";import"./chunk-5JX4BCGL.js";import"./chunk-TGPXK5U2.js";import"./chunk-DAWIWEWR.js";import"./chunk-2QOLVYFF.js";export{e as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,g as hoistLeadingSimFlag,a as parseFlowFile,f as runFlowPlayback,h as runMaestroAuthoring,b as validateFlowFile};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-HTTSF6YF.js";import"./chunk-A3R3A55R.js";import"./chunk-LW25UTSS.js";import"./chunk-XK5YL6SF.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-TD3PSMQU.js";import"./chunk-5JX4BCGL.js";import"./chunk-7G4VSJQ4.js";import"./chunk-5AVOWKYR.js";import"./chunk-DAWIWEWR.js";import"./chunk-2QOLVYFF.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{j as a,k as b}from"./chunk-57FLKZOS.js";import"./chunk-DFAMEHIJ.js";import"./chunk-IB6NUH34.js";import"./chunk-AASXS3LK.js";import"./chunk-TAPKEEG2.js";import"./chunk-6KZBSG52.js";import"./chunk-MS33P5CV.js";import"./chunk-4YPQAOC6.js";import"./chunk-VVVCJPSQ.js";import"./chunk-WPS3EFNK.js";import"./chunk-VWAOND2T.js";import"./chunk-YV35LVCO.js";import"./chunk-6NUCPZGB.js";import"./chunk-JXPGKN3F.js";import"./chunk-LJLYNHJF.js";import"./chunk-LW25UTSS.js";import"./chunk-XK5YL6SF.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-TD3PSMQU.js";import"./chunk-5JX4BCGL.js";import"./chunk-TGPXK5U2.js";import"./chunk-DAWIWEWR.js";import"./chunk-2QOLVYFF.js";export{a as printShellPerfReport,b as runInspect};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-37CANPD2.js";import"./chunk-KIALD4JX.js";import"./chunk-JXPGKN3F.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-5JX4BCGL.js";import"./chunk-2QOLVYFF.js";export{a as runRuntime};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.234 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{e as a,f as b,g as c}from"./chunk-DVPVSP7S.js";import"./chunk-5FDIH76R.js";import"./chunk-4YPQAOC6.js";import"./chunk-VVVCJPSQ.js";import"./chunk-WPS3EFNK.js";import"./chunk-JXPGKN3F.js";import"./chunk-KIYNMK6P.js";import"./chunk-KQCFBS3K.js";import"./chunk-7ST3HVVO.js";import"./chunk-54U7A36G.js";import"./chunk-5JX4BCGL.js";import"./chunk-2QOLVYFF.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
|