@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.
@@ -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 };