rnxsim 0.1.339 → 0.1.340
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-config.ts +21 -1
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-HYXEA2DF.js → agent-DZRALHKK.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-XJKNKJGD.js → agent-wrapper-FFCII533.js} +2 -2
- package/dist-cli/chunks/{app-fonts-ECYIB477.js → app-fonts-P5TIE2BI.js} +2 -2
- package/dist-cli/chunks/{assert-XVYWL4OL.js → assert-L6YWZZH7.js} +2 -2
- package/dist-cli/chunks/{auth-RP5LJWFS.js → auth-2QUOSD3D.js} +2 -2
- package/dist-cli/chunks/{beta-VBVPDQZD.js → beta-DSQASQV7.js} +2 -2
- package/dist-cli/chunks/{camera-YVDG77OW.js → camera-KONNW6GF.js} +2 -2
- package/dist-cli/chunks/{chunk-37CF2HGR.js → chunk-2C7MJXES.js} +1 -1
- package/dist-cli/chunks/{chunk-44PQEV6X.js → chunk-2FT3GZ2P.js} +2 -2
- package/dist-cli/chunks/{chunk-PTDAFVH5.js → chunk-3KDMR5FE.js} +2 -2
- package/dist-cli/chunks/{chunk-2AZOL3UF.js → chunk-52LBSDBQ.js} +3 -3
- package/dist-cli/chunks/{chunk-VCYL5IR3.js → chunk-5JKZGU2L.js} +1 -1
- package/dist-cli/chunks/{chunk-ST4IRWA6.js → chunk-5ULMLFND.js} +1 -1
- package/dist-cli/chunks/{chunk-42UB5N4I.js → chunk-6HQ2CUG5.js} +1 -1
- package/dist-cli/chunks/{chunk-UMNOLET5.js → chunk-7IBTDBHW.js} +2 -2
- package/dist-cli/chunks/{chunk-VYMD42C2.js → chunk-AV323BT6.js} +2 -2
- package/dist-cli/chunks/{chunk-KTL2LUE5.js → chunk-AVGWPMGX.js} +1 -1
- package/dist-cli/chunks/{chunk-IWXDWYP4.js → chunk-AZWECMXO.js} +2 -2
- package/dist-cli/chunks/{chunk-3T22NM6B.js → chunk-BCGO3XWB.js} +2 -2
- package/dist-cli/chunks/{chunk-ZE44MQ4K.js → chunk-CA3D6BWR.js} +2 -2
- package/dist-cli/chunks/{chunk-XIEY6RUY.js → chunk-CKK6IEZD.js} +1 -1
- package/dist-cli/chunks/{chunk-QKMCPABX.js → chunk-CKKJUPAA.js} +1 -1
- package/dist-cli/chunks/{chunk-3R7KVPQ6.js → chunk-CYAEO7E3.js} +2 -2
- package/dist-cli/chunks/{chunk-Z2RU7GLW.js → chunk-DB4DBTM2.js} +2 -2
- package/dist-cli/chunks/{chunk-7WQGK44R.js → chunk-DEK47I44.js} +3 -3
- package/dist-cli/chunks/{chunk-CNFXAL6Z.js → chunk-DMAUBOZ2.js} +1 -1
- package/dist-cli/chunks/{chunk-76QEJTAT.js → chunk-EZ2WX6EK.js} +3 -3
- package/dist-cli/chunks/{chunk-KW3TVLRH.js → chunk-F4SGYRAP.js} +1 -1
- package/dist-cli/chunks/chunk-HWIUC6SX.js +4 -0
- package/dist-cli/chunks/{chunk-PRNSZ6B2.js → chunk-J2EHW26I.js} +2 -2
- package/dist-cli/chunks/{chunk-KAO5CST7.js → chunk-JJKRVEA6.js} +1 -1
- package/dist-cli/chunks/{chunk-NG7EAN4Z.js → chunk-JRJDACNV.js} +2 -2
- package/dist-cli/chunks/{chunk-GGDZMFEK.js → chunk-JX5LGYG2.js} +2 -2
- package/dist-cli/chunks/{chunk-FPQ4EECQ.js → chunk-L6FANSWV.js} +1 -1
- package/dist-cli/chunks/{chunk-5TECC5CJ.js → chunk-LQIMPJRD.js} +2 -2
- package/dist-cli/chunks/{chunk-VAR4NG7B.js → chunk-LXED7YNR.js} +1 -1
- package/dist-cli/chunks/{chunk-GESUHR5O.js → chunk-M76E72WP.js} +2 -2
- package/dist-cli/chunks/{chunk-7H5BVBSN.js → chunk-MKFOWHFO.js} +1 -1
- package/dist-cli/chunks/{chunk-IV4EVQFA.js → chunk-MXXR5IDW.js} +3 -3
- package/dist-cli/chunks/{chunk-AVK2JHMK.js → chunk-MYTUISZ3.js} +2 -2
- package/dist-cli/chunks/{chunk-NZ4MVNIE.js → chunk-NAG3Y5BF.js} +1 -1
- package/dist-cli/chunks/{chunk-OGSAZBRR.js → chunk-NZVA5ZGD.js} +1 -1
- package/dist-cli/chunks/{chunk-7F3ZRIVD.js → chunk-PH37P7G2.js} +2 -2
- package/dist-cli/chunks/{chunk-SS6FV24V.js → chunk-PYZHCZFD.js} +2 -2
- package/dist-cli/chunks/{chunk-RBB3BPRM.js → chunk-QRHLTYK7.js} +2 -2
- package/dist-cli/chunks/{chunk-FN3MYVOI.js → chunk-RYXIRFY2.js} +2 -2
- package/dist-cli/chunks/{chunk-KPN5X2PV.js → chunk-TAPZRN4C.js} +1 -1
- package/dist-cli/chunks/{chunk-ZVHDLFW6.js → chunk-TRGIXJN4.js} +2 -2
- package/dist-cli/chunks/{chunk-ROODJ6RF.js → chunk-U4ZHMDGL.js} +1 -1
- package/dist-cli/chunks/{chunk-QCDZI56P.js → chunk-UH2S5SLV.js} +2 -2
- package/dist-cli/chunks/{chunk-4NYMUV5O.js → chunk-UKKT5KM4.js} +2 -2
- package/dist-cli/chunks/{chunk-CIKEBWPF.js → chunk-UOK37RTL.js} +1 -1
- package/dist-cli/chunks/{chunk-M3SKRWFU.js → chunk-VP7D322G.js} +1 -1
- package/dist-cli/chunks/{chunk-WR3HAW34.js → chunk-W34ZT5MF.js} +2 -2
- package/dist-cli/chunks/{chunk-BISFMRD6.js → chunk-WRNCAZIB.js} +2 -2
- package/dist-cli/chunks/{chunk-HAPZCL5D.js → chunk-WRPLAFZP.js} +2 -2
- package/dist-cli/chunks/{chunk-76MUKN6C.js → chunk-X5C3SLYU.js} +1 -1
- package/dist-cli/chunks/{chunk-GFHGRBLQ.js → chunk-YNS55EN5.js} +2 -2
- package/dist-cli/chunks/{chunk-SWW36H42.js → chunk-Z7ILCEXG.js} +2 -2
- package/dist-cli/chunks/{chunk-QLIPEQVL.js → chunk-ZEU5RFAH.js} +2 -2
- package/dist-cli/chunks/{cleanup-4FUIYEXZ.js → cleanup-BPGPA6WN.js} +2 -2
- package/dist-cli/chunks/cli-version-GJ55D3JI.js +4 -0
- package/dist-cli/chunks/{compat-N6MLQSAE.js → compat-2L5FPDKU.js} +2 -2
- package/dist-cli/chunks/{config-VJQMQ2LP.js → config-NRXBYFB7.js} +2 -2
- package/dist-cli/chunks/{control-ONWYYQK6.js → control-G5SMCB2U.js} +2 -2
- package/dist-cli/chunks/daemon-HDNSS5A3.js +4 -0
- package/dist-cli/chunks/{debug-7WASIHHQ.js → debug-CTYLINPI.js} +3 -3
- package/dist-cli/chunks/{desktop-TAX4UBZU.js → desktop-JNYUDHX5.js} +3 -3
- package/dist-cli/chunks/{detox-GUWYLR7G.js → detox-ZWP5MUPJ.js} +2 -2
- package/dist-cli/chunks/{device-4CJWN2NQ.js → device-Y7ANIQJY.js} +2 -2
- package/dist-cli/chunks/{diagnose-PE6E6FIJ.js → diagnose-GFPN44ER.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-NCNDW6UG.js → disk-cleanup-OUHB2MKC.js} +2 -2
- package/dist-cli/chunks/drivers-3PUAZF6B.js +4 -0
- package/dist-cli/chunks/{film-3S5BWVCE.js → film-RNPYZHQA.js} +3 -3
- package/dist-cli/chunks/flow-XQUTMOQZ.js +4 -0
- package/dist-cli/chunks/help-C7Y5IENX.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-5NJA6RDT.js → hidden-runtime-alias-DGMIDDY6.js} +2 -2
- package/dist-cli/chunks/{home-paths-JEJ5BS23.js → home-paths-YEFW63N5.js} +2 -2
- package/dist-cli/chunks/inspect-4NF3PPRZ.js +4 -0
- package/dist-cli/chunks/install-desktop-66LPKLQI.js +4 -0
- package/dist-cli/chunks/{login-WXWIBQ5C.js → login-ASAFHSEL.js} +4 -4
- package/dist-cli/chunks/{logout-WYOZ64JT.js → logout-F3B5TUCU.js} +2 -2
- package/dist-cli/chunks/{maestro-VG64BSNR.js → maestro-MJD54Z7R.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-7ILUVQKH.js → maestro-generate-PQZ33V42.js} +3 -3
- package/dist-cli/chunks/{mode-AWVXLR3D.js → mode-TKOOHJNS.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-RRH3SRSJ.js → optional-demo-registry-VX3WVJXT.js} +2 -2
- package/dist-cli/chunks/{perf-IDLWGRFE.js → perf-JRREHJB6.js} +2 -2
- package/dist-cli/chunks/{permissions-YQOMEBOQ.js → permissions-RQZLGYVF.js} +2 -2
- package/dist-cli/chunks/{record-S76THKKB.js → record-LBNBJ6U4.js} +3 -3
- package/dist-cli/chunks/{report-issue-76TVGJYX.js → report-issue-O63Z4GXO.js} +2 -2
- package/dist-cli/chunks/reset-734HPURU.js +4 -0
- package/dist-cli/chunks/runtime-PRF4VZAB.js +4 -0
- package/dist-cli/chunks/{screenshot-command-LLEQWW3R.js → screenshot-command-OLZIGKZR.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-327WK2L3.js → screenshot-layers-ZCKD62ME.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-LHIBYR3R.js → screenshots-capture-CJFJACD7.js} +2 -2
- package/dist-cli/chunks/serve-L6QW4B55.js +118 -0
- package/dist-cli/chunks/{setup-H5EUUEOX.js → setup-CHUHRWKS.js} +2 -2
- package/dist-cli/chunks/{skills-3KH5KUN4.js → skills-J44O4CRY.js} +2 -2
- package/dist-cli/chunks/{state-RZCVH5FJ.js → state-MSTCUB5E.js} +2 -2
- package/dist-cli/chunks/{storage-RRCXZVON.js → storage-23Y5YSD3.js} +2 -2
- package/dist-cli/chunks/store-IK5DQZ2G.js +4 -0
- package/dist-cli/chunks/telemetry-SCC2A4KF.js +4 -0
- package/dist-cli/chunks/{timeline-KE7BJKM5.js → timeline-R7VNARZ5.js} +2 -2
- package/dist-cli/chunks/{upgrade-AE5U2CWH.js → upgrade-YUASBYYN.js} +2 -2
- package/dist-cli/chunks/upload-BFCTC54P.js +4 -0
- package/dist-cli/chunks/{version-C5QGOCDN.js → version-FSV3NQBN.js} +2 -2
- package/dist-cli/chunks/{web-GV7JJUAJ.js → web-LZH2QIJ5.js} +2 -2
- package/dist-cli/chunks/{what-happened-D6WMLM2M.js → what-happened-F45IZ34K.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 +1 -1
- package/dist-lib/bridge-contract.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 +203 -8
- 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 +236 -0
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +195 -8
- 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-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +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 +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +371 -155
- package/dist-lib/vite.cjs +188 -1
- package/package.json +6 -2
- package/src/host/bridge-host.ts +9 -0
- package/src/host/replacement-module-handler.ts +220 -0
- package/src/vite-plugin-one.ts +7 -0
- package/dist-cli/chunks/chunk-K3JRFYYJ.js +0 -4
- package/dist-cli/chunks/cli-version-KVDXKEHT.js +0 -4
- package/dist-cli/chunks/daemon-XG3O4723.js +0 -4
- package/dist-cli/chunks/drivers-F73P7O5K.js +0 -4
- package/dist-cli/chunks/flow-7EO3TWAY.js +0 -4
- package/dist-cli/chunks/help-3GA4GYV6.js +0 -4
- package/dist-cli/chunks/inspect-VUH3UOVP.js +0 -4
- package/dist-cli/chunks/install-desktop-YFWELRMN.js +0 -4
- package/dist-cli/chunks/reset-TTWH3EGL.js +0 -4
- package/dist-cli/chunks/runtime-R6XCSUO7.js +0 -4
- package/dist-cli/chunks/serve-AI6WHUKJ.js +0 -44
- package/dist-cli/chunks/store-N6YWP4XP.js +0 -4
- package/dist-cli/chunks/telemetry-MI5XEML5.js +0 -4
- package/dist-cli/chunks/upload-THUL2TQZ.js +0 -4
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.340 | (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;
|
|
@@ -110,6 +110,188 @@ function isDaemonLockfileFresh(lock, now = Date.now()) {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
// src/host/replacement-module-handler.ts
|
|
114
|
+
var import_promises = __toESM(require("node:fs/promises"), 1);
|
|
115
|
+
var import_node_path2 = __toESM(require("node:path"), 1);
|
|
116
|
+
var import_esbuild = require("esbuild");
|
|
117
|
+
var REPLACEMENT_MODULE_ROUTE = "/__sootsim-replacement-module";
|
|
118
|
+
var REPLACEMENT_RUNTIME_PREFIX = "/__sootsim-replacement-runtime";
|
|
119
|
+
function getReplacementLoader(filePath) {
|
|
120
|
+
const ext = import_node_path2.default.extname(filePath).toLowerCase();
|
|
121
|
+
switch (ext) {
|
|
122
|
+
case ".js":
|
|
123
|
+
return "js";
|
|
124
|
+
case ".jsx":
|
|
125
|
+
return "jsx";
|
|
126
|
+
case ".ts":
|
|
127
|
+
return "ts";
|
|
128
|
+
case ".tsx":
|
|
129
|
+
return "tsx";
|
|
130
|
+
default:
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function reactRuntimeSource(reactBridgeUrl) {
|
|
135
|
+
if (reactBridgeUrl) {
|
|
136
|
+
return `export * from ${JSON.stringify(reactBridgeUrl)};
|
|
137
|
+
import React from ${JSON.stringify(reactBridgeUrl)};
|
|
138
|
+
export default React;
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
return `const bridge = globalThis.__sootsim_react_bridge
|
|
142
|
+
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
143
|
+
export default bridge.default
|
|
144
|
+
export const Activity = bridge.Activity
|
|
145
|
+
export const Children = bridge.Children
|
|
146
|
+
export const Component = bridge.Component
|
|
147
|
+
export const Fragment = bridge.Fragment
|
|
148
|
+
export const Profiler = bridge.Profiler
|
|
149
|
+
export const PureComponent = bridge.PureComponent
|
|
150
|
+
export const StrictMode = bridge.StrictMode
|
|
151
|
+
export const Suspense = bridge.Suspense
|
|
152
|
+
export const __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = bridge.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE
|
|
153
|
+
export const __COMPILER_RUNTIME = bridge.__COMPILER_RUNTIME
|
|
154
|
+
export const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = bridge.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
155
|
+
export const act = bridge.act
|
|
156
|
+
export const cache = bridge.cache
|
|
157
|
+
export const cacheSignal = bridge.cacheSignal
|
|
158
|
+
export const captureOwnerStack = bridge.captureOwnerStack
|
|
159
|
+
export const cloneElement = bridge.cloneElement
|
|
160
|
+
export const createContext = bridge.createContext
|
|
161
|
+
export const createElement = bridge.createElement
|
|
162
|
+
export const createRef = bridge.createRef
|
|
163
|
+
export const forwardRef = bridge.forwardRef
|
|
164
|
+
export const isValidElement = bridge.isValidElement
|
|
165
|
+
export const lazy = bridge.lazy
|
|
166
|
+
export const memo = bridge.memo
|
|
167
|
+
export const startTransition = bridge.startTransition
|
|
168
|
+
export const unstable_useCacheRefresh = bridge.unstable_useCacheRefresh
|
|
169
|
+
export const use = bridge.use
|
|
170
|
+
export const useActionState = bridge.useActionState
|
|
171
|
+
export const useCallback = bridge.useCallback
|
|
172
|
+
export const useContext = bridge.useContext
|
|
173
|
+
export const useDebugValue = bridge.useDebugValue
|
|
174
|
+
export const useDeferredValue = bridge.useDeferredValue
|
|
175
|
+
export const useEffect = bridge.useEffect
|
|
176
|
+
export const useEffectEvent = bridge.useEffectEvent
|
|
177
|
+
export const useId = bridge.useId
|
|
178
|
+
export const useImperativeHandle = bridge.useImperativeHandle
|
|
179
|
+
export const useInsertionEffect = bridge.useInsertionEffect
|
|
180
|
+
export const useLayoutEffect = bridge.useLayoutEffect
|
|
181
|
+
export const useMemo = bridge.useMemo
|
|
182
|
+
export const useOptimistic = bridge.useOptimistic
|
|
183
|
+
export const useReducer = bridge.useReducer
|
|
184
|
+
export const useRef = bridge.useRef
|
|
185
|
+
export const useState = bridge.useState
|
|
186
|
+
export const useSyncExternalStore = bridge.useSyncExternalStore
|
|
187
|
+
export const useTransition = bridge.useTransition
|
|
188
|
+
export const version = bridge.version
|
|
189
|
+
`;
|
|
190
|
+
}
|
|
191
|
+
function reactNativeRuntimeSource() {
|
|
192
|
+
return `const rn = globalThis.__sootsim_components__ || {}
|
|
193
|
+
export default rn
|
|
194
|
+
export const View = rn.View
|
|
195
|
+
export const Text = rn.Text
|
|
196
|
+
export const Image = rn.Image
|
|
197
|
+
export const ScrollView = rn.ScrollView
|
|
198
|
+
export const FlatList = rn.FlatList
|
|
199
|
+
export const Pressable = rn.Pressable
|
|
200
|
+
export const TouchableOpacity = rn.TouchableOpacity
|
|
201
|
+
export const TouchableWithoutFeedback = rn.TouchableWithoutFeedback
|
|
202
|
+
export const TouchableHighlight = rn.TouchableHighlight
|
|
203
|
+
export const TextInput = rn.TextInput
|
|
204
|
+
export const ActivityIndicator = rn.ActivityIndicator
|
|
205
|
+
export const KeyboardAvoidingView = rn.KeyboardAvoidingView
|
|
206
|
+
export const Button = rn.Button
|
|
207
|
+
export const Modal = rn.Modal
|
|
208
|
+
export const Switch = rn.Switch
|
|
209
|
+
export const StyleSheet = rn.StyleSheet
|
|
210
|
+
export const Platform = rn.Platform
|
|
211
|
+
export const Keyboard = rn.Keyboard
|
|
212
|
+
export const Dimensions = rn.Dimensions
|
|
213
|
+
export const Appearance = rn.Appearance
|
|
214
|
+
`;
|
|
215
|
+
}
|
|
216
|
+
function sendJavaScript(req, res, source) {
|
|
217
|
+
res.writeHead(200, {
|
|
218
|
+
"Content-Type": "application/javascript; charset=utf-8",
|
|
219
|
+
"Cache-Control": "no-cache"
|
|
220
|
+
});
|
|
221
|
+
res.end(req.method === "HEAD" ? void 0 : source);
|
|
222
|
+
}
|
|
223
|
+
async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
224
|
+
const rawUrl = req.url || "";
|
|
225
|
+
let url;
|
|
226
|
+
try {
|
|
227
|
+
url = new URL(rawUrl, "http://rnx.local");
|
|
228
|
+
} catch {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react`) {
|
|
232
|
+
sendJavaScript(req, res, reactRuntimeSource(options.reactBridgeUrl));
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react-native`) {
|
|
236
|
+
sendJavaScript(req, res, reactNativeRuntimeSource());
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
if (url.pathname !== REPLACEMENT_MODULE_ROUTE) return false;
|
|
240
|
+
const targetPath = url.searchParams.get("path");
|
|
241
|
+
if (!targetPath) {
|
|
242
|
+
res.writeHead(400, { "Content-Type": "text/plain; charset=utf-8" });
|
|
243
|
+
res.end("missing path param");
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
const loader = getReplacementLoader(targetPath);
|
|
247
|
+
if (!loader) {
|
|
248
|
+
res.writeHead(400, { "Content-Type": "text/plain; charset=utf-8" });
|
|
249
|
+
res.end("replacement files must be .js, .jsx, .ts, or .tsx");
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
try {
|
|
253
|
+
await import_promises.default.access(targetPath);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
256
|
+
res.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" });
|
|
257
|
+
res.end(`replacement file not found: ${message}`);
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
const result = await (0, import_esbuild.build)({
|
|
262
|
+
entryPoints: [targetPath],
|
|
263
|
+
bundle: true,
|
|
264
|
+
write: false,
|
|
265
|
+
format: "esm",
|
|
266
|
+
platform: "browser",
|
|
267
|
+
target: "es2022",
|
|
268
|
+
jsx: "transform",
|
|
269
|
+
jsxFactory: "React.createElement",
|
|
270
|
+
jsxFragment: "React.Fragment",
|
|
271
|
+
tsconfigRaw: { compilerOptions: { jsx: "react" } },
|
|
272
|
+
sourcemap: "inline",
|
|
273
|
+
logLevel: "silent",
|
|
274
|
+
external: ["react", "react-native"]
|
|
275
|
+
});
|
|
276
|
+
const bundledCode = result.outputFiles[0]?.text ?? "";
|
|
277
|
+
const hasReactBinding = /\bimport\s+(?:\*\s+as\s+React|React(?:\s*,|\s+from)|\{[^}]*\bdefault\s+as\s+React\b)/.test(
|
|
278
|
+
bundledCode
|
|
279
|
+
);
|
|
280
|
+
const reactImport = /\bReact\.(?:createElement|Fragment)\b/.test(bundledCode) && !hasReactBinding ? `import * as React from '${REPLACEMENT_RUNTIME_PREFIX}/react';
|
|
281
|
+
` : "";
|
|
282
|
+
const runtimeCode = (reactImport + bundledCode).replace(
|
|
283
|
+
/from\s*["']react-native["']/g,
|
|
284
|
+
`from '${REPLACEMENT_RUNTIME_PREFIX}/react-native'`
|
|
285
|
+
).replace(/from\s*["']react["']/g, `from '${REPLACEMENT_RUNTIME_PREFIX}/react'`);
|
|
286
|
+
sendJavaScript(req, res, runtimeCode);
|
|
287
|
+
} catch (error) {
|
|
288
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
289
|
+
res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
|
|
290
|
+
res.end(`replacement bundle failed: ${message}`);
|
|
291
|
+
}
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
|
|
113
295
|
// src/runtime-assets.ts
|
|
114
296
|
var import_fs = __toESM(require("fs"), 1);
|
|
115
297
|
var import_path = __toESM(require("path"), 1);
|
|
@@ -303,6 +485,11 @@ function rnxPlugin(options = {}) {
|
|
|
303
485
|
])
|
|
304
486
|
);
|
|
305
487
|
});
|
|
488
|
+
server.middlewares.use((req, res, next) => {
|
|
489
|
+
void handleReplacementModuleRequest(req, res).then((handled) => {
|
|
490
|
+
if (!handled) next();
|
|
491
|
+
});
|
|
492
|
+
});
|
|
306
493
|
server.middlewares.use((req, res, next) => {
|
|
307
494
|
const url = req.url || "";
|
|
308
495
|
const pathname = url.split("?")[0];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rnxsim",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.340",
|
|
4
4
|
"description": "rnx CLI, Vite and Metro plugins, and agent skills for driving React Native apps in the browser.",
|
|
5
5
|
"author": "Tamagui LLC",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -143,6 +143,10 @@
|
|
|
143
143
|
"source": "./src/host/fetch-proxy-handler.ts",
|
|
144
144
|
"default": "./dist-lib/host/fetch-proxy-handler.cjs"
|
|
145
145
|
},
|
|
146
|
+
"./host/replacement-module-handler": {
|
|
147
|
+
"source": "./src/host/replacement-module-handler.ts",
|
|
148
|
+
"default": "./dist-lib/host/replacement-module-handler.cjs"
|
|
149
|
+
},
|
|
146
150
|
"./host/fetch-proxy-overrides": {
|
|
147
151
|
"source": "./src/host/fetch-proxy-overrides.ts",
|
|
148
152
|
"import": "./dist-lib/host/fetch-proxy-overrides.mjs",
|
|
@@ -194,6 +198,7 @@
|
|
|
194
198
|
},
|
|
195
199
|
"dependencies": {
|
|
196
200
|
"@expo/plist": "^0.5.4",
|
|
201
|
+
"esbuild": "^0.25.0",
|
|
197
202
|
"jiti": "2.7.0",
|
|
198
203
|
"ws": "^8.18.0"
|
|
199
204
|
},
|
|
@@ -211,7 +216,6 @@
|
|
|
211
216
|
"@sootsim/globals": "workspace:*",
|
|
212
217
|
"@sootsim/skills": "workspace:*",
|
|
213
218
|
"@types/ws": "^8.5.13",
|
|
214
|
-
"esbuild": "^0.25.0",
|
|
215
219
|
"sootsim-engine": "workspace:*",
|
|
216
220
|
"typescript": "^5.7.0",
|
|
217
221
|
"vite": "^8.2.2",
|
package/src/host/bridge-host.ts
CHANGED
|
@@ -48,6 +48,10 @@ import {
|
|
|
48
48
|
isFetchProxyRequestUrl,
|
|
49
49
|
} from './fetch-proxy-handler.ts'
|
|
50
50
|
import { openUrl as openUrlInBrowser, type OpenUrlOptions } from './open-url.ts'
|
|
51
|
+
import {
|
|
52
|
+
handleReplacementModuleRequest,
|
|
53
|
+
isReplacementModuleRequestUrl,
|
|
54
|
+
} from './replacement-module-handler.ts'
|
|
51
55
|
import { handleWebSocketProxyUpgrade } from './websocket-proxy.ts'
|
|
52
56
|
|
|
53
57
|
const SOOTSIM_CROSS_ORIGIN_EMBEDDER_POLICY = 'require-corp'
|
|
@@ -1563,6 +1567,11 @@ export class SootSimBridgeHost {
|
|
|
1563
1567
|
return
|
|
1564
1568
|
}
|
|
1565
1569
|
|
|
1570
|
+
if (isReplacementModuleRequestUrl(req.url)) {
|
|
1571
|
+
void handleReplacementModuleRequest(req, res)
|
|
1572
|
+
return
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1566
1575
|
const method = (req.method || 'GET').toUpperCase()
|
|
1567
1576
|
let url: URL
|
|
1568
1577
|
try {
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import fs from 'node:fs/promises'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { build } from 'esbuild'
|
|
4
|
+
import type { IncomingMessage, ServerResponse } from 'node:http'
|
|
5
|
+
|
|
6
|
+
export const REPLACEMENT_MODULE_ROUTE = '/__sootsim-replacement-module'
|
|
7
|
+
export const REPLACEMENT_RUNTIME_PREFIX = '/__sootsim-replacement-runtime'
|
|
8
|
+
|
|
9
|
+
export interface ReplacementModuleHandlerOptions {
|
|
10
|
+
reactBridgeUrl?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function getReplacementLoader(filePath: string): 'js' | 'jsx' | 'ts' | 'tsx' | null {
|
|
14
|
+
const ext = path.extname(filePath).toLowerCase()
|
|
15
|
+
switch (ext) {
|
|
16
|
+
case '.js':
|
|
17
|
+
return 'js'
|
|
18
|
+
case '.jsx':
|
|
19
|
+
return 'jsx'
|
|
20
|
+
case '.ts':
|
|
21
|
+
return 'ts'
|
|
22
|
+
case '.tsx':
|
|
23
|
+
return 'tsx'
|
|
24
|
+
default:
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function reactRuntimeSource(reactBridgeUrl?: string): string {
|
|
30
|
+
if (reactBridgeUrl) {
|
|
31
|
+
return (
|
|
32
|
+
`export * from ${JSON.stringify(reactBridgeUrl)};\n` +
|
|
33
|
+
`import React from ${JSON.stringify(reactBridgeUrl)};\n` +
|
|
34
|
+
`export default React;\n`
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return `const bridge = globalThis.__sootsim_react_bridge
|
|
39
|
+
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
40
|
+
export default bridge.default
|
|
41
|
+
export const Activity = bridge.Activity
|
|
42
|
+
export const Children = bridge.Children
|
|
43
|
+
export const Component = bridge.Component
|
|
44
|
+
export const Fragment = bridge.Fragment
|
|
45
|
+
export const Profiler = bridge.Profiler
|
|
46
|
+
export const PureComponent = bridge.PureComponent
|
|
47
|
+
export const StrictMode = bridge.StrictMode
|
|
48
|
+
export const Suspense = bridge.Suspense
|
|
49
|
+
export const __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = bridge.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE
|
|
50
|
+
export const __COMPILER_RUNTIME = bridge.__COMPILER_RUNTIME
|
|
51
|
+
export const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = bridge.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
52
|
+
export const act = bridge.act
|
|
53
|
+
export const cache = bridge.cache
|
|
54
|
+
export const cacheSignal = bridge.cacheSignal
|
|
55
|
+
export const captureOwnerStack = bridge.captureOwnerStack
|
|
56
|
+
export const cloneElement = bridge.cloneElement
|
|
57
|
+
export const createContext = bridge.createContext
|
|
58
|
+
export const createElement = bridge.createElement
|
|
59
|
+
export const createRef = bridge.createRef
|
|
60
|
+
export const forwardRef = bridge.forwardRef
|
|
61
|
+
export const isValidElement = bridge.isValidElement
|
|
62
|
+
export const lazy = bridge.lazy
|
|
63
|
+
export const memo = bridge.memo
|
|
64
|
+
export const startTransition = bridge.startTransition
|
|
65
|
+
export const unstable_useCacheRefresh = bridge.unstable_useCacheRefresh
|
|
66
|
+
export const use = bridge.use
|
|
67
|
+
export const useActionState = bridge.useActionState
|
|
68
|
+
export const useCallback = bridge.useCallback
|
|
69
|
+
export const useContext = bridge.useContext
|
|
70
|
+
export const useDebugValue = bridge.useDebugValue
|
|
71
|
+
export const useDeferredValue = bridge.useDeferredValue
|
|
72
|
+
export const useEffect = bridge.useEffect
|
|
73
|
+
export const useEffectEvent = bridge.useEffectEvent
|
|
74
|
+
export const useId = bridge.useId
|
|
75
|
+
export const useImperativeHandle = bridge.useImperativeHandle
|
|
76
|
+
export const useInsertionEffect = bridge.useInsertionEffect
|
|
77
|
+
export const useLayoutEffect = bridge.useLayoutEffect
|
|
78
|
+
export const useMemo = bridge.useMemo
|
|
79
|
+
export const useOptimistic = bridge.useOptimistic
|
|
80
|
+
export const useReducer = bridge.useReducer
|
|
81
|
+
export const useRef = bridge.useRef
|
|
82
|
+
export const useState = bridge.useState
|
|
83
|
+
export const useSyncExternalStore = bridge.useSyncExternalStore
|
|
84
|
+
export const useTransition = bridge.useTransition
|
|
85
|
+
export const version = bridge.version
|
|
86
|
+
`
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function reactNativeRuntimeSource(): string {
|
|
90
|
+
return `const rn = globalThis.__sootsim_components__ || {}
|
|
91
|
+
export default rn
|
|
92
|
+
export const View = rn.View
|
|
93
|
+
export const Text = rn.Text
|
|
94
|
+
export const Image = rn.Image
|
|
95
|
+
export const ScrollView = rn.ScrollView
|
|
96
|
+
export const FlatList = rn.FlatList
|
|
97
|
+
export const Pressable = rn.Pressable
|
|
98
|
+
export const TouchableOpacity = rn.TouchableOpacity
|
|
99
|
+
export const TouchableWithoutFeedback = rn.TouchableWithoutFeedback
|
|
100
|
+
export const TouchableHighlight = rn.TouchableHighlight
|
|
101
|
+
export const TextInput = rn.TextInput
|
|
102
|
+
export const ActivityIndicator = rn.ActivityIndicator
|
|
103
|
+
export const KeyboardAvoidingView = rn.KeyboardAvoidingView
|
|
104
|
+
export const Button = rn.Button
|
|
105
|
+
export const Modal = rn.Modal
|
|
106
|
+
export const Switch = rn.Switch
|
|
107
|
+
export const StyleSheet = rn.StyleSheet
|
|
108
|
+
export const Platform = rn.Platform
|
|
109
|
+
export const Keyboard = rn.Keyboard
|
|
110
|
+
export const Dimensions = rn.Dimensions
|
|
111
|
+
export const Appearance = rn.Appearance
|
|
112
|
+
`
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function sendJavaScript(req: IncomingMessage, res: ServerResponse, source: string): void {
|
|
116
|
+
res.writeHead(200, {
|
|
117
|
+
'Content-Type': 'application/javascript; charset=utf-8',
|
|
118
|
+
'Cache-Control': 'no-cache',
|
|
119
|
+
})
|
|
120
|
+
res.end(req.method === 'HEAD' ? undefined : source)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function isReplacementModuleRequestUrl(rawUrl?: string): boolean {
|
|
124
|
+
if (!rawUrl) return false
|
|
125
|
+
try {
|
|
126
|
+
const pathname = new URL(rawUrl, 'http://rnx.local').pathname
|
|
127
|
+
return (
|
|
128
|
+
pathname === REPLACEMENT_MODULE_ROUTE ||
|
|
129
|
+
pathname.startsWith(`${REPLACEMENT_RUNTIME_PREFIX}/`)
|
|
130
|
+
)
|
|
131
|
+
} catch {
|
|
132
|
+
return false
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export async function handleReplacementModuleRequest(
|
|
137
|
+
req: IncomingMessage,
|
|
138
|
+
res: ServerResponse,
|
|
139
|
+
options: ReplacementModuleHandlerOptions = {},
|
|
140
|
+
): Promise<boolean> {
|
|
141
|
+
const rawUrl = req.url || ''
|
|
142
|
+
let url: URL
|
|
143
|
+
try {
|
|
144
|
+
url = new URL(rawUrl, 'http://rnx.local')
|
|
145
|
+
} catch {
|
|
146
|
+
return false
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react`) {
|
|
150
|
+
sendJavaScript(req, res, reactRuntimeSource(options.reactBridgeUrl))
|
|
151
|
+
return true
|
|
152
|
+
}
|
|
153
|
+
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react-native`) {
|
|
154
|
+
sendJavaScript(req, res, reactNativeRuntimeSource())
|
|
155
|
+
return true
|
|
156
|
+
}
|
|
157
|
+
if (url.pathname !== REPLACEMENT_MODULE_ROUTE) return false
|
|
158
|
+
|
|
159
|
+
const targetPath = url.searchParams.get('path')
|
|
160
|
+
if (!targetPath) {
|
|
161
|
+
res.writeHead(400, { 'Content-Type': 'text/plain; charset=utf-8' })
|
|
162
|
+
res.end('missing path param')
|
|
163
|
+
return true
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const loader = getReplacementLoader(targetPath)
|
|
167
|
+
if (!loader) {
|
|
168
|
+
res.writeHead(400, { 'Content-Type': 'text/plain; charset=utf-8' })
|
|
169
|
+
res.end('replacement files must be .js, .jsx, .ts, or .tsx')
|
|
170
|
+
return true
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
await fs.access(targetPath)
|
|
175
|
+
} catch (error) {
|
|
176
|
+
const message = error instanceof Error ? error.message : String(error)
|
|
177
|
+
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' })
|
|
178
|
+
res.end(`replacement file not found: ${message}`)
|
|
179
|
+
return true
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
try {
|
|
183
|
+
const result = await build({
|
|
184
|
+
entryPoints: [targetPath],
|
|
185
|
+
bundle: true,
|
|
186
|
+
write: false,
|
|
187
|
+
format: 'esm',
|
|
188
|
+
platform: 'browser',
|
|
189
|
+
target: 'es2022',
|
|
190
|
+
jsx: 'transform',
|
|
191
|
+
jsxFactory: 'React.createElement',
|
|
192
|
+
jsxFragment: 'React.Fragment',
|
|
193
|
+
tsconfigRaw: { compilerOptions: { jsx: 'react' } },
|
|
194
|
+
sourcemap: 'inline',
|
|
195
|
+
logLevel: 'silent',
|
|
196
|
+
external: ['react', 'react-native'],
|
|
197
|
+
})
|
|
198
|
+
const bundledCode = result.outputFiles[0]?.text ?? ''
|
|
199
|
+
const hasReactBinding =
|
|
200
|
+
/\bimport\s+(?:\*\s+as\s+React|React(?:\s*,|\s+from)|\{[^}]*\bdefault\s+as\s+React\b)/.test(
|
|
201
|
+
bundledCode,
|
|
202
|
+
)
|
|
203
|
+
const reactImport =
|
|
204
|
+
/\bReact\.(?:createElement|Fragment)\b/.test(bundledCode) && !hasReactBinding
|
|
205
|
+
? `import * as React from '${REPLACEMENT_RUNTIME_PREFIX}/react';\n`
|
|
206
|
+
: ''
|
|
207
|
+
const runtimeCode = (reactImport + bundledCode)
|
|
208
|
+
.replace(
|
|
209
|
+
/from\s*["']react-native["']/g,
|
|
210
|
+
`from '${REPLACEMENT_RUNTIME_PREFIX}/react-native'`,
|
|
211
|
+
)
|
|
212
|
+
.replace(/from\s*["']react["']/g, `from '${REPLACEMENT_RUNTIME_PREFIX}/react'`)
|
|
213
|
+
sendJavaScript(req, res, runtimeCode)
|
|
214
|
+
} catch (error) {
|
|
215
|
+
const message = error instanceof Error ? error.message : String(error)
|
|
216
|
+
res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' })
|
|
217
|
+
res.end(`replacement bundle failed: ${message}`)
|
|
218
|
+
}
|
|
219
|
+
return true
|
|
220
|
+
}
|
package/src/vite-plugin-one.ts
CHANGED
|
@@ -12,6 +12,7 @@ import path from 'path'
|
|
|
12
12
|
import { fileURLToPath } from 'url'
|
|
13
13
|
import { DEFAULT_SOOTSIM_BRIDGE_PORT } from './bridge-constants'
|
|
14
14
|
import { isDaemonLockfileFresh, readDaemonLockfile } from './home-paths'
|
|
15
|
+
import { handleReplacementModuleRequest } from './host/replacement-module-handler'
|
|
15
16
|
import {
|
|
16
17
|
isRootRuntimeAssetPath,
|
|
17
18
|
resolveRuntimeFilePath,
|
|
@@ -123,6 +124,12 @@ export function rnxPlugin(options: RnxPluginOptions = {}): Plugin {
|
|
|
123
124
|
)
|
|
124
125
|
})
|
|
125
126
|
|
|
127
|
+
server.middlewares.use((req, res, next) => {
|
|
128
|
+
void handleReplacementModuleRequest(req, res).then((handled) => {
|
|
129
|
+
if (!handled) next()
|
|
130
|
+
})
|
|
131
|
+
})
|
|
132
|
+
|
|
126
133
|
server.middlewares.use((req, res, next) => {
|
|
127
134
|
const url = req.url || ''
|
|
128
135
|
const pathname = url.split('?')[0]
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a as c}from"./chunk-XIEY6RUY.js";import{a as i}from"./chunk-GGDZMFEK.js";import{a as n}from"./chunk-CIKEBWPF.js";import{createRequire as f}from"node:module";import{createJiti as s}from"jiti";var m=f(import.meta.url);function t(e){return e===void 0||e!==null&&typeof e=="object"&&!Array.isArray(e)}function p(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let o=Reflect.get(e,"runtimeVersion"),r=Reflect.get(e,"network");return(o===void 0||typeof o=="string"&&o===o.trim()&&i(o))&&t(Reflect.get(e,"modules"))&&t(Reflect.get(e,"turboModules"))&&t(Reflect.get(e,"nativeModules"))&&t(Reflect.get(e,"env"))&&t(r)&&t(Reflect.get(e,"settings"))&&t(Reflect.get(e,"initialState"))}async function a(e){if(e?.configPath)try{let r=await s(import.meta.url,{interopDefault:!0,alias:{[`${n.packageName}/config`]:m.resolve(`${n.packageName}/config`)}}).import(e.configPath,{default:!0});if(!p(r))throw new Error("the default export must be an rnx config object");return r}catch(o){let r=o instanceof Error?o.message:String(o);throw new Error(`could not load ${e.configPath}: ${r}`)}}async function R(e=process.cwd()){let o=c(e);return{project:o,config:await a(o)}}export{a,R as b};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a}from"./chunk-5TECC5CJ.js";import"./chunk-CIKEBWPF.js";import"./chunk-KAO5CST7.js";export{a as getCliVersion};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a,b,c,d,e,f}from"./chunk-VYMD42C2.js";import"./chunk-IWXDWYP4.js";import"./chunk-4NYMUV5O.js";import"./chunk-QCDZI56P.js";import"./chunk-GFHGRBLQ.js";import"./chunk-3T22NM6B.js";import"./chunk-QLIPEQVL.js";import"./chunk-ZVHDLFW6.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-KPN5X2PV.js";import"./chunk-CNFXAL6Z.js";import"./chunk-5TECC5CJ.js";import"./chunk-CIKEBWPF.js";import"./chunk-ST4IRWA6.js";import"./chunk-KAO5CST7.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,e as teardownDaemonService,d as teardownLegacyMacDaemonArtifacts,f as teardownSootsimHome};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import"./chunk-QKMCPABX.js";import{a,b,c,d,e,f,g}from"./chunk-RBB3BPRM.js";import"./chunk-VAR4NG7B.js";import"./chunk-SWW36H42.js";import"./chunk-OGSAZBRR.js";import"./chunk-M3SKRWFU.js";import"./chunk-CNFXAL6Z.js";import"./chunk-KAO5CST7.js";export{c as ALL_DRIVERS,g as buildDriverListRows,a as electronDriver,d as getAllDrivers,e as getDriver,b as playwrightDriver,f as resolveDriver};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{c,d,e,f,g,h,i}from"./chunk-2AZOL3UF.js";import"./chunk-7H5BVBSN.js";import"./chunk-Z2RU7GLW.js";import{b as a,c as b}from"./chunk-76QEJTAT.js";import"./chunk-FPQ4EECQ.js";import"./chunk-ROODJ6RF.js";import"./chunk-44PQEV6X.js";import"./chunk-FN3MYVOI.js";import"./chunk-PTDAFVH5.js";import"./chunk-VCYL5IR3.js";import"./chunk-K3JRFYYJ.js";import"./chunk-RBB3BPRM.js";import"./chunk-VAR4NG7B.js";import"./chunk-SWW36H42.js";import"./chunk-7F3ZRIVD.js";import"./chunk-GESUHR5O.js";import"./chunk-UMNOLET5.js";import"./chunk-NG7EAN4Z.js";import"./chunk-XIEY6RUY.js";import"./chunk-PRNSZ6B2.js";import"./chunk-WR3HAW34.js";import"./chunk-76MUKN6C.js";import"./chunk-KTL2LUE5.js";import"./chunk-37CF2HGR.js";import"./chunk-ZE44MQ4K.js";import"./chunk-IWXDWYP4.js";import"./chunk-4NYMUV5O.js";import"./chunk-OGSAZBRR.js";import"./chunk-GGDZMFEK.js";import"./chunk-3T22NM6B.js";import"./chunk-QLIPEQVL.js";import"./chunk-ZVHDLFW6.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-KPN5X2PV.js";import"./chunk-CNFXAL6Z.js";import"./chunk-CIKEBWPF.js";import"./chunk-KAO5CST7.js";export{f as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,h as hoistLeadingSimFlag,a as parseFlowFile,e as resolveAppFrontmatterTarget,g as runFlowPlayback,i as runMaestroAuthoring,b as validateFlowFile};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a,b,c}from"./chunk-QCDZI56P.js";import"./chunk-GFHGRBLQ.js";import"./chunk-3T22NM6B.js";import"./chunk-QLIPEQVL.js";import"./chunk-ZVHDLFW6.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-KPN5X2PV.js";import"./chunk-CNFXAL6Z.js";import"./chunk-5TECC5CJ.js";import"./chunk-CIKEBWPF.js";import"./chunk-ST4IRWA6.js";import"./chunk-KAO5CST7.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{i as a,j as b}from"./chunk-76QEJTAT.js";import"./chunk-FPQ4EECQ.js";import"./chunk-ROODJ6RF.js";import"./chunk-44PQEV6X.js";import"./chunk-FN3MYVOI.js";import"./chunk-PTDAFVH5.js";import"./chunk-VCYL5IR3.js";import"./chunk-K3JRFYYJ.js";import"./chunk-RBB3BPRM.js";import"./chunk-VAR4NG7B.js";import"./chunk-SWW36H42.js";import"./chunk-UMNOLET5.js";import"./chunk-NG7EAN4Z.js";import"./chunk-XIEY6RUY.js";import"./chunk-PRNSZ6B2.js";import"./chunk-WR3HAW34.js";import"./chunk-76MUKN6C.js";import"./chunk-KTL2LUE5.js";import"./chunk-37CF2HGR.js";import"./chunk-ZE44MQ4K.js";import"./chunk-OGSAZBRR.js";import"./chunk-GGDZMFEK.js";import"./chunk-3T22NM6B.js";import"./chunk-QLIPEQVL.js";import"./chunk-ZVHDLFW6.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-KPN5X2PV.js";import"./chunk-CNFXAL6Z.js";import"./chunk-CIKEBWPF.js";import"./chunk-KAO5CST7.js";export{a as printShellPerfReport,b as runInspect};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a}from"./chunk-7WQGK44R.js";import"./chunk-VAR4NG7B.js";import"./chunk-42UB5N4I.js";import"./chunk-KAO5CST7.js";export{a as runInstallDesktop};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{a}from"./chunk-SS6FV24V.js";import"./chunk-WR3HAW34.js";import"./chunk-76MUKN6C.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-CNFXAL6Z.js";import"./chunk-KAO5CST7.js";export{a as runReset};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*! rnx v0.1.339 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import { createRequire as __sootsimCreateRequire } from 'node:module'
|
|
3
|
-
var require = __sootsimCreateRequire(import.meta.url)
|
|
4
|
-
import{c as a}from"./chunk-IV4EVQFA.js";import"./chunk-K3JRFYYJ.js";import"./chunk-XIEY6RUY.js";import"./chunk-GGDZMFEK.js";import"./chunk-AVK2JHMK.js";import"./chunk-M3SKRWFU.js";import"./chunk-CNFXAL6Z.js";import"./chunk-CIKEBWPF.js";import"./chunk-KAO5CST7.js";export{a as runRuntime};
|