rnxsim 0.1.449 → 0.1.451
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/README.md +19 -0
- package/cli/commands/control.ts +9 -3
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +2 -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 +7 -1
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +112 -0
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/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 +16 -5
- package/dist-lib/vite.cjs +1 -1
- package/package.json +8 -1
- package/src/jump-to-source-native.ts +102 -0
package/README.md
CHANGED
|
@@ -310,6 +310,25 @@ outside `node_modules`, `dist`, and `build`. Keep it before
|
|
|
310
310
|
Apps using `babel-preset-expo` omit the explicit Worklets plugin because the
|
|
311
311
|
preset configures it automatically.
|
|
312
312
|
|
|
313
|
+
For One's Rolldown native bundler, use the native transform in `vite.config.ts`:
|
|
314
|
+
|
|
315
|
+
```ts
|
|
316
|
+
import { jumpToSourceNativePlugin } from 'rnxsim/jump-to-source-native'
|
|
317
|
+
|
|
318
|
+
one({
|
|
319
|
+
native: {
|
|
320
|
+
bundler: 'vite',
|
|
321
|
+
bundlerOptions: {
|
|
322
|
+
plugins: [jumpToSourceNativePlugin({ include: [import.meta.dirname] })],
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
})
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
This transform uses the same source props and filters without running Babel.
|
|
329
|
+
For One's `nativeTransformModules`, export
|
|
330
|
+
`createJumpToSourceNativeTransform(options)` from a module and pass its module id.
|
|
331
|
+
|
|
313
332
|
## CLI
|
|
314
333
|
|
|
315
334
|
The CLI is the primary debugging surface for rnx — use it first for runtime
|
package/cli/commands/control.ts
CHANGED
|
@@ -181,7 +181,11 @@ export async function ensureBridgeForOpen(
|
|
|
181
181
|
) {
|
|
182
182
|
return preferredPort
|
|
183
183
|
}
|
|
184
|
+
if (explicitPort && preferredWorld !== null) {
|
|
185
|
+
throw new Error(`rnx open: requested bridge port ${preferredPort} is not reachable.`)
|
|
186
|
+
}
|
|
184
187
|
if (
|
|
188
|
+
!explicitPort &&
|
|
185
189
|
lock &&
|
|
186
190
|
isDaemonLockfileFresh(lock) &&
|
|
187
191
|
(await canConnectToBridge(lock.bridgePort, 500))
|
|
@@ -206,15 +210,17 @@ export async function ensureBridgeForOpen(
|
|
|
206
210
|
while (Date.now() < deadline) {
|
|
207
211
|
const nextLock = readDaemonLockfile()
|
|
208
212
|
assertExplicitBridgeLock(preferredPort, explicitPort, nextLock)
|
|
213
|
+
const selectedPort = explicitPort ? preferredPort : nextLock?.bridgePort
|
|
209
214
|
if (
|
|
210
215
|
nextLock &&
|
|
211
216
|
isDaemonLockfileFresh(nextLock) &&
|
|
212
|
-
|
|
217
|
+
selectedPort !== undefined &&
|
|
218
|
+
(await canConnectToBridge(selectedPort, 250))
|
|
213
219
|
) {
|
|
214
220
|
console.error(
|
|
215
|
-
` Started a local bridge on port ${
|
|
221
|
+
` Started a local bridge on port ${selectedPort}. Run \`rnx daemon install\` to keep it ready between commands.`,
|
|
216
222
|
)
|
|
217
|
-
return
|
|
223
|
+
return selectedPort
|
|
218
224
|
}
|
|
219
225
|
if (childExit) {
|
|
220
226
|
throw new Error(`rnx bridge exited before becoming ready (exit ${childExit})`)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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;
|
|
@@ -580,6 +580,7 @@ function gpuChromeArgs(platform = process.platform) {
|
|
|
580
580
|
}
|
|
581
581
|
var PLAYWRIGHT_DISABLED_FEATURES = [
|
|
582
582
|
"AvoidUnnecessaryBeforeUnloadCheckSync",
|
|
583
|
+
"BlockOriginHeaderModificationOnRedirect",
|
|
583
584
|
"BoundaryEventDispatchTracksNodeRemoval",
|
|
584
585
|
"DestroyProfileOnBrowserClose",
|
|
585
586
|
"DialMediaRouteProvider",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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;
|
|
@@ -2710,6 +2710,12 @@ var init_stub_manifest = __esm({
|
|
|
2710
2710
|
runtimeTier: "core",
|
|
2711
2711
|
buildResolvers: ["vite", "dep-prebundle"]
|
|
2712
2712
|
},
|
|
2713
|
+
assetSourceResolver: {
|
|
2714
|
+
specifier: "react-native/Libraries/Image/AssetSourceResolver",
|
|
2715
|
+
stubFile: "rn-libraries/AssetSourceResolver.ts",
|
|
2716
|
+
runtimeTier: "core",
|
|
2717
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
2718
|
+
},
|
|
2713
2719
|
resolveAssetSource: {
|
|
2714
2720
|
specifier: "react-native/Libraries/Image/resolveAssetSource",
|
|
2715
2721
|
stubFile: "rn-libraries/resolveAssetSource.ts",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
|
+
"use strict";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// src/jump-to-source-native.ts
|
|
33
|
+
var jump_to_source_native_exports = {};
|
|
34
|
+
__export(jump_to_source_native_exports, {
|
|
35
|
+
createJumpToSourceNativeTransform: () => createJumpToSourceNativeTransform,
|
|
36
|
+
default: () => jump_to_source_native_default,
|
|
37
|
+
jumpToSourceNativePlugin: () => jumpToSourceNativePlugin,
|
|
38
|
+
stampJsxSourceLocations: () => stampJsxSourceLocations
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(jump_to_source_native_exports);
|
|
41
|
+
var import_magic_string = __toESM(require("magic-string"), 1);
|
|
42
|
+
var import_oxc_parser = require("oxc-parser");
|
|
43
|
+
function matchesPath(path, matcher) {
|
|
44
|
+
return typeof matcher === "string" ? path.includes(matcher) : matcher.test(path);
|
|
45
|
+
}
|
|
46
|
+
function stampJsxSourceLocations(code, filename, options = {}) {
|
|
47
|
+
if (options.enabled === false || !filename || !code.includes("<")) return null;
|
|
48
|
+
const source = filename.split("?")[0].replace(/\\/g, "/");
|
|
49
|
+
if (source.includes("/node_modules/") || source.includes("/dist/") || source.includes("/build/"))
|
|
50
|
+
return null;
|
|
51
|
+
if (options.exclude?.some((matcher) => matchesPath(source, matcher))) return null;
|
|
52
|
+
if (options.include?.length && !options.include.some((matcher) => matchesPath(source, matcher)))
|
|
53
|
+
return null;
|
|
54
|
+
const { program, errors } = (0, import_oxc_parser.parseSync)(source, code, {
|
|
55
|
+
lang: source.endsWith(".tsx") ? "tsx" : source.endsWith(".ts") ? "ts" : "jsx"
|
|
56
|
+
});
|
|
57
|
+
if (errors.length) return null;
|
|
58
|
+
const attrName = options.attrName || "srcloc";
|
|
59
|
+
const lineStarts = [0];
|
|
60
|
+
for (let i = 0; i < code.length; i++) {
|
|
61
|
+
if (code.charCodeAt(i) === 10) lineStarts.push(i + 1);
|
|
62
|
+
}
|
|
63
|
+
const magic = new import_magic_string.default(code);
|
|
64
|
+
let stamped = false;
|
|
65
|
+
new import_oxc_parser.Visitor({
|
|
66
|
+
JSXOpeningElement(node) {
|
|
67
|
+
const name = node.name;
|
|
68
|
+
if (name.type === "JSXNamespacedName") return;
|
|
69
|
+
if (name.type === "JSXIdentifier" && name.name === "Fragment") return;
|
|
70
|
+
if (name.type === "JSXMemberExpression" && name.property.name === "Fragment") return;
|
|
71
|
+
if (node.attributes.some(
|
|
72
|
+
(attr) => attr.type === "JSXAttribute" && attr.name.type === "JSXIdentifier" && attr.name.name === attrName
|
|
73
|
+
))
|
|
74
|
+
return;
|
|
75
|
+
let lo = 0;
|
|
76
|
+
let hi = lineStarts.length - 1;
|
|
77
|
+
while (lo < hi) {
|
|
78
|
+
const mid = lo + hi + 1 >> 1;
|
|
79
|
+
if (lineStarts[mid] <= node.start) lo = mid;
|
|
80
|
+
else hi = mid - 1;
|
|
81
|
+
}
|
|
82
|
+
const location = `${source}:${lo + 1}:${node.start - lineStarts[lo] + 1}`;
|
|
83
|
+
magic.appendLeft(
|
|
84
|
+
node.end - (node.selfClosing ? 2 : 1),
|
|
85
|
+
` ${attrName}={${JSON.stringify(location)}}`
|
|
86
|
+
);
|
|
87
|
+
stamped = true;
|
|
88
|
+
}
|
|
89
|
+
}).visit(program);
|
|
90
|
+
return stamped ? magic.toString() : null;
|
|
91
|
+
}
|
|
92
|
+
function createJumpToSourceNativeTransform(options = {}) {
|
|
93
|
+
return function jumpToSourceNativeTransform(code, ctx) {
|
|
94
|
+
return stampJsxSourceLocations(code, ctx.filename, options);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function jumpToSourceNativePlugin(options = {}) {
|
|
98
|
+
return {
|
|
99
|
+
name: "sootsim-jump-to-source",
|
|
100
|
+
transform(code, id) {
|
|
101
|
+
const stamped = stampJsxSourceLocations(code, id, options);
|
|
102
|
+
return stamped == null ? null : { code: stamped, map: null };
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
var jump_to_source_native_default = createJumpToSourceNativeTransform();
|
|
107
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
108
|
+
0 && (module.exports = {
|
|
109
|
+
createJumpToSourceNativeTransform,
|
|
110
|
+
jumpToSourceNativePlugin,
|
|
111
|
+
stampJsxSourceLocations
|
|
112
|
+
});
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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;
|
|
@@ -525,6 +525,7 @@ var init_reap_browser = __esm({
|
|
|
525
525
|
signalShutdownClaimed = false;
|
|
526
526
|
PLAYWRIGHT_DISABLED_FEATURES = [
|
|
527
527
|
"AvoidUnnecessaryBeforeUnloadCheckSync",
|
|
528
|
+
"BlockOriginHeaderModificationOnRedirect",
|
|
528
529
|
"BoundaryEventDispatchTracksNodeRemoval",
|
|
529
530
|
"DestroyProfileOnBrowserClose",
|
|
530
531
|
"DialMediaRouteProvider",
|
|
@@ -22291,6 +22292,12 @@ var init_stub_manifest = __esm({
|
|
|
22291
22292
|
runtimeTier: "core",
|
|
22292
22293
|
buildResolvers: ["vite", "dep-prebundle"]
|
|
22293
22294
|
},
|
|
22295
|
+
assetSourceResolver: {
|
|
22296
|
+
specifier: "react-native/Libraries/Image/AssetSourceResolver",
|
|
22297
|
+
stubFile: "rn-libraries/AssetSourceResolver.ts",
|
|
22298
|
+
runtimeTier: "core",
|
|
22299
|
+
buildResolvers: ["vite", "dep-prebundle"]
|
|
22300
|
+
},
|
|
22294
22301
|
resolveAssetSource: {
|
|
22295
22302
|
specifier: "react-native/Libraries/Image/resolveAssetSource",
|
|
22296
22303
|
stubFile: "rn-libraries/resolveAssetSource.ts",
|
|
@@ -29442,7 +29449,10 @@ async function ensureBridgeForOpen(preferredPort, explicitPort = false) {
|
|
|
29442
29449
|
if ((explicitPort || preferredWorld !== null) && await canConnectToBridge(preferredPort, 250)) {
|
|
29443
29450
|
return preferredPort;
|
|
29444
29451
|
}
|
|
29445
|
-
if (
|
|
29452
|
+
if (explicitPort && preferredWorld !== null) {
|
|
29453
|
+
throw new Error(`rnx open: requested bridge port ${preferredPort} is not reachable.`);
|
|
29454
|
+
}
|
|
29455
|
+
if (!explicitPort && lock && isDaemonLockfileFresh(lock) && await canConnectToBridge(lock.bridgePort, 500)) {
|
|
29446
29456
|
return lock.bridgePort;
|
|
29447
29457
|
}
|
|
29448
29458
|
if (lock && isDaemonLockfileFresh(lock)) {
|
|
@@ -29461,11 +29471,12 @@ async function ensureBridgeForOpen(preferredPort, explicitPort = false) {
|
|
|
29461
29471
|
while (Date.now() < deadline) {
|
|
29462
29472
|
const nextLock = readDaemonLockfile();
|
|
29463
29473
|
assertExplicitBridgeLock(preferredPort, explicitPort, nextLock);
|
|
29464
|
-
|
|
29474
|
+
const selectedPort = explicitPort ? preferredPort : nextLock?.bridgePort;
|
|
29475
|
+
if (nextLock && isDaemonLockfileFresh(nextLock) && selectedPort !== void 0 && await canConnectToBridge(selectedPort, 250)) {
|
|
29465
29476
|
console.error(
|
|
29466
|
-
` Started a local bridge on port ${
|
|
29477
|
+
` Started a local bridge on port ${selectedPort}. Run \`rnx daemon install\` to keep it ready between commands.`
|
|
29467
29478
|
);
|
|
29468
|
-
return
|
|
29479
|
+
return selectedPort;
|
|
29469
29480
|
}
|
|
29470
29481
|
if (childExit) {
|
|
29471
29482
|
throw new Error(`rnx bridge exited before becoming ready (exit ${childExit})`);
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.451 | (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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rnxsim",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.451",
|
|
4
4
|
"description": "Vite and Metro plugins, testing drivers, and SDK exports for rnx.",
|
|
5
5
|
"author": "Tamagui LLC",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -63,6 +63,11 @@
|
|
|
63
63
|
"source": "./src/jump-to-source-babel.ts",
|
|
64
64
|
"default": "./dist-lib/jump-to-source-babel.cjs"
|
|
65
65
|
},
|
|
66
|
+
"./jump-to-source-native": {
|
|
67
|
+
"types": "./src/jump-to-source-native.ts",
|
|
68
|
+
"source": "./src/jump-to-source-native.ts",
|
|
69
|
+
"default": "./dist-lib/jump-to-source-native.cjs"
|
|
70
|
+
},
|
|
66
71
|
"./menu": {
|
|
67
72
|
"source": "./src/menu.ts",
|
|
68
73
|
"bun": "./src/menu.ts",
|
|
@@ -239,6 +244,8 @@
|
|
|
239
244
|
"dependencies": {
|
|
240
245
|
"@expo/plist": "^0.5.4",
|
|
241
246
|
"jiti": "2.7.0",
|
|
247
|
+
"magic-string": "^0.30.21",
|
|
248
|
+
"oxc-parser": "^0.112.0",
|
|
242
249
|
"playwright-core": "1.61.0",
|
|
243
250
|
"sucrase": "3.35.1",
|
|
244
251
|
"terser": "^5.49.0",
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import MagicString from 'magic-string'
|
|
2
|
+
import { parseSync, Visitor } from 'oxc-parser'
|
|
3
|
+
import type { SootsimJumpToSourceBabelOptions } from './jump-to-source-babel'
|
|
4
|
+
|
|
5
|
+
export type JumpToSourceNativeOptions = SootsimJumpToSourceBabelOptions
|
|
6
|
+
|
|
7
|
+
function matchesPath(path: string, matcher: string | RegExp): boolean {
|
|
8
|
+
return typeof matcher === 'string' ? path.includes(matcher) : matcher.test(path)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// stamp the same one-based source locations as the babel plugin before native
|
|
12
|
+
// jsx compilation, without running babel in the native bundle pipeline.
|
|
13
|
+
export function stampJsxSourceLocations(
|
|
14
|
+
code: string,
|
|
15
|
+
filename: string,
|
|
16
|
+
options: JumpToSourceNativeOptions = {},
|
|
17
|
+
): string | null {
|
|
18
|
+
if (options.enabled === false || !filename || !code.includes('<')) return null
|
|
19
|
+
const source = filename.split('?')[0].replace(/\\/g, '/')
|
|
20
|
+
if (
|
|
21
|
+
source.includes('/node_modules/') ||
|
|
22
|
+
source.includes('/dist/') ||
|
|
23
|
+
source.includes('/build/')
|
|
24
|
+
)
|
|
25
|
+
return null
|
|
26
|
+
if (options.exclude?.some((matcher) => matchesPath(source, matcher))) return null
|
|
27
|
+
if (
|
|
28
|
+
options.include?.length &&
|
|
29
|
+
!options.include.some((matcher) => matchesPath(source, matcher))
|
|
30
|
+
)
|
|
31
|
+
return null
|
|
32
|
+
|
|
33
|
+
const { program, errors } = parseSync(source, code, {
|
|
34
|
+
lang: source.endsWith('.tsx') ? 'tsx' : source.endsWith('.ts') ? 'ts' : 'jsx',
|
|
35
|
+
})
|
|
36
|
+
if (errors.length) return null
|
|
37
|
+
|
|
38
|
+
const attrName = options.attrName || 'srcloc'
|
|
39
|
+
const lineStarts = [0]
|
|
40
|
+
for (let i = 0; i < code.length; i++) {
|
|
41
|
+
if (code.charCodeAt(i) === 10) lineStarts.push(i + 1)
|
|
42
|
+
}
|
|
43
|
+
const magic = new MagicString(code)
|
|
44
|
+
let stamped = false
|
|
45
|
+
new Visitor({
|
|
46
|
+
JSXOpeningElement(node) {
|
|
47
|
+
const name = node.name
|
|
48
|
+
if (name.type === 'JSXNamespacedName') return
|
|
49
|
+
if (name.type === 'JSXIdentifier' && name.name === 'Fragment') return
|
|
50
|
+
if (name.type === 'JSXMemberExpression' && name.property.name === 'Fragment') return
|
|
51
|
+
if (
|
|
52
|
+
node.attributes.some(
|
|
53
|
+
(attr) =>
|
|
54
|
+
attr.type === 'JSXAttribute' &&
|
|
55
|
+
attr.name.type === 'JSXIdentifier' &&
|
|
56
|
+
attr.name.name === attrName,
|
|
57
|
+
)
|
|
58
|
+
)
|
|
59
|
+
return
|
|
60
|
+
|
|
61
|
+
// binary search keeps location lookup logarithmic for large source files.
|
|
62
|
+
let lo = 0
|
|
63
|
+
let hi = lineStarts.length - 1
|
|
64
|
+
while (lo < hi) {
|
|
65
|
+
const mid = (lo + hi + 1) >> 1
|
|
66
|
+
if (lineStarts[mid] <= node.start) lo = mid
|
|
67
|
+
else hi = mid - 1
|
|
68
|
+
}
|
|
69
|
+
const location = `${source}:${lo + 1}:${node.start - lineStarts[lo] + 1}`
|
|
70
|
+
// append after spreads, matching babel's precedence. a jsx expression
|
|
71
|
+
// preserves path characters that a quoted jsx attribute would decode.
|
|
72
|
+
magic.appendLeft(
|
|
73
|
+
node.end - (node.selfClosing ? 2 : 1),
|
|
74
|
+
` ${attrName}={${JSON.stringify(location)}}`,
|
|
75
|
+
)
|
|
76
|
+
stamped = true
|
|
77
|
+
},
|
|
78
|
+
}).visit(program)
|
|
79
|
+
return stamped ? magic.toString() : null
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// metro's nativeTransformModules accepts module ids; consumers can export an
|
|
83
|
+
// instance of this transform from a module to supply their include filters.
|
|
84
|
+
export function createJumpToSourceNativeTransform(
|
|
85
|
+
options: JumpToSourceNativeOptions = {},
|
|
86
|
+
) {
|
|
87
|
+
return function jumpToSourceNativeTransform(code: string, ctx: { filename: string }) {
|
|
88
|
+
return stampJsxSourceLocations(code, ctx.filename, options)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function jumpToSourceNativePlugin(options: JumpToSourceNativeOptions = {}) {
|
|
93
|
+
return {
|
|
94
|
+
name: 'sootsim-jump-to-source',
|
|
95
|
+
transform(code: string, id: string) {
|
|
96
|
+
const stamped = stampJsxSourceLocations(code, id, options)
|
|
97
|
+
return stamped == null ? null : { code: stamped, map: null }
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export default createJumpToSourceNativeTransform()
|