@vxrn/react-native-prebuilt 0.0.6 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +328 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +645 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/esm/index.js +307 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +160 -0
- package/dist/esm/index.native.js +616 -0
- package/dist/esm/index.native.js.map +6 -0
- package/dist/index.js +322 -0
- package/dist/index.js.map +6 -0
- package/dist/index.native.js +323 -0
- package/dist/index.native.js.map +6 -0
- package/dist/react-jsx-runtime.js +1 -1
- package/dist/react-native.js +23462 -23742
- package/dist/react.js +1 -1
- package/package.json +23 -7
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import * as babel from "@babel/core";
|
|
3
|
+
import { build } from "esbuild";
|
|
4
|
+
import FSExtra from "fs-extra";
|
|
5
|
+
import { resolve as importMetaResolve } from "import-meta-resolve";
|
|
6
|
+
async function nativeBabelFlowTransform(input) {
|
|
7
|
+
return await new Promise((res, rej) => {
|
|
8
|
+
babel.transform(
|
|
9
|
+
input,
|
|
10
|
+
{
|
|
11
|
+
presets: ["module:metro-react-native-babel-preset"]
|
|
12
|
+
},
|
|
13
|
+
(err, result) => {
|
|
14
|
+
(!result || err) && rej(err || "no res"), res(result.code);
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const external = ["react", "react/jsx-runtime", "react/jsx-dev-runtime"];
|
|
20
|
+
async function buildAll() {
|
|
21
|
+
console.info("Prebuilding React Native (one time cost...)"), await Promise.all([buildReactJSX(), buildReact(), buildReactNative()]);
|
|
22
|
+
}
|
|
23
|
+
const resolveFile = (path) => {
|
|
24
|
+
try {
|
|
25
|
+
return importMetaResolve(path, import.meta.url).replace("file://", "");
|
|
26
|
+
} catch {
|
|
27
|
+
return require.resolve(path);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
async function buildReactJSX(options = {}) {
|
|
31
|
+
return build({
|
|
32
|
+
bundle: !0,
|
|
33
|
+
entryPoints: [resolveFile("react/jsx-dev-runtime")],
|
|
34
|
+
format: "cjs",
|
|
35
|
+
target: "node16",
|
|
36
|
+
jsx: "transform",
|
|
37
|
+
jsxFactory: "react",
|
|
38
|
+
allowOverwrite: !0,
|
|
39
|
+
platform: "node",
|
|
40
|
+
define: {
|
|
41
|
+
__DEV__: "true",
|
|
42
|
+
"process.env.NODE_ENV": '"development"'
|
|
43
|
+
},
|
|
44
|
+
external,
|
|
45
|
+
logLevel: "warning",
|
|
46
|
+
...options
|
|
47
|
+
}).then(async () => {
|
|
48
|
+
const outCode = `
|
|
49
|
+
const run = () => {
|
|
50
|
+
${(await readFile(options.outfile, "utf-8")).replace(
|
|
51
|
+
"module.exports = require_react_jsx_dev_runtime_development();",
|
|
52
|
+
"return require_react_jsx_dev_runtime_development();"
|
|
53
|
+
)}
|
|
54
|
+
}
|
|
55
|
+
const __mod__ = run()
|
|
56
|
+
${["jsx", "jsxs", "jsxDEV", "Fragment"].map((n) => `export const ${n} = __mod__.${n} || __mod__.jsx || __mod__.jsxDEV`).join(`
|
|
57
|
+
`)}
|
|
58
|
+
`;
|
|
59
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function buildReact(options = {}) {
|
|
63
|
+
return build({
|
|
64
|
+
bundle: !0,
|
|
65
|
+
entryPoints: [resolveFile("react")],
|
|
66
|
+
format: "cjs",
|
|
67
|
+
target: "node16",
|
|
68
|
+
jsx: "transform",
|
|
69
|
+
jsxFactory: "react",
|
|
70
|
+
allowOverwrite: !0,
|
|
71
|
+
platform: "node",
|
|
72
|
+
define: {
|
|
73
|
+
__DEV__: "true",
|
|
74
|
+
"process.env.NODE_ENV": '"development"'
|
|
75
|
+
},
|
|
76
|
+
logLevel: "warning",
|
|
77
|
+
external,
|
|
78
|
+
...options
|
|
79
|
+
}).then(async () => {
|
|
80
|
+
const outCode = `
|
|
81
|
+
const run = () => {
|
|
82
|
+
${(await readFile(options.outfile, "utf-8")).replace(
|
|
83
|
+
"module.exports = require_react_development();",
|
|
84
|
+
"return require_react_development();"
|
|
85
|
+
)}
|
|
86
|
+
}
|
|
87
|
+
const __mod__ = run()
|
|
88
|
+
${RExports.map((n) => `export const ${n} = __mod__.${n}`).join(`
|
|
89
|
+
`)}
|
|
90
|
+
export default __mod__
|
|
91
|
+
`;
|
|
92
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async function buildReactNative(options = {}) {
|
|
96
|
+
return build({
|
|
97
|
+
bundle: !0,
|
|
98
|
+
entryPoints: [resolveFile("react-native")],
|
|
99
|
+
format: "cjs",
|
|
100
|
+
target: "node20",
|
|
101
|
+
jsx: "transform",
|
|
102
|
+
jsxFactory: "react",
|
|
103
|
+
allowOverwrite: !0,
|
|
104
|
+
platform: "node",
|
|
105
|
+
external,
|
|
106
|
+
loader: {
|
|
107
|
+
".png": "dataurl",
|
|
108
|
+
".jpg": "dataurl",
|
|
109
|
+
".jpeg": "dataurl",
|
|
110
|
+
".gif": "dataurl"
|
|
111
|
+
},
|
|
112
|
+
define: {
|
|
113
|
+
__DEV__: "true",
|
|
114
|
+
"process.env.NODE_ENV": '"development"'
|
|
115
|
+
},
|
|
116
|
+
logLevel: "warning",
|
|
117
|
+
resolveExtensions: [
|
|
118
|
+
".ios.js",
|
|
119
|
+
".native.js",
|
|
120
|
+
".native.ts",
|
|
121
|
+
".native.tsx",
|
|
122
|
+
".js",
|
|
123
|
+
".jsx",
|
|
124
|
+
".json",
|
|
125
|
+
".ts",
|
|
126
|
+
".tsx",
|
|
127
|
+
".mjs"
|
|
128
|
+
],
|
|
129
|
+
...options,
|
|
130
|
+
plugins: [
|
|
131
|
+
{
|
|
132
|
+
name: "remove-flow",
|
|
133
|
+
setup(build2) {
|
|
134
|
+
build2.onResolve(
|
|
135
|
+
{
|
|
136
|
+
filter: /HMRClient/
|
|
137
|
+
},
|
|
138
|
+
async (input) => ({
|
|
139
|
+
path: resolveFile("@vxrn/vite-native-hmr")
|
|
140
|
+
})
|
|
141
|
+
), build2.onLoad(
|
|
142
|
+
{
|
|
143
|
+
filter: /.*.js/
|
|
144
|
+
},
|
|
145
|
+
async (input) => {
|
|
146
|
+
if (!input.path.includes("react-native") && !input.path.includes("vite-native-hmr"))
|
|
147
|
+
return;
|
|
148
|
+
const code = await readFile(input.path, "utf-8");
|
|
149
|
+
return {
|
|
150
|
+
contents: await nativeBabelFlowTransform(code),
|
|
151
|
+
loader: "jsx"
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
}).then(async () => {
|
|
159
|
+
const outCode = `
|
|
160
|
+
const run = () => {
|
|
161
|
+
${(await readFile(options.outfile, "utf-8")).replace(
|
|
162
|
+
esbuildCommonJSFunction,
|
|
163
|
+
`
|
|
164
|
+
// replaced commonjs function to allow importing internals
|
|
165
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
166
|
+
if (mod) return mod
|
|
167
|
+
const path = __getOwnPropNames(cb)[0]
|
|
168
|
+
const moduleFn = cb[path]
|
|
169
|
+
mod = { exports: {} }
|
|
170
|
+
moduleFn(mod.exports, mod)
|
|
171
|
+
mod = mod.exports
|
|
172
|
+
|
|
173
|
+
// this is our patch basically allowing importing the inner contents:
|
|
174
|
+
globalThis['__cachedModules'][path.replace('../../node_modules/', '').replace('.js', '')] = mod
|
|
175
|
+
|
|
176
|
+
return mod
|
|
177
|
+
};
|
|
178
|
+
`
|
|
179
|
+
).replace("module.exports = require_react_native();", "return require_react_native();")}
|
|
180
|
+
}
|
|
181
|
+
const RN = run()
|
|
182
|
+
${RNExportNames.map((n) => `export const ${n} = RN.${n}`).join(`
|
|
183
|
+
`)}
|
|
184
|
+
`;
|
|
185
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const esbuildCommonJSFunction = `var __commonJS = (cb, mod) => function __require() {
|
|
189
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
190
|
+
};`, RNExportNames = [
|
|
191
|
+
"AccessibilityInfo",
|
|
192
|
+
"ActivityIndicator",
|
|
193
|
+
"Button",
|
|
194
|
+
"DrawerLayoutAndroid",
|
|
195
|
+
"FlatList",
|
|
196
|
+
"Image",
|
|
197
|
+
"ImageBackground",
|
|
198
|
+
"InputAccessoryView",
|
|
199
|
+
"KeyboardAvoidingView",
|
|
200
|
+
"Modal",
|
|
201
|
+
"Pressable",
|
|
202
|
+
"RefreshControl",
|
|
203
|
+
"SafeAreaView",
|
|
204
|
+
"ScrollView",
|
|
205
|
+
"SectionList",
|
|
206
|
+
"StatusBar",
|
|
207
|
+
"Switch",
|
|
208
|
+
"Text",
|
|
209
|
+
"TextInput",
|
|
210
|
+
"Touchable",
|
|
211
|
+
"TouchableHighlight",
|
|
212
|
+
"TouchableNativeFeedback",
|
|
213
|
+
"TouchableOpacity",
|
|
214
|
+
"TouchableWithoutFeedback",
|
|
215
|
+
"View",
|
|
216
|
+
"VirtualizedList",
|
|
217
|
+
"VirtualizedSectionList",
|
|
218
|
+
"ActionSheetIOS",
|
|
219
|
+
"Alert",
|
|
220
|
+
"Animated",
|
|
221
|
+
"Appearance",
|
|
222
|
+
"AppRegistry",
|
|
223
|
+
"AppState",
|
|
224
|
+
"BackHandler",
|
|
225
|
+
"DeviceInfo",
|
|
226
|
+
"DevSettings",
|
|
227
|
+
"Dimensions",
|
|
228
|
+
"Easing",
|
|
229
|
+
"findNodeHandle",
|
|
230
|
+
"I18nManager",
|
|
231
|
+
"InteractionManager",
|
|
232
|
+
"Keyboard",
|
|
233
|
+
"LayoutAnimation",
|
|
234
|
+
"Linking",
|
|
235
|
+
"LogBox",
|
|
236
|
+
"NativeDialogManagerAndroid",
|
|
237
|
+
"NativeEventEmitter",
|
|
238
|
+
"Networking",
|
|
239
|
+
"PanResponder",
|
|
240
|
+
"PermissionsAndroid",
|
|
241
|
+
"PixelRatio",
|
|
242
|
+
"Settings",
|
|
243
|
+
"Share",
|
|
244
|
+
"StyleSheet",
|
|
245
|
+
"Systrace",
|
|
246
|
+
"ToastAndroid",
|
|
247
|
+
"TurboModuleRegistry",
|
|
248
|
+
"UIManager",
|
|
249
|
+
"unstable_batchedUpdates",
|
|
250
|
+
"useColorScheme",
|
|
251
|
+
"useWindowDimensions",
|
|
252
|
+
"UTFSequence",
|
|
253
|
+
"Vibration",
|
|
254
|
+
"YellowBox",
|
|
255
|
+
"DeviceEventEmitter",
|
|
256
|
+
"DynamicColorIOS",
|
|
257
|
+
"NativeAppEventEmitter",
|
|
258
|
+
"NativeModules",
|
|
259
|
+
"Platform",
|
|
260
|
+
"PlatformColor",
|
|
261
|
+
"processColor",
|
|
262
|
+
"requireNativeComponent",
|
|
263
|
+
"RootTagContext"
|
|
264
|
+
], RExports = [
|
|
265
|
+
"Children",
|
|
266
|
+
"Component",
|
|
267
|
+
"Fragment",
|
|
268
|
+
"Profiler",
|
|
269
|
+
"PureComponent",
|
|
270
|
+
"StrictMode",
|
|
271
|
+
"Suspense",
|
|
272
|
+
"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED",
|
|
273
|
+
"cloneElement",
|
|
274
|
+
"createContext",
|
|
275
|
+
"createElement",
|
|
276
|
+
"createFactory",
|
|
277
|
+
"createRef",
|
|
278
|
+
"forwardRef",
|
|
279
|
+
"isValidElement",
|
|
280
|
+
"lazy",
|
|
281
|
+
"memo",
|
|
282
|
+
"startTransition",
|
|
283
|
+
"unstable_act",
|
|
284
|
+
"useCallback",
|
|
285
|
+
"useContext",
|
|
286
|
+
"useDebugValue",
|
|
287
|
+
"useDeferredValue",
|
|
288
|
+
"useEffect",
|
|
289
|
+
"useId",
|
|
290
|
+
"useImperativeHandle",
|
|
291
|
+
"useInsertionEffect",
|
|
292
|
+
"useLayoutEffect",
|
|
293
|
+
"useMemo",
|
|
294
|
+
"useReducer",
|
|
295
|
+
"useRef",
|
|
296
|
+
"useState",
|
|
297
|
+
"useSyncExternalStore",
|
|
298
|
+
"useTransition",
|
|
299
|
+
"version"
|
|
300
|
+
];
|
|
301
|
+
export {
|
|
302
|
+
buildAll,
|
|
303
|
+
buildReact,
|
|
304
|
+
buildReactJSX,
|
|
305
|
+
buildReactNative
|
|
306
|
+
};
|
|
307
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"mappings": "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CA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
5
|
+
"names": ["build"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import * as babel from "@babel/core";
|
|
3
|
+
import { build } from "esbuild";
|
|
4
|
+
import FSExtra from "fs-extra";
|
|
5
|
+
import { resolve as importMetaResolve } from "import-meta-resolve";
|
|
6
|
+
async function nativeBabelFlowTransform(input) {
|
|
7
|
+
return await new Promise((res, rej) => {
|
|
8
|
+
babel.transform(input, {
|
|
9
|
+
presets: ["module:metro-react-native-babel-preset"]
|
|
10
|
+
}, (err, result) => {
|
|
11
|
+
(!result || err) && rej(err || "no res"), res(result.code);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const external = ["react", "react/jsx-runtime", "react/jsx-dev-runtime"];
|
|
16
|
+
async function buildAll() {
|
|
17
|
+
console.info("Prebuilding React Native (one time cost...)"), await Promise.all([buildReactJSX(), buildReact(), buildReactNative()]);
|
|
18
|
+
}
|
|
19
|
+
const resolveFile = path => {
|
|
20
|
+
try {
|
|
21
|
+
return importMetaResolve(path, import.meta.url).replace("file://", "");
|
|
22
|
+
} catch {
|
|
23
|
+
return require.resolve(path);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
async function buildReactJSX(options = {}) {
|
|
27
|
+
return build({
|
|
28
|
+
bundle: !0,
|
|
29
|
+
entryPoints: [resolveFile("react/jsx-dev-runtime")],
|
|
30
|
+
format: "cjs",
|
|
31
|
+
target: "node16",
|
|
32
|
+
jsx: "transform",
|
|
33
|
+
jsxFactory: "react",
|
|
34
|
+
allowOverwrite: !0,
|
|
35
|
+
platform: "node",
|
|
36
|
+
define: {
|
|
37
|
+
__DEV__: "true",
|
|
38
|
+
"process.env.NODE_ENV": '"development"'
|
|
39
|
+
},
|
|
40
|
+
external,
|
|
41
|
+
logLevel: "warning",
|
|
42
|
+
...options
|
|
43
|
+
}).then(async () => {
|
|
44
|
+
const outCode = `
|
|
45
|
+
const run = () => {
|
|
46
|
+
${(await readFile(options.outfile, "utf-8")).replace("module.exports = require_react_jsx_dev_runtime_development();", "return require_react_jsx_dev_runtime_development();")}
|
|
47
|
+
}
|
|
48
|
+
const __mod__ = run()
|
|
49
|
+
${["jsx", "jsxs", "jsxDEV", "Fragment"].map(n => `export const ${n} = __mod__.${n} || __mod__.jsx || __mod__.jsxDEV`).join(`
|
|
50
|
+
`)}
|
|
51
|
+
`;
|
|
52
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async function buildReact(options = {}) {
|
|
56
|
+
return build({
|
|
57
|
+
bundle: !0,
|
|
58
|
+
entryPoints: [resolveFile("react")],
|
|
59
|
+
format: "cjs",
|
|
60
|
+
target: "node16",
|
|
61
|
+
jsx: "transform",
|
|
62
|
+
jsxFactory: "react",
|
|
63
|
+
allowOverwrite: !0,
|
|
64
|
+
platform: "node",
|
|
65
|
+
define: {
|
|
66
|
+
__DEV__: "true",
|
|
67
|
+
"process.env.NODE_ENV": '"development"'
|
|
68
|
+
},
|
|
69
|
+
logLevel: "warning",
|
|
70
|
+
external,
|
|
71
|
+
...options
|
|
72
|
+
}).then(async () => {
|
|
73
|
+
const outCode = `
|
|
74
|
+
const run = () => {
|
|
75
|
+
${(await readFile(options.outfile, "utf-8")).replace("module.exports = require_react_development();", "return require_react_development();")}
|
|
76
|
+
}
|
|
77
|
+
const __mod__ = run()
|
|
78
|
+
${RExports.map(n => `export const ${n} = __mod__.${n}`).join(`
|
|
79
|
+
`)}
|
|
80
|
+
export default __mod__
|
|
81
|
+
`;
|
|
82
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async function buildReactNative(options = {}) {
|
|
86
|
+
return build({
|
|
87
|
+
bundle: !0,
|
|
88
|
+
entryPoints: [resolveFile("react-native")],
|
|
89
|
+
format: "cjs",
|
|
90
|
+
target: "node20",
|
|
91
|
+
jsx: "transform",
|
|
92
|
+
jsxFactory: "react",
|
|
93
|
+
allowOverwrite: !0,
|
|
94
|
+
platform: "node",
|
|
95
|
+
external,
|
|
96
|
+
loader: {
|
|
97
|
+
".png": "dataurl",
|
|
98
|
+
".jpg": "dataurl",
|
|
99
|
+
".jpeg": "dataurl",
|
|
100
|
+
".gif": "dataurl"
|
|
101
|
+
},
|
|
102
|
+
define: {
|
|
103
|
+
__DEV__: "true",
|
|
104
|
+
"process.env.NODE_ENV": '"development"'
|
|
105
|
+
},
|
|
106
|
+
logLevel: "warning",
|
|
107
|
+
resolveExtensions: [".ios.js", ".native.js", ".native.ts", ".native.tsx", ".js", ".jsx", ".json", ".ts", ".tsx", ".mjs"],
|
|
108
|
+
...options,
|
|
109
|
+
plugins: [{
|
|
110
|
+
name: "remove-flow",
|
|
111
|
+
setup(build2) {
|
|
112
|
+
build2.onResolve({
|
|
113
|
+
filter: /HMRClient/
|
|
114
|
+
}, async input => ({
|
|
115
|
+
path: resolveFile("@vxrn/vite-native-hmr")
|
|
116
|
+
})), build2.onLoad({
|
|
117
|
+
filter: /.*.js/
|
|
118
|
+
}, async input => {
|
|
119
|
+
if (!input.path.includes("react-native") && !input.path.includes("vite-native-hmr")) return;
|
|
120
|
+
const code = await readFile(input.path, "utf-8");
|
|
121
|
+
return {
|
|
122
|
+
contents: await nativeBabelFlowTransform(code),
|
|
123
|
+
loader: "jsx"
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}]
|
|
128
|
+
}).then(async () => {
|
|
129
|
+
const outCode = `
|
|
130
|
+
const run = () => {
|
|
131
|
+
${(await readFile(options.outfile, "utf-8")).replace(esbuildCommonJSFunction, `
|
|
132
|
+
// replaced commonjs function to allow importing internals
|
|
133
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
134
|
+
if (mod) return mod
|
|
135
|
+
const path = __getOwnPropNames(cb)[0]
|
|
136
|
+
const moduleFn = cb[path]
|
|
137
|
+
mod = { exports: {} }
|
|
138
|
+
moduleFn(mod.exports, mod)
|
|
139
|
+
mod = mod.exports
|
|
140
|
+
|
|
141
|
+
// this is our patch basically allowing importing the inner contents:
|
|
142
|
+
globalThis['__cachedModules'][path.replace('../../node_modules/', '').replace('.js', '')] = mod
|
|
143
|
+
|
|
144
|
+
return mod
|
|
145
|
+
};
|
|
146
|
+
`).replace("module.exports = require_react_native();", "return require_react_native();")}
|
|
147
|
+
}
|
|
148
|
+
const RN = run()
|
|
149
|
+
${RNExportNames.map(n => `export const ${n} = RN.${n}`).join(`
|
|
150
|
+
`)}
|
|
151
|
+
`;
|
|
152
|
+
await FSExtra.writeFile(options.outfile, outCode);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
const esbuildCommonJSFunction = `var __commonJS = (cb, mod) => function __require() {
|
|
156
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
157
|
+
};`,
|
|
158
|
+
RNExportNames = ["AccessibilityInfo", "ActivityIndicator", "Button", "DrawerLayoutAndroid", "FlatList", "Image", "ImageBackground", "InputAccessoryView", "KeyboardAvoidingView", "Modal", "Pressable", "RefreshControl", "SafeAreaView", "ScrollView", "SectionList", "StatusBar", "Switch", "Text", "TextInput", "Touchable", "TouchableHighlight", "TouchableNativeFeedback", "TouchableOpacity", "TouchableWithoutFeedback", "View", "VirtualizedList", "VirtualizedSectionList", "ActionSheetIOS", "Alert", "Animated", "Appearance", "AppRegistry", "AppState", "BackHandler", "DeviceInfo", "DevSettings", "Dimensions", "Easing", "findNodeHandle", "I18nManager", "InteractionManager", "Keyboard", "LayoutAnimation", "Linking", "LogBox", "NativeDialogManagerAndroid", "NativeEventEmitter", "Networking", "PanResponder", "PermissionsAndroid", "PixelRatio", "Settings", "Share", "StyleSheet", "Systrace", "ToastAndroid", "TurboModuleRegistry", "UIManager", "unstable_batchedUpdates", "useColorScheme", "useWindowDimensions", "UTFSequence", "Vibration", "YellowBox", "DeviceEventEmitter", "DynamicColorIOS", "NativeAppEventEmitter", "NativeModules", "Platform", "PlatformColor", "processColor", "requireNativeComponent", "RootTagContext"],
|
|
159
|
+
RExports = ["Children", "Component", "Fragment", "Profiler", "PureComponent", "StrictMode", "Suspense", "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED", "cloneElement", "createContext", "createElement", "createFactory", "createRef", "forwardRef", "isValidElement", "lazy", "memo", "startTransition", "unstable_act", "useCallback", "useContext", "useDebugValue", "useDeferredValue", "useEffect", "useId", "useImperativeHandle", "useInsertionEffect", "useLayoutEffect", "useMemo", "useReducer", "useRef", "useState", "useSyncExternalStore", "useTransition", "version"];
|
|
160
|
+
export { buildAll, buildReact, buildReactJSX, buildReactNative };
|