rnxsim 0.1.363 → 0.1.365
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/outbound-endpoints.ts +2 -6
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-EN7USQWO.js → agent-BVMNQFKF.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-4K2P2EBF.js → agent-wrapper-B6YFXGC3.js} +2 -2
- package/dist-cli/chunks/app-fonts-MEI6R6XR.js +4 -0
- package/dist-cli/chunks/{assert-WEQDRDJ2.js → assert-JGHI53HV.js} +2 -2
- package/dist-cli/chunks/{auth-U5GBY5SE.js → auth-STEOXUS7.js} +2 -2
- package/dist-cli/chunks/{beta-WOKLQLOJ.js → beta-HT3FLS5T.js} +2 -2
- package/dist-cli/chunks/{camera-GRMP2HT3.js → camera-ZCLFSLON.js} +2 -2
- package/dist-cli/chunks/{chunk-TIZP26F4.js → chunk-25BTVHK2.js} +2 -2
- package/dist-cli/chunks/{chunk-YFF6YFYJ.js → chunk-2CXHDTQ5.js} +1 -1
- package/dist-cli/chunks/{chunk-TK4ZQQAL.js → chunk-2JFZ5Z7Q.js} +1 -1
- package/dist-cli/chunks/{chunk-QVUS7OHN.js → chunk-2SFMW5K6.js} +1 -1
- package/dist-cli/chunks/{chunk-6BGR523F.js → chunk-4WFN4DFR.js} +2 -2
- package/dist-cli/chunks/{chunk-4QK74NWP.js → chunk-52ES4API.js} +2 -2
- package/dist-cli/chunks/{chunk-FFWDCXTD.js → chunk-5AS7S6HY.js} +2 -2
- package/dist-cli/chunks/{chunk-SIKPB3GL.js → chunk-5VHWQGGF.js} +1 -1
- package/dist-cli/chunks/{chunk-GLYEL265.js → chunk-622E4JET.js} +1 -1
- package/dist-cli/chunks/{chunk-DK764ET6.js → chunk-67ATAITF.js} +2 -2
- package/dist-cli/chunks/{chunk-2AELGO56.js → chunk-6BAF6GFS.js} +1 -1
- package/dist-cli/chunks/{chunk-ZSFETJZV.js → chunk-BGRGP3QR.js} +1 -1
- package/dist-cli/chunks/{chunk-7CT75XQF.js → chunk-CYIE65QN.js} +1 -1
- package/dist-cli/chunks/{chunk-PDGEVGHU.js → chunk-DBJZUCFP.js} +2 -2
- package/dist-cli/chunks/{chunk-KCHXGTYQ.js → chunk-DQFOHIRF.js} +1 -1
- package/dist-cli/chunks/{chunk-MOC4QX3B.js → chunk-EAFKG5R3.js} +2 -2
- package/dist-cli/chunks/{chunk-DFL5AISK.js → chunk-EFL2ASZO.js} +1 -1
- package/dist-cli/chunks/{chunk-GMW6T2K6.js → chunk-EFXNSJ55.js} +2 -2
- package/dist-cli/chunks/{chunk-NUU3SWLR.js → chunk-EVBQDQVY.js} +1 -1
- package/dist-cli/chunks/{chunk-X2ITJOHZ.js → chunk-FHWZPUGC.js} +1 -1
- package/dist-cli/chunks/{chunk-23MIH7SN.js → chunk-FIXRGPUT.js} +1 -1
- package/dist-cli/chunks/{chunk-EAXYIY5U.js → chunk-GK7PGYFH.js} +1 -1
- package/dist-cli/chunks/{chunk-BPYGMBOL.js → chunk-GZEUDDAW.js} +2 -2
- package/dist-cli/chunks/{chunk-WIV5YAQT.js → chunk-HIDS3PYC.js} +2 -2
- package/dist-cli/chunks/{chunk-WYD5DEEU.js → chunk-IWPS3EKJ.js} +2 -2
- package/dist-cli/chunks/{chunk-5N5BWVZK.js → chunk-J66US2OZ.js} +1 -1
- package/dist-cli/chunks/{chunk-MM2XAXTN.js → chunk-JAFF4RAU.js} +1 -1
- package/dist-cli/chunks/{chunk-GKKO7RE2.js → chunk-JRPU5TFI.js} +3 -3
- package/dist-cli/chunks/{chunk-ZSLOAO3P.js → chunk-M5KJCLUW.js} +3 -3
- package/dist-cli/chunks/{chunk-4ZGUXZ6U.js → chunk-MACI34ST.js} +3 -3
- package/dist-cli/chunks/chunk-MCHKBFUL.js +4 -0
- package/dist-cli/chunks/{chunk-42O6RKCS.js → chunk-MR3YPNUI.js} +2 -2
- package/dist-cli/chunks/{chunk-QXBFDUCQ.js → chunk-MRNW4GVL.js} +2 -2
- package/dist-cli/chunks/{chunk-VXN2HAHP.js → chunk-NEH4T67X.js} +2 -2
- package/dist-cli/chunks/{chunk-ZCHCE6WJ.js → chunk-O2ORLK6W.js} +2 -2
- package/dist-cli/chunks/{chunk-KWFRIVXW.js → chunk-O6P4N2JD.js} +2 -2
- package/dist-cli/chunks/{chunk-BWTDQWRB.js → chunk-OSZ5HZSI.js} +2 -2
- package/dist-cli/chunks/{chunk-HJN6LXR5.js → chunk-QIQL7Y5V.js} +2 -2
- package/dist-cli/chunks/{chunk-LV4BJLQU.js → chunk-R4FQZXJC.js} +2 -2
- package/dist-cli/chunks/{chunk-74RRQIWF.js → chunk-RI3NS77J.js} +1 -1
- package/dist-cli/chunks/{chunk-BAPVTWIM.js → chunk-TKCGP3DD.js} +2 -2
- package/dist-cli/chunks/{chunk-S6CNNXSR.js → chunk-TULWPOAY.js} +2 -2
- package/dist-cli/chunks/{chunk-FADHHMJU.js → chunk-UR345KM3.js} +2 -2
- package/dist-cli/chunks/{chunk-IY2WWLFH.js → chunk-W3UIDI3W.js} +2 -2
- package/dist-cli/chunks/{chunk-FNVWTY57.js → chunk-WGNDJARS.js} +1 -1
- package/dist-cli/chunks/{chunk-XYPCBRGY.js → chunk-X5ZOZVHC.js} +1 -1
- package/dist-cli/chunks/{chunk-HGPDQPIG.js → chunk-XKRUNS7A.js} +2 -2
- package/dist-cli/chunks/{chunk-FAWMDCMJ.js → chunk-XPOTXF5Q.js} +2 -2
- package/dist-cli/chunks/{chunk-WPXQ7CNQ.js → chunk-XR4KID25.js} +2 -2
- package/dist-cli/chunks/{chunk-AGUR7LE7.js → chunk-XRO5WQXP.js} +1 -1
- package/dist-cli/chunks/{chunk-YSLE3K2S.js → chunk-XXNPISER.js} +2 -2
- package/dist-cli/chunks/{chunk-PH4W36KI.js → chunk-YE3M3YD4.js} +3 -3
- package/dist-cli/chunks/{chunk-46BMZYP7.js → chunk-ZCP4CRP6.js} +2 -2
- package/dist-cli/chunks/{chunk-KJ5SZIXX.js → chunk-ZGD7GZRI.js} +2 -2
- package/dist-cli/chunks/{chunk-2IVWNQDE.js → chunk-ZGH5U4AJ.js} +2 -2
- package/dist-cli/chunks/{chunk-4CMRJ7UX.js → chunk-ZTWUNK45.js} +2 -2
- package/dist-cli/chunks/{cleanup-ZVQLJLTY.js → cleanup-G4TEYVKY.js} +2 -2
- package/dist-cli/chunks/cli-version-ZM3PVKQ5.js +4 -0
- package/dist-cli/chunks/{compat-7T2VZZDL.js → compat-EZ5NP32J.js} +2 -2
- package/dist-cli/chunks/{config-E7OULENQ.js → config-27M2DGCS.js} +2 -2
- package/dist-cli/chunks/{control-X5O5UXPP.js → control-4QR43FXV.js} +2 -2
- package/dist-cli/chunks/daemon-2U4CJ6AT.js +4 -0
- package/dist-cli/chunks/{debug-LK6GRYHR.js → debug-EXU3D7PC.js} +3 -3
- package/dist-cli/chunks/{desktop-2LAHHUP6.js → desktop-SHHPZAWQ.js} +3 -3
- package/dist-cli/chunks/{detox-7GF6V6E6.js → detox-RQ6FFSBS.js} +2 -2
- package/dist-cli/chunks/{device-G3IF4IRA.js → device-4NI26HG6.js} +2 -2
- package/dist-cli/chunks/{diagnose-6G2RJWVP.js → diagnose-P4SFXH6J.js} +2 -2
- package/dist-cli/chunks/{disk-cleanup-PRAJROKV.js → disk-cleanup-BUAKWYMY.js} +2 -2
- package/dist-cli/chunks/drivers-OVCUPQTM.js +4 -0
- package/dist-cli/chunks/{film-CGVAWXPR.js → film-Y2BAQINB.js} +3 -3
- package/dist-cli/chunks/flow-ELTLKKZ3.js +4 -0
- package/dist-cli/chunks/help-CDEZAG2L.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-FCDWZQM3.js → hidden-runtime-alias-U2MAY2XV.js} +2 -2
- package/dist-cli/chunks/{home-paths-JEUBFYPY.js → home-paths-PAJMZCOS.js} +2 -2
- package/dist-cli/chunks/inspect-VVQRPJLS.js +4 -0
- package/dist-cli/chunks/install-desktop-YXSRKR35.js +4 -0
- package/dist-cli/chunks/{login-HBPZL3QX.js → login-D53XKBEO.js} +2 -2
- package/dist-cli/chunks/{logout-SVBZGGEI.js → logout-HZQKLNUJ.js} +2 -2
- package/dist-cli/chunks/{maestro-445CMWSH.js → maestro-XSS2KX6L.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-4JWKONR2.js → maestro-generate-DNDQX3JQ.js} +3 -3
- package/dist-cli/chunks/{mode-M6GVNTDZ.js → mode-LEVGOKI3.js} +2 -2
- package/dist-cli/chunks/{optional-demo-registry-Q5CATNHD.js → optional-demo-registry-2XZIJNDG.js} +2 -2
- package/dist-cli/chunks/{perf-MBNYDE6X.js → perf-OKMAXDLB.js} +2 -2
- package/dist-cli/chunks/{permissions-HNLQIZJD.js → permissions-VG5TBUTN.js} +2 -2
- package/dist-cli/chunks/privacy-MNRHREME.js +4 -0
- package/dist-cli/chunks/{record-MH3BLHON.js → record-BQYGZOMV.js} +3 -3
- package/dist-cli/chunks/{report-issue-6HQHCFBG.js → report-issue-HCPZESWE.js} +2 -2
- package/dist-cli/chunks/reset-R4E4W4YI.js +4 -0
- package/dist-cli/chunks/runtime-XRQZ7W34.js +4 -0
- package/dist-cli/chunks/{screenshot-command-D6VS6GDA.js → screenshot-command-DWEYPJE7.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-MC7JHOO2.js → screenshot-layers-5GMBXLO7.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-PUQTDG5I.js → screenshots-capture-5KCI7IZD.js} +2 -2
- package/dist-cli/chunks/serve-QNKTA2HR.js +56 -0
- package/dist-cli/chunks/setup-RNMM5GO5.js +4 -0
- package/dist-cli/chunks/{skills-IJDXM6IC.js → skills-DOEALD3X.js} +2 -2
- package/dist-cli/chunks/{state-KCBXBFZZ.js → state-3HH2IHIF.js} +2 -2
- package/dist-cli/chunks/{storage-RBYDWRJC.js → storage-E7WUWN3E.js} +2 -2
- package/dist-cli/chunks/store-HUPZUCFG.js +4 -0
- package/dist-cli/chunks/telemetry-IJ53XR2Y.js +4 -0
- package/dist-cli/chunks/{timeline-RPEEEB3A.js → timeline-IKNUGQ2A.js} +2 -2
- package/dist-cli/chunks/{upgrade-TFLWCW3P.js → upgrade-VS3OKXE2.js} +2 -2
- package/dist-cli/chunks/upload-A57NAAHF.js +4 -0
- package/dist-cli/chunks/{version-LHPE2VT4.js → version-F4XHNTBZ.js} +2 -2
- package/dist-cli/chunks/{web-QJ74GCNZ.js → web-F72724QL.js} +2 -2
- package/dist-cli/chunks/welcome-B72RRMBW.js +5 -0
- package/dist-cli/chunks/{what-happened-JXBBC5U7.js → what-happened-APK7YKOV.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 +89 -154
- package/dist-lib/host/fetch-proxy-handler.cjs +36 -3
- 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 +60 -107
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +60 -105
- 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 +60 -105
- 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 +126 -189
- package/dist-lib/vite.cjs +59 -104
- package/package.json +1 -1
- package/src/host/bridge-host.ts +2 -50
- package/src/host/fetch-proxy-handler.ts +40 -3
- package/src/host/replacement-module-handler.ts +65 -117
- package/dist-cli/chunks/app-fonts-7B5E7UDM.js +0 -4
- package/dist-cli/chunks/chunk-FQGTATLA.js +0 -4
- package/dist-cli/chunks/cli-version-KAVMACHT.js +0 -4
- package/dist-cli/chunks/daemon-GEDFARBC.js +0 -4
- package/dist-cli/chunks/drivers-4WSF4T4I.js +0 -4
- package/dist-cli/chunks/flow-MEDCS46T.js +0 -4
- package/dist-cli/chunks/help-KOAHGOH4.js +0 -4
- package/dist-cli/chunks/inspect-IU5HFVKF.js +0 -4
- package/dist-cli/chunks/install-desktop-5Q2WB4QO.js +0 -4
- package/dist-cli/chunks/privacy-UL6QT67W.js +0 -4
- package/dist-cli/chunks/reset-GHLOGMF3.js +0 -4
- package/dist-cli/chunks/runtime-JK43NPS6.js +0 -4
- package/dist-cli/chunks/serve-4UDVILST.js +0 -118
- package/dist-cli/chunks/setup-5IHFDPBA.js +0 -4
- package/dist-cli/chunks/store-O2PYGAXL.js +0 -4
- package/dist-cli/chunks/telemetry-B2CPDQID.js +0 -4
- package/dist-cli/chunks/upload-2GJWZG6R.js +0 -4
- package/dist-cli/chunks/welcome-5XJPBRJD.js +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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;
|
|
@@ -33,7 +33,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
33
33
|
var replacement_module_handler_exports = {};
|
|
34
34
|
__export(replacement_module_handler_exports, {
|
|
35
35
|
REPLACEMENT_MODULE_ROUTE: () => REPLACEMENT_MODULE_ROUTE,
|
|
36
|
-
REPLACEMENT_RUNTIME_PREFIX: () => REPLACEMENT_RUNTIME_PREFIX,
|
|
37
36
|
handleReplacementModuleRequest: () => handleReplacementModuleRequest,
|
|
38
37
|
isReplacementModuleRequestUrl: () => isReplacementModuleRequestUrl
|
|
39
38
|
});
|
|
@@ -53,7 +52,6 @@ function isLoopbackHost(hostname) {
|
|
|
53
52
|
|
|
54
53
|
// src/host/replacement-module-handler.ts
|
|
55
54
|
var REPLACEMENT_MODULE_ROUTE = "/__sootsim-replacement-module";
|
|
56
|
-
var REPLACEMENT_RUNTIME_PREFIX = "/__sootsim-replacement-runtime";
|
|
57
55
|
function getReplacementLoader(filePath) {
|
|
58
56
|
const ext = import_node_path.default.extname(filePath).toLowerCase();
|
|
59
57
|
switch (ext) {
|
|
@@ -69,88 +67,6 @@ function getReplacementLoader(filePath) {
|
|
|
69
67
|
return null;
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
|
-
function reactRuntimeSource(reactBridgeUrl) {
|
|
73
|
-
if (reactBridgeUrl) {
|
|
74
|
-
return `export * from ${JSON.stringify(reactBridgeUrl)};
|
|
75
|
-
import React from ${JSON.stringify(reactBridgeUrl)};
|
|
76
|
-
export default React;
|
|
77
|
-
`;
|
|
78
|
-
}
|
|
79
|
-
return `const bridge = globalThis.__sootsim_react_bridge
|
|
80
|
-
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
81
|
-
export default bridge.default
|
|
82
|
-
export const Activity = bridge.Activity
|
|
83
|
-
export const Children = bridge.Children
|
|
84
|
-
export const Component = bridge.Component
|
|
85
|
-
export const Fragment = bridge.Fragment
|
|
86
|
-
export const Profiler = bridge.Profiler
|
|
87
|
-
export const PureComponent = bridge.PureComponent
|
|
88
|
-
export const StrictMode = bridge.StrictMode
|
|
89
|
-
export const Suspense = bridge.Suspense
|
|
90
|
-
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
|
|
91
|
-
export const __COMPILER_RUNTIME = bridge.__COMPILER_RUNTIME
|
|
92
|
-
export const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = bridge.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
93
|
-
export const act = bridge.act
|
|
94
|
-
export const cache = bridge.cache
|
|
95
|
-
export const cacheSignal = bridge.cacheSignal
|
|
96
|
-
export const captureOwnerStack = bridge.captureOwnerStack
|
|
97
|
-
export const cloneElement = bridge.cloneElement
|
|
98
|
-
export const createContext = bridge.createContext
|
|
99
|
-
export const createElement = bridge.createElement
|
|
100
|
-
export const createRef = bridge.createRef
|
|
101
|
-
export const forwardRef = bridge.forwardRef
|
|
102
|
-
export const isValidElement = bridge.isValidElement
|
|
103
|
-
export const lazy = bridge.lazy
|
|
104
|
-
export const memo = bridge.memo
|
|
105
|
-
export const startTransition = bridge.startTransition
|
|
106
|
-
export const unstable_useCacheRefresh = bridge.unstable_useCacheRefresh
|
|
107
|
-
export const use = bridge.use
|
|
108
|
-
export const useActionState = bridge.useActionState
|
|
109
|
-
export const useCallback = bridge.useCallback
|
|
110
|
-
export const useContext = bridge.useContext
|
|
111
|
-
export const useDebugValue = bridge.useDebugValue
|
|
112
|
-
export const useDeferredValue = bridge.useDeferredValue
|
|
113
|
-
export const useEffect = bridge.useEffect
|
|
114
|
-
export const useEffectEvent = bridge.useEffectEvent
|
|
115
|
-
export const useId = bridge.useId
|
|
116
|
-
export const useImperativeHandle = bridge.useImperativeHandle
|
|
117
|
-
export const useInsertionEffect = bridge.useInsertionEffect
|
|
118
|
-
export const useLayoutEffect = bridge.useLayoutEffect
|
|
119
|
-
export const useMemo = bridge.useMemo
|
|
120
|
-
export const useOptimistic = bridge.useOptimistic
|
|
121
|
-
export const useReducer = bridge.useReducer
|
|
122
|
-
export const useRef = bridge.useRef
|
|
123
|
-
export const useState = bridge.useState
|
|
124
|
-
export const useSyncExternalStore = bridge.useSyncExternalStore
|
|
125
|
-
export const useTransition = bridge.useTransition
|
|
126
|
-
export const version = bridge.version
|
|
127
|
-
`;
|
|
128
|
-
}
|
|
129
|
-
function reactNativeRuntimeSource() {
|
|
130
|
-
return `const rn = globalThis.__sootsim_components__ || {}
|
|
131
|
-
export default rn
|
|
132
|
-
export const View = rn.View
|
|
133
|
-
export const Text = rn.Text
|
|
134
|
-
export const Image = rn.Image
|
|
135
|
-
export const ScrollView = rn.ScrollView
|
|
136
|
-
export const FlatList = rn.FlatList
|
|
137
|
-
export const Pressable = rn.Pressable
|
|
138
|
-
export const TouchableOpacity = rn.TouchableOpacity
|
|
139
|
-
export const TouchableWithoutFeedback = rn.TouchableWithoutFeedback
|
|
140
|
-
export const TouchableHighlight = rn.TouchableHighlight
|
|
141
|
-
export const TextInput = rn.TextInput
|
|
142
|
-
export const ActivityIndicator = rn.ActivityIndicator
|
|
143
|
-
export const KeyboardAvoidingView = rn.KeyboardAvoidingView
|
|
144
|
-
export const Button = rn.Button
|
|
145
|
-
export const Modal = rn.Modal
|
|
146
|
-
export const Switch = rn.Switch
|
|
147
|
-
export const StyleSheet = rn.StyleSheet
|
|
148
|
-
export const Platform = rn.Platform
|
|
149
|
-
export const Keyboard = rn.Keyboard
|
|
150
|
-
export const Dimensions = rn.Dimensions
|
|
151
|
-
export const Appearance = rn.Appearance
|
|
152
|
-
`;
|
|
153
|
-
}
|
|
154
70
|
function sendJavaScript(req, res, source) {
|
|
155
71
|
const origin = req.headers.origin;
|
|
156
72
|
let allowedOrigin;
|
|
@@ -171,7 +87,7 @@ function isReplacementModuleRequestUrl(rawUrl) {
|
|
|
171
87
|
if (!rawUrl) return false;
|
|
172
88
|
try {
|
|
173
89
|
const pathname = new URL(rawUrl, "http://rnx.local").pathname;
|
|
174
|
-
return pathname === REPLACEMENT_MODULE_ROUTE
|
|
90
|
+
return pathname === REPLACEMENT_MODULE_ROUTE;
|
|
175
91
|
} catch {
|
|
176
92
|
return false;
|
|
177
93
|
}
|
|
@@ -201,14 +117,6 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
201
117
|
return true;
|
|
202
118
|
}
|
|
203
119
|
}
|
|
204
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react`) {
|
|
205
|
-
sendJavaScript(req, res, reactRuntimeSource(options.reactBridgeUrl));
|
|
206
|
-
return true;
|
|
207
|
-
}
|
|
208
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react-native`) {
|
|
209
|
-
sendJavaScript(req, res, reactNativeRuntimeSource());
|
|
210
|
-
return true;
|
|
211
|
-
}
|
|
212
120
|
if (url.pathname !== REPLACEMENT_MODULE_ROUTE) return false;
|
|
213
121
|
if (options.requestToken && url.searchParams.get("token") !== options.requestToken) {
|
|
214
122
|
res.writeHead(403, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -232,6 +140,7 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
232
140
|
res.end("replacement file path must be absolute");
|
|
233
141
|
return true;
|
|
234
142
|
}
|
|
143
|
+
const runtimePackages = new Set(url.searchParams.getAll("runtimePackage"));
|
|
235
144
|
let resolvedProjectRoot;
|
|
236
145
|
if (options.projectRoot) {
|
|
237
146
|
const lexicalProjectRoot = import_node_path.default.resolve(options.projectRoot);
|
|
@@ -274,19 +183,64 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
274
183
|
tsconfigRaw: { compilerOptions: { jsx: "react" } },
|
|
275
184
|
sourcemap: "inline",
|
|
276
185
|
logLevel: "silent",
|
|
277
|
-
|
|
186
|
+
plugins: [
|
|
187
|
+
{
|
|
188
|
+
name: "sootsim-replacement-runtime",
|
|
189
|
+
setup(runtimeBuild) {
|
|
190
|
+
runtimeBuild.onResolve(
|
|
191
|
+
{
|
|
192
|
+
filter: /^(react|react-native|react\/jsx-runtime|react\/jsx-dev-runtime)$/
|
|
193
|
+
},
|
|
194
|
+
(args) => ({ path: args.path, namespace: "sootsim-replacement-runtime" })
|
|
195
|
+
);
|
|
196
|
+
runtimeBuild.onResolve(
|
|
197
|
+
{ filter: /.*/ },
|
|
198
|
+
(args) => runtimePackages.has(args.path) ? { path: args.path, namespace: "sootsim-replacement-runtime" } : void 0
|
|
199
|
+
);
|
|
200
|
+
runtimeBuild.onLoad(
|
|
201
|
+
{ filter: /.*/, namespace: "sootsim-replacement-runtime" },
|
|
202
|
+
(args) => {
|
|
203
|
+
if (args.path === "react-native") {
|
|
204
|
+
return {
|
|
205
|
+
contents: `const bridge = globalThis.__sootsim_components__
|
|
206
|
+
if (!bridge) throw new Error('[rnx] replacement React Native bridge is not ready')
|
|
207
|
+
module.exports = bridge`,
|
|
208
|
+
loader: "js"
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (args.path === "react") {
|
|
212
|
+
return {
|
|
213
|
+
contents: `const bridge = globalThis.__sootsim_react_bridge
|
|
214
|
+
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
215
|
+
module.exports = bridge`,
|
|
216
|
+
loader: "js"
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
if (args.path !== "react/jsx-runtime" && args.path !== "react/jsx-dev-runtime") {
|
|
220
|
+
return {
|
|
221
|
+
contents: `const packages = globalThis.__sootsim_config_package_modules
|
|
222
|
+
const bridge = packages?.[${JSON.stringify(args.path)}]
|
|
223
|
+
if (!bridge) throw new Error(${JSON.stringify(`[rnx] replacement package bridge ${args.path} is not ready`)})
|
|
224
|
+
module.exports = bridge`,
|
|
225
|
+
loader: "js"
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
contents: `const React = globalThis.__sootsim_react_bridge
|
|
230
|
+
if (!React) throw new Error('[rnx] replacement React bridge is not ready')
|
|
231
|
+
exports.Fragment = React.Fragment
|
|
232
|
+
exports.jsx = (type, props, key) => React.createElement(type, key === undefined ? props : { ...props, key })
|
|
233
|
+
exports.jsxs = exports.jsx
|
|
234
|
+
exports.jsxDEV = exports.jsx`,
|
|
235
|
+
loader: "js"
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
]
|
|
278
242
|
});
|
|
279
|
-
|
|
280
|
-
const hasReactBinding = /\bimport\s+(?:\*\s+as\s+React|React(?:\s*,|\s+from)|\{[^}]*\bdefault\s+as\s+React\b)/.test(
|
|
281
|
-
bundledCode
|
|
282
|
-
);
|
|
283
|
-
const reactImport = /\bReact\.(?:createElement|Fragment)\b/.test(bundledCode) && !hasReactBinding ? `import * as React from '${REPLACEMENT_RUNTIME_PREFIX}/react';
|
|
284
|
-
` : "";
|
|
285
|
-
const runtimeCode = (reactImport + bundledCode).replace(
|
|
286
|
-
/from\s*["']react-native["']/g,
|
|
287
|
-
`from '${REPLACEMENT_RUNTIME_PREFIX}/react-native'`
|
|
288
|
-
).replace(/from\s*["']react["']/g, `from '${REPLACEMENT_RUNTIME_PREFIX}/react'`);
|
|
289
|
-
sendJavaScript(req, res, runtimeCode);
|
|
243
|
+
sendJavaScript(req, res, result.outputFiles[0]?.text ?? "");
|
|
290
244
|
} catch (error) {
|
|
291
245
|
const message = error instanceof Error ? error.message : String(error);
|
|
292
246
|
res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -297,7 +251,6 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
297
251
|
// Annotate the CommonJS export names for ESM import in node:
|
|
298
252
|
0 && (module.exports = {
|
|
299
253
|
REPLACEMENT_MODULE_ROUTE,
|
|
300
|
-
REPLACEMENT_RUNTIME_PREFIX,
|
|
301
254
|
handleReplacementModuleRequest,
|
|
302
255
|
isReplacementModuleRequestUrl
|
|
303
256
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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.365 | (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;
|
|
@@ -3060,7 +3060,6 @@ function isLoopbackHost(hostname) {
|
|
|
3060
3060
|
|
|
3061
3061
|
// src/host/replacement-module-handler.ts
|
|
3062
3062
|
var REPLACEMENT_MODULE_ROUTE = "/__sootsim-replacement-module";
|
|
3063
|
-
var REPLACEMENT_RUNTIME_PREFIX = "/__sootsim-replacement-runtime";
|
|
3064
3063
|
function getReplacementLoader(filePath) {
|
|
3065
3064
|
const ext = import_node_path4.default.extname(filePath).toLowerCase();
|
|
3066
3065
|
switch (ext) {
|
|
@@ -3076,88 +3075,6 @@ function getReplacementLoader(filePath) {
|
|
|
3076
3075
|
return null;
|
|
3077
3076
|
}
|
|
3078
3077
|
}
|
|
3079
|
-
function reactRuntimeSource(reactBridgeUrl) {
|
|
3080
|
-
if (reactBridgeUrl) {
|
|
3081
|
-
return `export * from ${JSON.stringify(reactBridgeUrl)};
|
|
3082
|
-
import React from ${JSON.stringify(reactBridgeUrl)};
|
|
3083
|
-
export default React;
|
|
3084
|
-
`;
|
|
3085
|
-
}
|
|
3086
|
-
return `const bridge = globalThis.__sootsim_react_bridge
|
|
3087
|
-
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3088
|
-
export default bridge.default
|
|
3089
|
-
export const Activity = bridge.Activity
|
|
3090
|
-
export const Children = bridge.Children
|
|
3091
|
-
export const Component = bridge.Component
|
|
3092
|
-
export const Fragment = bridge.Fragment
|
|
3093
|
-
export const Profiler = bridge.Profiler
|
|
3094
|
-
export const PureComponent = bridge.PureComponent
|
|
3095
|
-
export const StrictMode = bridge.StrictMode
|
|
3096
|
-
export const Suspense = bridge.Suspense
|
|
3097
|
-
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
|
|
3098
|
-
export const __COMPILER_RUNTIME = bridge.__COMPILER_RUNTIME
|
|
3099
|
-
export const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = bridge.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
3100
|
-
export const act = bridge.act
|
|
3101
|
-
export const cache = bridge.cache
|
|
3102
|
-
export const cacheSignal = bridge.cacheSignal
|
|
3103
|
-
export const captureOwnerStack = bridge.captureOwnerStack
|
|
3104
|
-
export const cloneElement = bridge.cloneElement
|
|
3105
|
-
export const createContext = bridge.createContext
|
|
3106
|
-
export const createElement = bridge.createElement
|
|
3107
|
-
export const createRef = bridge.createRef
|
|
3108
|
-
export const forwardRef = bridge.forwardRef
|
|
3109
|
-
export const isValidElement = bridge.isValidElement
|
|
3110
|
-
export const lazy = bridge.lazy
|
|
3111
|
-
export const memo = bridge.memo
|
|
3112
|
-
export const startTransition = bridge.startTransition
|
|
3113
|
-
export const unstable_useCacheRefresh = bridge.unstable_useCacheRefresh
|
|
3114
|
-
export const use = bridge.use
|
|
3115
|
-
export const useActionState = bridge.useActionState
|
|
3116
|
-
export const useCallback = bridge.useCallback
|
|
3117
|
-
export const useContext = bridge.useContext
|
|
3118
|
-
export const useDebugValue = bridge.useDebugValue
|
|
3119
|
-
export const useDeferredValue = bridge.useDeferredValue
|
|
3120
|
-
export const useEffect = bridge.useEffect
|
|
3121
|
-
export const useEffectEvent = bridge.useEffectEvent
|
|
3122
|
-
export const useId = bridge.useId
|
|
3123
|
-
export const useImperativeHandle = bridge.useImperativeHandle
|
|
3124
|
-
export const useInsertionEffect = bridge.useInsertionEffect
|
|
3125
|
-
export const useLayoutEffect = bridge.useLayoutEffect
|
|
3126
|
-
export const useMemo = bridge.useMemo
|
|
3127
|
-
export const useOptimistic = bridge.useOptimistic
|
|
3128
|
-
export const useReducer = bridge.useReducer
|
|
3129
|
-
export const useRef = bridge.useRef
|
|
3130
|
-
export const useState = bridge.useState
|
|
3131
|
-
export const useSyncExternalStore = bridge.useSyncExternalStore
|
|
3132
|
-
export const useTransition = bridge.useTransition
|
|
3133
|
-
export const version = bridge.version
|
|
3134
|
-
`;
|
|
3135
|
-
}
|
|
3136
|
-
function reactNativeRuntimeSource() {
|
|
3137
|
-
return `const rn = globalThis.__sootsim_components__ || {}
|
|
3138
|
-
export default rn
|
|
3139
|
-
export const View = rn.View
|
|
3140
|
-
export const Text = rn.Text
|
|
3141
|
-
export const Image = rn.Image
|
|
3142
|
-
export const ScrollView = rn.ScrollView
|
|
3143
|
-
export const FlatList = rn.FlatList
|
|
3144
|
-
export const Pressable = rn.Pressable
|
|
3145
|
-
export const TouchableOpacity = rn.TouchableOpacity
|
|
3146
|
-
export const TouchableWithoutFeedback = rn.TouchableWithoutFeedback
|
|
3147
|
-
export const TouchableHighlight = rn.TouchableHighlight
|
|
3148
|
-
export const TextInput = rn.TextInput
|
|
3149
|
-
export const ActivityIndicator = rn.ActivityIndicator
|
|
3150
|
-
export const KeyboardAvoidingView = rn.KeyboardAvoidingView
|
|
3151
|
-
export const Button = rn.Button
|
|
3152
|
-
export const Modal = rn.Modal
|
|
3153
|
-
export const Switch = rn.Switch
|
|
3154
|
-
export const StyleSheet = rn.StyleSheet
|
|
3155
|
-
export const Platform = rn.Platform
|
|
3156
|
-
export const Keyboard = rn.Keyboard
|
|
3157
|
-
export const Dimensions = rn.Dimensions
|
|
3158
|
-
export const Appearance = rn.Appearance
|
|
3159
|
-
`;
|
|
3160
|
-
}
|
|
3161
3078
|
function sendJavaScript(req, res, source) {
|
|
3162
3079
|
const origin = req.headers.origin;
|
|
3163
3080
|
let allowedOrigin;
|
|
@@ -3178,7 +3095,7 @@ function isReplacementModuleRequestUrl(rawUrl) {
|
|
|
3178
3095
|
if (!rawUrl) return false;
|
|
3179
3096
|
try {
|
|
3180
3097
|
const pathname = new URL(rawUrl, "http://rnx.local").pathname;
|
|
3181
|
-
return pathname === REPLACEMENT_MODULE_ROUTE
|
|
3098
|
+
return pathname === REPLACEMENT_MODULE_ROUTE;
|
|
3182
3099
|
} catch {
|
|
3183
3100
|
return false;
|
|
3184
3101
|
}
|
|
@@ -3208,14 +3125,6 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3208
3125
|
return true;
|
|
3209
3126
|
}
|
|
3210
3127
|
}
|
|
3211
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react`) {
|
|
3212
|
-
sendJavaScript(req, res, reactRuntimeSource(options.reactBridgeUrl));
|
|
3213
|
-
return true;
|
|
3214
|
-
}
|
|
3215
|
-
if (url.pathname === `${REPLACEMENT_RUNTIME_PREFIX}/react-native`) {
|
|
3216
|
-
sendJavaScript(req, res, reactNativeRuntimeSource());
|
|
3217
|
-
return true;
|
|
3218
|
-
}
|
|
3219
3128
|
if (url.pathname !== REPLACEMENT_MODULE_ROUTE) return false;
|
|
3220
3129
|
if (options.requestToken && url.searchParams.get("token") !== options.requestToken) {
|
|
3221
3130
|
res.writeHead(403, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -3239,6 +3148,7 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3239
3148
|
res.end("replacement file path must be absolute");
|
|
3240
3149
|
return true;
|
|
3241
3150
|
}
|
|
3151
|
+
const runtimePackages = new Set(url.searchParams.getAll("runtimePackage"));
|
|
3242
3152
|
let resolvedProjectRoot;
|
|
3243
3153
|
if (options.projectRoot) {
|
|
3244
3154
|
const lexicalProjectRoot = import_node_path4.default.resolve(options.projectRoot);
|
|
@@ -3281,19 +3191,64 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
3281
3191
|
tsconfigRaw: { compilerOptions: { jsx: "react" } },
|
|
3282
3192
|
sourcemap: "inline",
|
|
3283
3193
|
logLevel: "silent",
|
|
3284
|
-
|
|
3194
|
+
plugins: [
|
|
3195
|
+
{
|
|
3196
|
+
name: "sootsim-replacement-runtime",
|
|
3197
|
+
setup(runtimeBuild) {
|
|
3198
|
+
runtimeBuild.onResolve(
|
|
3199
|
+
{
|
|
3200
|
+
filter: /^(react|react-native|react\/jsx-runtime|react\/jsx-dev-runtime)$/
|
|
3201
|
+
},
|
|
3202
|
+
(args) => ({ path: args.path, namespace: "sootsim-replacement-runtime" })
|
|
3203
|
+
);
|
|
3204
|
+
runtimeBuild.onResolve(
|
|
3205
|
+
{ filter: /.*/ },
|
|
3206
|
+
(args) => runtimePackages.has(args.path) ? { path: args.path, namespace: "sootsim-replacement-runtime" } : void 0
|
|
3207
|
+
);
|
|
3208
|
+
runtimeBuild.onLoad(
|
|
3209
|
+
{ filter: /.*/, namespace: "sootsim-replacement-runtime" },
|
|
3210
|
+
(args) => {
|
|
3211
|
+
if (args.path === "react-native") {
|
|
3212
|
+
return {
|
|
3213
|
+
contents: `const bridge = globalThis.__sootsim_components__
|
|
3214
|
+
if (!bridge) throw new Error('[rnx] replacement React Native bridge is not ready')
|
|
3215
|
+
module.exports = bridge`,
|
|
3216
|
+
loader: "js"
|
|
3217
|
+
};
|
|
3218
|
+
}
|
|
3219
|
+
if (args.path === "react") {
|
|
3220
|
+
return {
|
|
3221
|
+
contents: `const bridge = globalThis.__sootsim_react_bridge
|
|
3222
|
+
if (!bridge) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3223
|
+
module.exports = bridge`,
|
|
3224
|
+
loader: "js"
|
|
3225
|
+
};
|
|
3226
|
+
}
|
|
3227
|
+
if (args.path !== "react/jsx-runtime" && args.path !== "react/jsx-dev-runtime") {
|
|
3228
|
+
return {
|
|
3229
|
+
contents: `const packages = globalThis.__sootsim_config_package_modules
|
|
3230
|
+
const bridge = packages?.[${JSON.stringify(args.path)}]
|
|
3231
|
+
if (!bridge) throw new Error(${JSON.stringify(`[rnx] replacement package bridge ${args.path} is not ready`)})
|
|
3232
|
+
module.exports = bridge`,
|
|
3233
|
+
loader: "js"
|
|
3234
|
+
};
|
|
3235
|
+
}
|
|
3236
|
+
return {
|
|
3237
|
+
contents: `const React = globalThis.__sootsim_react_bridge
|
|
3238
|
+
if (!React) throw new Error('[rnx] replacement React bridge is not ready')
|
|
3239
|
+
exports.Fragment = React.Fragment
|
|
3240
|
+
exports.jsx = (type, props, key) => React.createElement(type, key === undefined ? props : { ...props, key })
|
|
3241
|
+
exports.jsxs = exports.jsx
|
|
3242
|
+
exports.jsxDEV = exports.jsx`,
|
|
3243
|
+
loader: "js"
|
|
3244
|
+
};
|
|
3245
|
+
}
|
|
3246
|
+
);
|
|
3247
|
+
}
|
|
3248
|
+
}
|
|
3249
|
+
]
|
|
3285
3250
|
});
|
|
3286
|
-
|
|
3287
|
-
const hasReactBinding = /\bimport\s+(?:\*\s+as\s+React|React(?:\s*,|\s+from)|\{[^}]*\bdefault\s+as\s+React\b)/.test(
|
|
3288
|
-
bundledCode
|
|
3289
|
-
);
|
|
3290
|
-
const reactImport = /\bReact\.(?:createElement|Fragment)\b/.test(bundledCode) && !hasReactBinding ? `import * as React from '${REPLACEMENT_RUNTIME_PREFIX}/react';
|
|
3291
|
-
` : "";
|
|
3292
|
-
const runtimeCode = (reactImport + bundledCode).replace(
|
|
3293
|
-
/from\s*["']react-native["']/g,
|
|
3294
|
-
`from '${REPLACEMENT_RUNTIME_PREFIX}/react-native'`
|
|
3295
|
-
).replace(/from\s*["']react["']/g, `from '${REPLACEMENT_RUNTIME_PREFIX}/react'`);
|
|
3296
|
-
sendJavaScript(req, res, runtimeCode);
|
|
3251
|
+
sendJavaScript(req, res, result.outputFiles[0]?.text ?? "");
|
|
3297
3252
|
} catch (error) {
|
|
3298
3253
|
const message = error instanceof Error ? error.message : String(error);
|
|
3299
3254
|
res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.365 | (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.365 | (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;
|