vxrn 0.1.97 → 0.1.98
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/exports/build.js.map +1 -1
- package/dist/cjs/exports/build.native.js.map +1 -1
- package/dist/cjs/exports/dev.js +1 -1
- package/dist/cjs/exports/dev.js.map +1 -1
- package/dist/cjs/exports/dev.native.js +4 -4
- package/dist/cjs/exports/dev.native.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/plugins/clientInjectPlugin.js +3 -3
- package/dist/cjs/plugins/clientInjectPlugin.js.map +1 -1
- package/dist/cjs/plugins/clientInjectPlugin.native.js +3 -3
- package/dist/cjs/plugins/clientInjectPlugin.native.js.map +2 -2
- package/dist/cjs/plugins/reactNativeCommonJsPlugin.js +116 -48
- package/dist/cjs/plugins/reactNativeCommonJsPlugin.js.map +1 -1
- package/dist/cjs/plugins/reactNativeCommonJsPlugin.native.js +208 -147
- package/dist/cjs/plugins/reactNativeCommonJsPlugin.native.js.map +2 -2
- package/dist/cjs/plugins/reactNativeHMRPlugin.js +2 -0
- package/dist/cjs/plugins/reactNativeHMRPlugin.js.map +1 -1
- package/dist/cjs/plugins/reactNativeHMRPlugin.native.js +111 -107
- package/dist/cjs/plugins/reactNativeHMRPlugin.native.js.map +1 -1
- package/dist/cjs/{exports/isWithin.js → utils/environmentUtils.js} +19 -9
- package/dist/cjs/utils/environmentUtils.js.map +6 -0
- package/dist/cjs/utils/environmentUtils.native.js +43 -0
- package/dist/cjs/utils/environmentUtils.native.js.map +6 -0
- package/dist/cjs/utils/getBaseViteConfig.js +17 -2
- package/dist/cjs/utils/getBaseViteConfig.js.map +1 -1
- package/dist/cjs/utils/getBaseViteConfig.native.js +32 -3
- package/dist/cjs/utils/getBaseViteConfig.native.js.map +2 -2
- package/dist/cjs/utils/getOptimizeDeps.js +3 -2
- package/dist/cjs/utils/getOptimizeDeps.js.map +1 -1
- package/dist/cjs/utils/getOptimizeDeps.native.js +3 -2
- package/dist/cjs/utils/getOptimizeDeps.native.js.map +1 -1
- package/dist/cjs/utils/getReactNativeBundle.js +1 -1
- package/dist/cjs/utils/getReactNativeBundle.js.map +1 -1
- package/dist/cjs/utils/getReactNativeBundle.native.js +8 -3
- package/dist/cjs/utils/getReactNativeBundle.native.js.map +2 -2
- package/dist/esm/exports/build.js.map +1 -1
- package/dist/esm/exports/build.native.js.map +1 -1
- package/dist/esm/exports/dev.js +1 -1
- package/dist/esm/exports/dev.js.map +1 -1
- package/dist/esm/exports/dev.mjs +1 -1
- package/dist/esm/exports/dev.native.js +4 -4
- package/dist/esm/exports/dev.native.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/plugins/clientInjectPlugin.js +3 -2
- package/dist/esm/plugins/clientInjectPlugin.js.map +1 -1
- package/dist/esm/plugins/clientInjectPlugin.mjs +3 -2
- package/dist/esm/plugins/clientInjectPlugin.native.js +3 -2
- package/dist/esm/plugins/clientInjectPlugin.native.js.map +2 -2
- package/dist/esm/plugins/reactNativeCommonJsPlugin.js +117 -48
- package/dist/esm/plugins/reactNativeCommonJsPlugin.js.map +1 -1
- package/dist/esm/plugins/reactNativeCommonJsPlugin.mjs +107 -41
- package/dist/esm/plugins/reactNativeCommonJsPlugin.native.js +209 -147
- package/dist/esm/plugins/reactNativeCommonJsPlugin.native.js.map +2 -2
- package/dist/esm/plugins/reactNativeHMRPlugin.js +2 -0
- package/dist/esm/plugins/reactNativeHMRPlugin.js.map +1 -1
- package/dist/esm/plugins/reactNativeHMRPlugin.mjs +2 -0
- package/dist/esm/plugins/reactNativeHMRPlugin.native.js +111 -107
- package/dist/esm/plugins/reactNativeHMRPlugin.native.js.map +1 -1
- package/dist/esm/utils/environmentUtils.js +19 -0
- package/dist/esm/utils/environmentUtils.js.map +6 -0
- package/dist/esm/utils/environmentUtils.mjs +13 -0
- package/dist/esm/utils/environmentUtils.native.js +19 -0
- package/dist/esm/utils/environmentUtils.native.js.map +6 -0
- package/dist/esm/utils/getBaseViteConfig.js +17 -2
- package/dist/esm/utils/getBaseViteConfig.js.map +1 -1
- package/dist/esm/utils/getBaseViteConfig.mjs +17 -2
- package/dist/esm/utils/getBaseViteConfig.native.js +32 -3
- package/dist/esm/utils/getBaseViteConfig.native.js.map +2 -2
- package/dist/esm/utils/getOptimizeDeps.js +3 -2
- package/dist/esm/utils/getOptimizeDeps.js.map +1 -1
- package/dist/esm/utils/getOptimizeDeps.mjs +1 -1
- package/dist/esm/utils/getOptimizeDeps.native.js +3 -2
- package/dist/esm/utils/getOptimizeDeps.native.js.map +1 -1
- package/dist/esm/utils/getReactNativeBundle.js +6 -2
- package/dist/esm/utils/getReactNativeBundle.js.map +1 -1
- package/dist/esm/utils/getReactNativeBundle.mjs +3 -2
- package/dist/esm/utils/getReactNativeBundle.native.js +9 -4
- package/dist/esm/utils/getReactNativeBundle.native.js.map +2 -2
- package/package.json +5 -5
- package/src/exports/build.ts +0 -1
- package/src/exports/dev.ts +4 -2
- package/src/index.ts +2 -0
- package/src/plugins/clientInjectPlugin.ts +6 -3
- package/src/plugins/reactNativeCommonJsPlugin.ts +159 -146
- package/src/plugins/reactNativeHMRPlugin.ts +4 -1
- package/src/utils/environmentUtils.ts +17 -0
- package/src/utils/getBaseViteConfig.ts +19 -1
- package/src/utils/getOptimizeDeps.ts +3 -2
- package/src/utils/getReactNativeBundle.ts +11 -2
- package/types/index.d.ts +1 -0
- package/types/plugins/reactNativeCommonJsPlugin.d.ts +1 -1
- package/types/plugins/reactNativeHMRPlugin.d.ts +1 -5
- package/types/utils/environmentUtils.d.ts +6 -0
- package/dist/cjs/exports/bindKeypressInput.js +0 -58
- package/dist/cjs/exports/bindKeypressInput.js.map +0 -6
- package/dist/cjs/exports/bindKeypressInput.native.js +0 -63
- package/dist/cjs/exports/bindKeypressInput.native.js.map +0 -6
- package/dist/cjs/exports/coerceToArray.js +0 -23
- package/dist/cjs/exports/coerceToArray.js.map +0 -6
- package/dist/cjs/exports/connectedNativeClients.js +0 -21
- package/dist/cjs/exports/connectedNativeClients.js.map +0 -6
- package/dist/cjs/exports/empty.js +0 -1
- package/dist/cjs/exports/empty.js.map +0 -6
- package/dist/cjs/exports/empty.native.js +0 -2
- package/dist/cjs/exports/empty.native.js.map +0 -6
- package/dist/cjs/exports/entryRoot.js +0 -69
- package/dist/cjs/exports/entryRoot.js.map +0 -6
- package/dist/cjs/exports/getIndexJsonResponse.js +0 -71
- package/dist/cjs/exports/getIndexJsonResponse.js.map +0 -6
- package/dist/cjs/exports/getIndexJsonResponse.native.js +0 -99
- package/dist/cjs/exports/getIndexJsonResponse.native.js.map +0 -6
- package/dist/cjs/exports/getReactNativeBundle.js +0 -160
- package/dist/cjs/exports/getReactNativeBundle.js.map +0 -6
- package/dist/cjs/exports/getViteServerConfig.js +0 -77
- package/dist/cjs/exports/getViteServerConfig.js.map +0 -6
- package/dist/cjs/exports/getViteServerConfig.native.js +0 -253
- package/dist/cjs/exports/getViteServerConfig.native.js.map +0 -6
- package/dist/cjs/exports/hotUpdateCache.js +0 -21
- package/dist/cjs/exports/hotUpdateCache.js.map +0 -6
- package/dist/cjs/exports/isBuildingNativeBundle.js +0 -21
- package/dist/cjs/exports/isBuildingNativeBundle.js.map +0 -6
- package/dist/cjs/exports/isWithin.js.map +0 -6
- package/dist/cjs/exports/reactNativeHMRPlugin.js +0 -69
- package/dist/cjs/exports/reactNativeHMRPlugin.js.map +0 -6
- package/dist/cjs/exports/swapPrebuiltReactModules.js +0 -100
- package/dist/cjs/exports/swapPrebuiltReactModules.js.map +0 -6
- package/dist/cjs/exports/uniq.js +0 -23
- package/dist/cjs/exports/uniq.js.map +0 -6
- package/dist/cjs/utils/getHtml.js +0 -49
- package/dist/cjs/utils/getHtml.js.map +0 -6
- package/dist/cjs/utils/getHtml.native.js +0 -76
- package/dist/cjs/utils/getHtml.native.js.map +0 -6
- package/dist/esm/exports/bindKeypressInput.js +0 -34
- package/dist/esm/exports/bindKeypressInput.js.map +0 -6
- package/dist/esm/exports/bindKeypressInput.mjs +0 -31
- package/dist/esm/exports/bindKeypressInput.native.js +0 -34
- package/dist/esm/exports/bindKeypressInput.native.js.map +0 -6
- package/dist/esm/exports/coerceToArray.js +0 -7
- package/dist/esm/exports/coerceToArray.js.map +0 -6
- package/dist/esm/exports/coerceToArray.mjs +0 -4
- package/dist/esm/exports/connectedNativeClients.js +0 -5
- package/dist/esm/exports/connectedNativeClients.js.map +0 -6
- package/dist/esm/exports/connectedNativeClients.mjs +0 -2
- package/dist/esm/exports/empty.js +0 -1
- package/dist/esm/exports/empty.js.map +0 -6
- package/dist/esm/exports/empty.mjs +0 -0
- package/dist/esm/exports/empty.native.js +0 -1
- package/dist/esm/exports/empty.native.js.map +0 -6
- package/dist/esm/exports/entryRoot.js +0 -58
- package/dist/esm/exports/entryRoot.js.map +0 -6
- package/dist/esm/exports/entryRoot.mjs +0 -62
- package/dist/esm/exports/getIndexJsonResponse.js +0 -55
- package/dist/esm/exports/getIndexJsonResponse.js.map +0 -6
- package/dist/esm/exports/getIndexJsonResponse.mjs +0 -71
- package/dist/esm/exports/getIndexJsonResponse.native.js +0 -78
- package/dist/esm/exports/getIndexJsonResponse.native.js.map +0 -6
- package/dist/esm/exports/getReactNativeBundle.js +0 -146
- package/dist/esm/exports/getReactNativeBundle.js.map +0 -6
- package/dist/esm/exports/getReactNativeBundle.mjs +0 -136
- package/dist/esm/exports/getViteServerConfig.js +0 -64
- package/dist/esm/exports/getViteServerConfig.js.map +0 -6
- package/dist/esm/exports/getViteServerConfig.mjs +0 -44
- package/dist/esm/exports/getViteServerConfig.native.js +0 -235
- package/dist/esm/exports/getViteServerConfig.native.js.map +0 -6
- package/dist/esm/exports/hotUpdateCache.js +0 -5
- package/dist/esm/exports/hotUpdateCache.js.map +0 -6
- package/dist/esm/exports/hotUpdateCache.mjs +0 -2
- package/dist/esm/exports/isBuildingNativeBundle.js +0 -5
- package/dist/esm/exports/isBuildingNativeBundle.js.map +0 -6
- package/dist/esm/exports/isBuildingNativeBundle.mjs +0 -2
- package/dist/esm/exports/isWithin.js +0 -9
- package/dist/esm/exports/isWithin.js.map +0 -6
- package/dist/esm/exports/isWithin.mjs +0 -6
- package/dist/esm/exports/reactNativeHMRPlugin.js +0 -58
- package/dist/esm/exports/reactNativeHMRPlugin.js.map +0 -6
- package/dist/esm/exports/reactNativeHMRPlugin.mjs +0 -62
- package/dist/esm/exports/swapPrebuiltReactModules.js +0 -87
- package/dist/esm/exports/swapPrebuiltReactModules.js.map +0 -6
- package/dist/esm/exports/swapPrebuiltReactModules.mjs +0 -73
- package/dist/esm/exports/uniq.js +0 -7
- package/dist/esm/exports/uniq.js.map +0 -6
- package/dist/esm/exports/uniq.mjs +0 -4
- package/dist/esm/utils/getHtml.js +0 -33
- package/dist/esm/utils/getHtml.js.map +0 -6
- package/dist/esm/utils/getHtml.mjs +0 -23
- package/dist/esm/utils/getHtml.native.js +0 -55
- package/dist/esm/utils/getHtml.native.js.map +0 -6
|
@@ -3,7 +3,7 @@ import createViteFlow from "@vxrn/vite-flow";
|
|
|
3
3
|
import viteReactPlugin from "@vxrn/vite-native-swc";
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
5
|
import { dirname, join, relative } from "node:path";
|
|
6
|
-
import {
|
|
6
|
+
import { createBuilder, resolveConfig, transformWithEsbuild } from "vite";
|
|
7
7
|
import { nativeExtensions } from "../constants";
|
|
8
8
|
import { resolveFile } from "./resolveFile";
|
|
9
9
|
import { isBuildingNativeBundle, setIsBuildingNativeBundle } from "./isBuildingNativeBundle";
|
|
@@ -127,7 +127,7 @@ function getReactNativeBundle(options, viteRNClientPlugin) {
|
|
|
127
127
|
}
|
|
128
128
|
function _getReactNativeBundle() {
|
|
129
129
|
return _getReactNativeBundle = _async_to_generator(function(options, viteRNClientPlugin) {
|
|
130
|
-
var root, port, cacheDir, _getOptimizeDeps, depsToOptimize, needsInterop, tmpBundle, res, done, viteFlow, nativeBuildConfig, buildOutput, appCode, appRootParent, prebuilds, templateFile, template, out;
|
|
130
|
+
var root, port, cacheDir, _getOptimizeDeps, depsToOptimize, needsInterop, tmpBundle, res, done, viteFlow, nativeBuildConfig, builder, buildOutput, appCode, appRootParent, prebuilds, templateFile, template, out;
|
|
131
131
|
function babelReanimated(input, filename) {
|
|
132
132
|
return _babelReanimated.apply(this, arguments);
|
|
133
133
|
}
|
|
@@ -300,9 +300,14 @@ function _getReactNativeBundle() {
|
|
|
300
300
|
case 6:
|
|
301
301
|
return _state.sent(), [
|
|
302
302
|
4,
|
|
303
|
-
|
|
303
|
+
createBuilder(nativeBuildConfig)
|
|
304
304
|
];
|
|
305
305
|
case 7:
|
|
306
|
+
return builder = _state.sent(), [
|
|
307
|
+
4,
|
|
308
|
+
builder.build(builder.environments.ios)
|
|
309
|
+
];
|
|
310
|
+
case 8:
|
|
306
311
|
if (buildOutput = _state.sent(), !("output" in buildOutput) || (appCode = buildOutput.output.sort(function(a, b) {
|
|
307
312
|
return a.isEntry ? 1 : -1;
|
|
308
313
|
}).map(function(outputModule) {
|
|
@@ -351,7 +356,7 @@ __require("`.concat(outputModule.fileName, `")
|
|
|
351
356
|
4,
|
|
352
357
|
readFile(templateFile, "utf-8")
|
|
353
358
|
];
|
|
354
|
-
case
|
|
359
|
+
case 9:
|
|
355
360
|
return template = _state.sent().replace("_virtual/virtual_react-native.js", relative(appRootParent, prebuilds.reactNative)).replace("_virtual/virtual_react.js", relative(appRootParent, prebuilds.react)).replaceAll("_virtual/virtual_react-jsx.js", relative(appRootParent, prebuilds.reactJSX)), out = template + appCode, done(out), setIsBuildingNativeBundle(null), [
|
|
356
361
|
2,
|
|
357
362
|
out
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/Users/n8/vxrn/packages/vxrn/src/utils/getReactNativeBundle.ts"],
|
|
4
|
-
"mappings": "AAAA,YAAYA,WAAW;AACvB,OAAOC,oBAAoB;AAC3B,OAAOC,qBAAqB;AAC5B,SAASC,gBAAgB;AACzB,SAASC,SAASC,MAAMC,gBAAgB;AACxC,
|
|
5
|
-
"names": ["babel", "createViteFlow", "viteReactPlugin", "readFile", "dirname", "join", "relative", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["babel", "createViteFlow", "viteReactPlugin", "readFile", "dirname", "join", "relative", "createBuilder", "resolveConfig", "transformWithEsbuild", "nativeExtensions", "resolveFile", "isBuildingNativeBundle", "setIsBuildingNativeBundle", "swapPrebuiltReactModules", "reactNativeCommonJsPlugin", "getOptimizeDeps", "FSExtra", "pathExists", "entryRoot", "getReactNativeBundle", "options", "viteRNClientPlugin", "root", "port", "cacheDir", "depsToOptimize", "needsInterop", "tmpBundle", "res", "done", "viteFlow", "nativeBuildConfig", "builder", "buildOutput", "appCode", "appRootParent", "prebuilds", "templateFile", "template", "out", "babelReanimated", "input", "filename", "Promise", "rej", "transform", "plugins", "err", "result", "code", "process", "env", "LOAD_TMP_BUNDLE", "cwd", "console", "info", "flow", "name", "id", "includes", "_state", "mode", "tsDecorators", "loader", "jsx", "filter", "Boolean", "appType", "clearScreen", "optimizeDeps", "include", "esbuildOptions", "resolve", "extensions", "define", "build", "ssr", "minify", "commonjsOptions", "transformMixedEsModules", "rollupOptions", "entries", "native", "treeshake", "preserveEntrySignatures", "output", "preserveModules", "format", "environments", "ios", "sort", "a", "b", "map", "outputModule", "type", "importsMap", "currentPath", "fileName", "imports", "imp", "relativePath", "isEntry", "JSON", "stringify", "replaceAll", "reactJSX", "react", "reactNative", "replace"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxrn",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.98",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"@babel/core": "^7.21.8",
|
|
36
36
|
"@hono/node-server": "^1.11.1",
|
|
37
37
|
"@vitejs/plugin-react-swc": "^3.6.0",
|
|
38
|
-
"@vxrn/react-native-prebuilt": "0.1.
|
|
39
|
-
"@vxrn/safe-area": "0.1.
|
|
40
|
-
"@vxrn/vite-flow": "0.1.
|
|
41
|
-
"@vxrn/vite-native-swc": "0.1.
|
|
38
|
+
"@vxrn/react-native-prebuilt": "0.1.98",
|
|
39
|
+
"@vxrn/safe-area": "0.1.98",
|
|
40
|
+
"@vxrn/vite-flow": "0.1.98",
|
|
41
|
+
"@vxrn/vite-native-swc": "0.1.98",
|
|
42
42
|
"citty": "^0.1.6",
|
|
43
43
|
"crossws": "^0.2.4",
|
|
44
44
|
"es-module-lexer": "^1.3.0",
|
package/src/exports/build.ts
CHANGED
package/src/exports/dev.ts
CHANGED
|
@@ -134,8 +134,10 @@ export const dev = async ({ clean, ...rest }: VXRNConfig & { clean?: boolean })
|
|
|
134
134
|
// TODO move these to router.get():
|
|
135
135
|
app.use(
|
|
136
136
|
defineEventHandler(async ({ node: { req } }) => {
|
|
137
|
-
if (!req.headers['
|
|
138
|
-
|
|
137
|
+
if (!req.headers['expo-platform']) {
|
|
138
|
+
if (!req.headers['user-agent']?.match(/Expo|React/)) {
|
|
139
|
+
return
|
|
140
|
+
}
|
|
139
141
|
}
|
|
140
142
|
|
|
141
143
|
if (req.url === '/' || req.url?.startsWith('/?platform=')) {
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
|
|
3
3
|
import type { HmrOptions, Plugin, ResolvedConfig, UserConfig } from 'vite'
|
|
4
|
+
import { isNativeEnvironment } from '../utils/environmentUtils'
|
|
4
5
|
|
|
5
6
|
const process_env_NODE_ENV_RE = /(\bglobal(This)?\.)?\bprocess\.env\.NODE_ENV\b/g
|
|
6
7
|
|
|
@@ -78,9 +79,11 @@ export function clientInjectionsPlugin(config: ResolvedConfig): Plugin {
|
|
|
78
79
|
}
|
|
79
80
|
},
|
|
80
81
|
|
|
81
|
-
transform(code, id
|
|
82
|
-
if (
|
|
83
|
-
|
|
82
|
+
transform(code, id) {
|
|
83
|
+
if (isNativeEnvironment(this.environment!)) {
|
|
84
|
+
if (id.includes('vite-native-client/dist/esm/client.')) {
|
|
85
|
+
return injectConfigValues(code)
|
|
86
|
+
}
|
|
84
87
|
}
|
|
85
88
|
},
|
|
86
89
|
}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import { dirname } from 'node:path'
|
|
2
1
|
import { parse } from 'es-module-lexer'
|
|
3
|
-
import
|
|
4
|
-
import type
|
|
2
|
+
import { dirname } from 'node:path'
|
|
3
|
+
import { mergeConfig, type Plugin, type UserConfig } from 'vite'
|
|
5
4
|
import { getVitePath } from '../utils/getVitePath'
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
const getNativeExtensions = (platform: 'ios' | 'android') => {
|
|
7
|
+
return [
|
|
8
|
+
`.${platform}.tsx`,
|
|
9
|
+
`.${platform}.ts`,
|
|
10
|
+
`.${platform}.jsx`,
|
|
11
|
+
`.${platform}.js`,
|
|
12
|
+
'.native.js',
|
|
13
|
+
'.native.ts',
|
|
14
|
+
'.native.tsx',
|
|
15
|
+
'.tsx',
|
|
16
|
+
'.ts',
|
|
17
|
+
'.js',
|
|
18
|
+
'.jsx',
|
|
19
|
+
'.json',
|
|
20
|
+
'.mjs',
|
|
21
|
+
]
|
|
22
|
+
}
|
|
19
23
|
|
|
20
24
|
export function reactNativeCommonJsPlugin(options: {
|
|
21
25
|
root: string
|
|
@@ -26,151 +30,160 @@ export function reactNativeCommonJsPlugin(options: {
|
|
|
26
30
|
name: 'native',
|
|
27
31
|
enforce: 'pre',
|
|
28
32
|
|
|
29
|
-
config: async (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
config.define['process.env.REACT_NATIVE_PLATFORM'] = JSON.stringify(`ios`)
|
|
35
|
-
|
|
36
|
-
if (!config.build) config.build = {}
|
|
37
|
-
|
|
38
|
-
config.build.modulePreload = { polyfill: false }
|
|
39
|
-
// Ensures that even very large assets are inlined in your JavaScript.
|
|
40
|
-
config.build.assetsInlineLimit = 100000000
|
|
41
|
-
// Avoid warnings about large chunks.
|
|
42
|
-
config.build.chunkSizeWarningLimit = 100000000
|
|
43
|
-
// Emit all CSS as a single file, which `vite-plugin-singlefile` can then inline.
|
|
44
|
-
config.build.cssCodeSplit = false
|
|
45
|
-
// Avoids the extra step of testing Brotli compression, which isn't really pertinent to a file served locally.
|
|
46
|
-
config.build.reportCompressedSize = false
|
|
47
|
-
// Subfolder bases are not supported, and shouldn't be needed because we're embedding everything.
|
|
48
|
-
config.base = undefined
|
|
49
|
-
|
|
50
|
-
config.resolve ??= {}
|
|
33
|
+
config: async () => {
|
|
34
|
+
const sharedNativeConfig = {
|
|
35
|
+
// Subfolder bases are not supported, and shouldn't be needed because we're embedding everything
|
|
36
|
+
base: undefined,
|
|
51
37
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
config.optimizeDeps ??= {}
|
|
57
|
-
|
|
58
|
-
config.optimizeDeps.noDiscovery = true
|
|
59
|
-
config.optimizeDeps.include = undefined
|
|
38
|
+
define: {
|
|
39
|
+
'process.env.REACT_NATIVE_SERVER_PUBLIC_PORT': JSON.stringify(`${options.port}`),
|
|
40
|
+
},
|
|
60
41
|
|
|
61
|
-
|
|
62
|
-
|
|
42
|
+
build: {
|
|
43
|
+
modulePreload: {
|
|
44
|
+
polyfill: false,
|
|
45
|
+
},
|
|
46
|
+
// Ensures that even very large assets are inlined in your JavaScript.
|
|
47
|
+
assetsInlineLimit: 100000000,
|
|
48
|
+
// Avoid warnings about large chunks
|
|
49
|
+
chunkSizeWarningLimit: 100000000,
|
|
50
|
+
// Emit all CSS as a single file, which `vite-plugin-singlefile` can then inline
|
|
51
|
+
cssCodeSplit: false,
|
|
52
|
+
// Avoids the extra step of testing Brotli compression, which isn't really pertinent to a file served locally
|
|
53
|
+
reportCompressedSize: false,
|
|
54
|
+
|
|
55
|
+
rollupOptions: {
|
|
56
|
+
output: {
|
|
57
|
+
preserveModules: true,
|
|
58
|
+
manualChunks: undefined,
|
|
59
|
+
// Ensure that as many resources as possible are inlined.
|
|
60
|
+
// inlineDynamicImports: true,
|
|
61
|
+
// this fixes some warnings but breaks import { default as config }
|
|
62
|
+
exports: 'named',
|
|
63
|
+
// ensures we have clean names for our require paths
|
|
64
|
+
entryFileNames: () => `[name].js`,
|
|
65
|
+
},
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
plugins: [
|
|
68
|
+
{
|
|
69
|
+
name: `force-export-all`,
|
|
70
|
+
|
|
71
|
+
async transform(code, id) {
|
|
72
|
+
// if (!id.includes('/node_modules/')) {
|
|
73
|
+
// return
|
|
74
|
+
// }
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
const [imports, exports] = parse(code)
|
|
78
|
+
|
|
79
|
+
let forceExports = ''
|
|
80
|
+
|
|
81
|
+
// note that es-module-lexer parses export * from as an import (twice) for some reason
|
|
82
|
+
let counts = {}
|
|
83
|
+
for (const imp of imports) {
|
|
84
|
+
if (imp.n && imp.n[0] !== '.') {
|
|
85
|
+
counts[imp.n] ||= 0
|
|
86
|
+
counts[imp.n]++
|
|
87
|
+
if (counts[imp.n] == 2) {
|
|
88
|
+
// star export
|
|
89
|
+
const path = await getVitePath(options.root, dirname(id), imp.n)
|
|
90
|
+
forceExports += `Object.assign(exports, require("${path}"));`
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
forceExports += exports
|
|
96
|
+
.map((e) => {
|
|
97
|
+
if (e.n === 'default') {
|
|
98
|
+
return ''
|
|
99
|
+
}
|
|
100
|
+
let out = ''
|
|
101
|
+
if (e.ln !== e.n) {
|
|
102
|
+
// forces the "as x" to be referenced so it gets exported
|
|
103
|
+
out += `__ignore = typeof ${e.n} === 'undefined' ? 0 : 0;`
|
|
104
|
+
}
|
|
105
|
+
out += `globalThis.____forceExport = ${e.ln}`
|
|
106
|
+
return out
|
|
107
|
+
})
|
|
108
|
+
.join(';')
|
|
109
|
+
|
|
110
|
+
return code + '\n' + forceExports
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.warn(`Error forcing exports, probably ok`, id)
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
},
|
|
65
119
|
|
|
66
|
-
|
|
67
|
-
|
|
120
|
+
optimizeDeps: {
|
|
121
|
+
noDiscovery: true,
|
|
122
|
+
include: undefined,
|
|
68
123
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
build.onResolve(
|
|
73
|
-
{
|
|
74
|
-
filter: /\.(png|jpg|gif|webp)$/,
|
|
124
|
+
esbuildOptions: {
|
|
125
|
+
loader: {
|
|
126
|
+
'.js': 'jsx',
|
|
75
127
|
},
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
path: '',
|
|
79
|
-
external: true,
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
)
|
|
128
|
+
},
|
|
83
129
|
},
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
config.build.rollupOptions ??= {}
|
|
87
|
-
|
|
88
|
-
config.build.rollupOptions.output ??= {}
|
|
89
|
-
|
|
90
|
-
config.build.rollupOptions.plugins ??= []
|
|
91
|
-
|
|
92
|
-
if (!Array.isArray(config.build.rollupOptions.plugins)) {
|
|
93
|
-
throw `x`
|
|
94
|
-
}
|
|
130
|
+
} satisfies UserConfig
|
|
95
131
|
|
|
96
|
-
|
|
97
|
-
config.plugins ||= []
|
|
132
|
+
// per-enviroment config:
|
|
98
133
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// }
|
|
106
|
-
|
|
107
|
-
try {
|
|
108
|
-
const [imports, exports] = parse(code)
|
|
109
|
-
|
|
110
|
-
let forceExports = ''
|
|
111
|
-
|
|
112
|
-
// note that es-module-lexer parses export * from as an import (twice) for some reason
|
|
113
|
-
let counts = {}
|
|
114
|
-
for (const imp of imports) {
|
|
115
|
-
if (imp.n && imp.n[0] !== '.') {
|
|
116
|
-
counts[imp.n] ||= 0
|
|
117
|
-
counts[imp.n]++
|
|
118
|
-
if (counts[imp.n] == 2) {
|
|
119
|
-
// star export
|
|
120
|
-
const path = await getVitePath(options.root, dirname(id), imp.n)
|
|
121
|
-
forceExports += `Object.assign(exports, require("${path}"));`
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
forceExports += exports
|
|
127
|
-
.map((e) => {
|
|
128
|
-
if (e.n === 'default') {
|
|
129
|
-
return ''
|
|
130
|
-
}
|
|
131
|
-
let out = ''
|
|
132
|
-
if (e.ln !== e.n) {
|
|
133
|
-
// forces the "as x" to be referenced so it gets exported
|
|
134
|
-
out += `__ignore = typeof ${e.n} === 'undefined' ? 0 : 0;`
|
|
135
|
-
}
|
|
136
|
-
out += `globalThis.____forceExport = ${e.ln}`
|
|
137
|
-
return out
|
|
138
|
-
})
|
|
139
|
-
.join(';')
|
|
140
|
-
|
|
141
|
-
return code + '\n' + forceExports
|
|
142
|
-
} catch (err) {
|
|
143
|
-
console.warn(`Error forcing exports, probably ok`, id)
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
})
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (process.env.DEBUG) {
|
|
150
|
-
console.info('config..', config)
|
|
151
|
-
}
|
|
134
|
+
return {
|
|
135
|
+
environments: {
|
|
136
|
+
ios: mergeConfig(sharedNativeConfig, {
|
|
137
|
+
define: {
|
|
138
|
+
'process.env.REACT_NATIVE_PLATFORM': JSON.stringify(`ios`),
|
|
139
|
+
},
|
|
152
140
|
|
|
153
|
-
|
|
154
|
-
|
|
141
|
+
resolve: {
|
|
142
|
+
extensions: getNativeExtensions('ios'),
|
|
143
|
+
},
|
|
155
144
|
|
|
156
|
-
|
|
157
|
-
|
|
145
|
+
optimizeDeps: {
|
|
146
|
+
esbuildOptions: {
|
|
147
|
+
resolveExtensions: getNativeExtensions('ios'),
|
|
148
|
+
|
|
149
|
+
plugins: [
|
|
150
|
+
{
|
|
151
|
+
name: 'react-native-assets',
|
|
152
|
+
setup(build) {
|
|
153
|
+
build.onResolve(
|
|
154
|
+
{
|
|
155
|
+
filter: /\.(png|jpg|gif|webp)$/,
|
|
156
|
+
},
|
|
157
|
+
async ({ path, namespace }) => {
|
|
158
|
+
return {
|
|
159
|
+
path: '',
|
|
160
|
+
external: true,
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
)
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
} satisfies UserConfig),
|
|
158
170
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
// Ensure that as many resources as possible are inlined.
|
|
164
|
-
// out.inlineDynamicImports = true
|
|
171
|
+
android: mergeConfig(sharedNativeConfig, {
|
|
172
|
+
define: {
|
|
173
|
+
'process.env.REACT_NATIVE_PLATFORM': JSON.stringify(`android`),
|
|
174
|
+
},
|
|
165
175
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
176
|
+
resolve: {
|
|
177
|
+
extensions: getNativeExtensions('android'),
|
|
178
|
+
},
|
|
169
179
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
180
|
+
optimizeDeps: {
|
|
181
|
+
esbuildOptions: {
|
|
182
|
+
resolveExtensions: getNativeExtensions('android'),
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
} satisfies UserConfig),
|
|
186
|
+
},
|
|
174
187
|
}
|
|
175
188
|
},
|
|
176
189
|
}
|
|
@@ -6,11 +6,14 @@ import { entryRoot } from '../utils/getReactNativeBundle'
|
|
|
6
6
|
import { getVitePath } from '../utils/getVitePath'
|
|
7
7
|
import { hotUpdateCache } from '../utils/hotUpdateCache'
|
|
8
8
|
import { isWithin } from '../utils/isWithin'
|
|
9
|
+
import type { Plugin } from 'vite'
|
|
9
10
|
|
|
10
11
|
export function reactNativeHMRPlugin({ root }: VXRNConfigFilled) {
|
|
11
12
|
return {
|
|
12
13
|
name: 'client-transform',
|
|
13
14
|
|
|
15
|
+
// TODO see about moving to hotUpdate
|
|
16
|
+
// https://deploy-preview-16089--vite-docs-main.netlify.app/guide/api-vite-environment.html#the-hotupdate-hook
|
|
14
17
|
async handleHotUpdate({ read, modules, file }) {
|
|
15
18
|
try {
|
|
16
19
|
if (!isWithin(root, file)) {
|
|
@@ -101,5 +104,5 @@ export function reactNativeHMRPlugin({ root }: VXRNConfigFilled) {
|
|
|
101
104
|
console.error(`Error processing hmr update:`, err)
|
|
102
105
|
}
|
|
103
106
|
},
|
|
104
|
-
}
|
|
107
|
+
} satisfies Plugin
|
|
105
108
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Environment } from 'vite'
|
|
2
|
+
|
|
3
|
+
export function isWebEnvironment(environment: Environment) {
|
|
4
|
+
return environment.name === 'client' || environment.name === 'ssr'
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function isNativeEnvironment(environment: Environment) {
|
|
8
|
+
return environment.name === 'ios' || environment.name === 'android'
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function isIOSEnvironment(environment: Environment) {
|
|
12
|
+
return environment.name === 'ios'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function isAndroidEnvironment(environment: Environment) {
|
|
16
|
+
return environment.name === 'android'
|
|
17
|
+
}
|
|
@@ -4,6 +4,15 @@ import type { UserConfig } from 'vite'
|
|
|
4
4
|
// essentially base web config not base everything
|
|
5
5
|
|
|
6
6
|
export function getBaseViteConfig({ mode }: { mode: 'development' | 'production' }): UserConfig {
|
|
7
|
+
const sharedWebConfig = {
|
|
8
|
+
resolve: {
|
|
9
|
+
alias: {
|
|
10
|
+
'react-native': 'react-native-web',
|
|
11
|
+
'react-native-safe-area-context': '@vxrn/safe-area',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
} satisfies UserConfig
|
|
15
|
+
|
|
7
16
|
return {
|
|
8
17
|
mode,
|
|
9
18
|
|
|
@@ -17,7 +26,6 @@ export function getBaseViteConfig({ mode }: { mode: 'development' | 'production'
|
|
|
17
26
|
resolve: {
|
|
18
27
|
alias: {
|
|
19
28
|
'react-native': 'react-native-web',
|
|
20
|
-
'react-native-safe-area-context': '@vxrn/safe-area',
|
|
21
29
|
},
|
|
22
30
|
|
|
23
31
|
// TODO auto dedupe all include optimize deps?
|
|
@@ -38,5 +46,15 @@ export function getBaseViteConfig({ mode }: { mode: 'development' | 'production'
|
|
|
38
46
|
transformMixedEsModules: true,
|
|
39
47
|
},
|
|
40
48
|
},
|
|
49
|
+
|
|
50
|
+
environments: {
|
|
51
|
+
web: {
|
|
52
|
+
...sharedWebConfig,
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
ssr: {
|
|
56
|
+
...sharedWebConfig,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
41
59
|
}
|
|
42
60
|
}
|
|
@@ -42,6 +42,9 @@ export function getOptimizeDeps(mode: 'build' | 'serve') {
|
|
|
42
42
|
'@react-navigation/elements',
|
|
43
43
|
'@react-navigation/bottom-tabs',
|
|
44
44
|
'@react-navigation/native-stack',
|
|
45
|
+
'vxs',
|
|
46
|
+
'vxs/server-render',
|
|
47
|
+
'vxs/headers',
|
|
45
48
|
'requires-port',
|
|
46
49
|
'querystringify',
|
|
47
50
|
'compare-versions',
|
|
@@ -61,8 +64,6 @@ export function getOptimizeDeps(mode: 'build' | 'serve') {
|
|
|
61
64
|
'tamagui/linear-gradient',
|
|
62
65
|
'@tamagui/linear-gradient',
|
|
63
66
|
'@react-native/normalize-color',
|
|
64
|
-
'vxs',
|
|
65
|
-
'vxs/server-render',
|
|
66
67
|
'expo-modules-core',
|
|
67
68
|
'expo-status-bar',
|
|
68
69
|
'react-native-web',
|
|
@@ -3,7 +3,14 @@ import createViteFlow from '@vxrn/vite-flow'
|
|
|
3
3
|
import viteReactPlugin from '@vxrn/vite-native-swc'
|
|
4
4
|
import { readFile } from 'node:fs/promises'
|
|
5
5
|
import { dirname, join, relative } from 'node:path'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
build,
|
|
8
|
+
createBuilder,
|
|
9
|
+
mergeConfig,
|
|
10
|
+
resolveConfig,
|
|
11
|
+
transformWithEsbuild,
|
|
12
|
+
type InlineConfig,
|
|
13
|
+
} from 'vite'
|
|
7
14
|
import { nativeExtensions } from '../constants'
|
|
8
15
|
import { resolveFile } from './resolveFile'
|
|
9
16
|
import { isBuildingNativeBundle, setIsBuildingNativeBundle } from './isBuildingNativeBundle'
|
|
@@ -153,7 +160,9 @@ export async function getReactNativeBundle(options: VXRNConfigFilled, viteRNClie
|
|
|
153
160
|
// // this fixes my swap-react-native plugin not being called pre 😳
|
|
154
161
|
await resolveConfig(nativeBuildConfig, 'build')
|
|
155
162
|
|
|
156
|
-
const
|
|
163
|
+
const builder = await createBuilder(nativeBuildConfig)
|
|
164
|
+
|
|
165
|
+
const buildOutput = await builder.build(builder.environments.ios)
|
|
157
166
|
|
|
158
167
|
if (!('output' in buildOutput)) {
|
|
159
168
|
throw `❌`
|
package/types/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export { serve } from './exports/serve';
|
|
|
4
4
|
export * from './utils/getOptionsFilled';
|
|
5
5
|
export * from './utils/getOptimizeDeps';
|
|
6
6
|
export * from './utils/getBaseViteConfig';
|
|
7
|
+
export * from './utils/environmentUtils';
|
|
7
8
|
export * from './types';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { VXRNConfigFilled } from '../utils/getOptionsFilled';
|
|
2
2
|
export declare function reactNativeHMRPlugin({ root }: VXRNConfigFilled): {
|
|
3
3
|
name: string;
|
|
4
|
-
handleHotUpdate({ read, modules, file }:
|
|
5
|
-
read: any;
|
|
6
|
-
modules: any;
|
|
7
|
-
file: any;
|
|
8
|
-
}): Promise<void>;
|
|
4
|
+
handleHotUpdate(this: void, { read, modules, file }: import("vite").HmrContext): Promise<void>;
|
|
9
5
|
};
|
|
10
6
|
//# sourceMappingURL=reactNativeHMRPlugin.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Environment } from 'vite';
|
|
2
|
+
export declare function isWebEnvironment(environment: Environment): boolean;
|
|
3
|
+
export declare function isNativeEnvironment(environment: Environment): boolean;
|
|
4
|
+
export declare function isIOSEnvironment(environment: Environment): boolean;
|
|
5
|
+
export declare function isAndroidEnvironment(environment: Environment): boolean;
|
|
6
|
+
//# sourceMappingURL=environmentUtils.d.ts.map
|