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.
Files changed (194) hide show
  1. package/dist/cjs/exports/build.js.map +1 -1
  2. package/dist/cjs/exports/build.native.js.map +1 -1
  3. package/dist/cjs/exports/dev.js +1 -1
  4. package/dist/cjs/exports/dev.js.map +1 -1
  5. package/dist/cjs/exports/dev.native.js +4 -4
  6. package/dist/cjs/exports/dev.native.js.map +1 -1
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/index.native.js +2 -0
  10. package/dist/cjs/index.native.js.map +1 -1
  11. package/dist/cjs/plugins/clientInjectPlugin.js +3 -3
  12. package/dist/cjs/plugins/clientInjectPlugin.js.map +1 -1
  13. package/dist/cjs/plugins/clientInjectPlugin.native.js +3 -3
  14. package/dist/cjs/plugins/clientInjectPlugin.native.js.map +2 -2
  15. package/dist/cjs/plugins/reactNativeCommonJsPlugin.js +116 -48
  16. package/dist/cjs/plugins/reactNativeCommonJsPlugin.js.map +1 -1
  17. package/dist/cjs/plugins/reactNativeCommonJsPlugin.native.js +208 -147
  18. package/dist/cjs/plugins/reactNativeCommonJsPlugin.native.js.map +2 -2
  19. package/dist/cjs/plugins/reactNativeHMRPlugin.js +2 -0
  20. package/dist/cjs/plugins/reactNativeHMRPlugin.js.map +1 -1
  21. package/dist/cjs/plugins/reactNativeHMRPlugin.native.js +111 -107
  22. package/dist/cjs/plugins/reactNativeHMRPlugin.native.js.map +1 -1
  23. package/dist/cjs/{exports/isWithin.js → utils/environmentUtils.js} +19 -9
  24. package/dist/cjs/utils/environmentUtils.js.map +6 -0
  25. package/dist/cjs/utils/environmentUtils.native.js +43 -0
  26. package/dist/cjs/utils/environmentUtils.native.js.map +6 -0
  27. package/dist/cjs/utils/getBaseViteConfig.js +17 -2
  28. package/dist/cjs/utils/getBaseViteConfig.js.map +1 -1
  29. package/dist/cjs/utils/getBaseViteConfig.native.js +32 -3
  30. package/dist/cjs/utils/getBaseViteConfig.native.js.map +2 -2
  31. package/dist/cjs/utils/getOptimizeDeps.js +3 -2
  32. package/dist/cjs/utils/getOptimizeDeps.js.map +1 -1
  33. package/dist/cjs/utils/getOptimizeDeps.native.js +3 -2
  34. package/dist/cjs/utils/getOptimizeDeps.native.js.map +1 -1
  35. package/dist/cjs/utils/getReactNativeBundle.js +1 -1
  36. package/dist/cjs/utils/getReactNativeBundle.js.map +1 -1
  37. package/dist/cjs/utils/getReactNativeBundle.native.js +8 -3
  38. package/dist/cjs/utils/getReactNativeBundle.native.js.map +2 -2
  39. package/dist/esm/exports/build.js.map +1 -1
  40. package/dist/esm/exports/build.native.js.map +1 -1
  41. package/dist/esm/exports/dev.js +1 -1
  42. package/dist/esm/exports/dev.js.map +1 -1
  43. package/dist/esm/exports/dev.mjs +1 -1
  44. package/dist/esm/exports/dev.native.js +4 -4
  45. package/dist/esm/exports/dev.native.js.map +1 -1
  46. package/dist/esm/index.js +1 -0
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/index.mjs +1 -0
  49. package/dist/esm/index.native.js +1 -0
  50. package/dist/esm/index.native.js.map +1 -1
  51. package/dist/esm/plugins/clientInjectPlugin.js +3 -2
  52. package/dist/esm/plugins/clientInjectPlugin.js.map +1 -1
  53. package/dist/esm/plugins/clientInjectPlugin.mjs +3 -2
  54. package/dist/esm/plugins/clientInjectPlugin.native.js +3 -2
  55. package/dist/esm/plugins/clientInjectPlugin.native.js.map +2 -2
  56. package/dist/esm/plugins/reactNativeCommonJsPlugin.js +117 -48
  57. package/dist/esm/plugins/reactNativeCommonJsPlugin.js.map +1 -1
  58. package/dist/esm/plugins/reactNativeCommonJsPlugin.mjs +107 -41
  59. package/dist/esm/plugins/reactNativeCommonJsPlugin.native.js +209 -147
  60. package/dist/esm/plugins/reactNativeCommonJsPlugin.native.js.map +2 -2
  61. package/dist/esm/plugins/reactNativeHMRPlugin.js +2 -0
  62. package/dist/esm/plugins/reactNativeHMRPlugin.js.map +1 -1
  63. package/dist/esm/plugins/reactNativeHMRPlugin.mjs +2 -0
  64. package/dist/esm/plugins/reactNativeHMRPlugin.native.js +111 -107
  65. package/dist/esm/plugins/reactNativeHMRPlugin.native.js.map +1 -1
  66. package/dist/esm/utils/environmentUtils.js +19 -0
  67. package/dist/esm/utils/environmentUtils.js.map +6 -0
  68. package/dist/esm/utils/environmentUtils.mjs +13 -0
  69. package/dist/esm/utils/environmentUtils.native.js +19 -0
  70. package/dist/esm/utils/environmentUtils.native.js.map +6 -0
  71. package/dist/esm/utils/getBaseViteConfig.js +17 -2
  72. package/dist/esm/utils/getBaseViteConfig.js.map +1 -1
  73. package/dist/esm/utils/getBaseViteConfig.mjs +17 -2
  74. package/dist/esm/utils/getBaseViteConfig.native.js +32 -3
  75. package/dist/esm/utils/getBaseViteConfig.native.js.map +2 -2
  76. package/dist/esm/utils/getOptimizeDeps.js +3 -2
  77. package/dist/esm/utils/getOptimizeDeps.js.map +1 -1
  78. package/dist/esm/utils/getOptimizeDeps.mjs +1 -1
  79. package/dist/esm/utils/getOptimizeDeps.native.js +3 -2
  80. package/dist/esm/utils/getOptimizeDeps.native.js.map +1 -1
  81. package/dist/esm/utils/getReactNativeBundle.js +6 -2
  82. package/dist/esm/utils/getReactNativeBundle.js.map +1 -1
  83. package/dist/esm/utils/getReactNativeBundle.mjs +3 -2
  84. package/dist/esm/utils/getReactNativeBundle.native.js +9 -4
  85. package/dist/esm/utils/getReactNativeBundle.native.js.map +2 -2
  86. package/package.json +5 -5
  87. package/src/exports/build.ts +0 -1
  88. package/src/exports/dev.ts +4 -2
  89. package/src/index.ts +2 -0
  90. package/src/plugins/clientInjectPlugin.ts +6 -3
  91. package/src/plugins/reactNativeCommonJsPlugin.ts +159 -146
  92. package/src/plugins/reactNativeHMRPlugin.ts +4 -1
  93. package/src/utils/environmentUtils.ts +17 -0
  94. package/src/utils/getBaseViteConfig.ts +19 -1
  95. package/src/utils/getOptimizeDeps.ts +3 -2
  96. package/src/utils/getReactNativeBundle.ts +11 -2
  97. package/types/index.d.ts +1 -0
  98. package/types/plugins/reactNativeCommonJsPlugin.d.ts +1 -1
  99. package/types/plugins/reactNativeHMRPlugin.d.ts +1 -5
  100. package/types/utils/environmentUtils.d.ts +6 -0
  101. package/dist/cjs/exports/bindKeypressInput.js +0 -58
  102. package/dist/cjs/exports/bindKeypressInput.js.map +0 -6
  103. package/dist/cjs/exports/bindKeypressInput.native.js +0 -63
  104. package/dist/cjs/exports/bindKeypressInput.native.js.map +0 -6
  105. package/dist/cjs/exports/coerceToArray.js +0 -23
  106. package/dist/cjs/exports/coerceToArray.js.map +0 -6
  107. package/dist/cjs/exports/connectedNativeClients.js +0 -21
  108. package/dist/cjs/exports/connectedNativeClients.js.map +0 -6
  109. package/dist/cjs/exports/empty.js +0 -1
  110. package/dist/cjs/exports/empty.js.map +0 -6
  111. package/dist/cjs/exports/empty.native.js +0 -2
  112. package/dist/cjs/exports/empty.native.js.map +0 -6
  113. package/dist/cjs/exports/entryRoot.js +0 -69
  114. package/dist/cjs/exports/entryRoot.js.map +0 -6
  115. package/dist/cjs/exports/getIndexJsonResponse.js +0 -71
  116. package/dist/cjs/exports/getIndexJsonResponse.js.map +0 -6
  117. package/dist/cjs/exports/getIndexJsonResponse.native.js +0 -99
  118. package/dist/cjs/exports/getIndexJsonResponse.native.js.map +0 -6
  119. package/dist/cjs/exports/getReactNativeBundle.js +0 -160
  120. package/dist/cjs/exports/getReactNativeBundle.js.map +0 -6
  121. package/dist/cjs/exports/getViteServerConfig.js +0 -77
  122. package/dist/cjs/exports/getViteServerConfig.js.map +0 -6
  123. package/dist/cjs/exports/getViteServerConfig.native.js +0 -253
  124. package/dist/cjs/exports/getViteServerConfig.native.js.map +0 -6
  125. package/dist/cjs/exports/hotUpdateCache.js +0 -21
  126. package/dist/cjs/exports/hotUpdateCache.js.map +0 -6
  127. package/dist/cjs/exports/isBuildingNativeBundle.js +0 -21
  128. package/dist/cjs/exports/isBuildingNativeBundle.js.map +0 -6
  129. package/dist/cjs/exports/isWithin.js.map +0 -6
  130. package/dist/cjs/exports/reactNativeHMRPlugin.js +0 -69
  131. package/dist/cjs/exports/reactNativeHMRPlugin.js.map +0 -6
  132. package/dist/cjs/exports/swapPrebuiltReactModules.js +0 -100
  133. package/dist/cjs/exports/swapPrebuiltReactModules.js.map +0 -6
  134. package/dist/cjs/exports/uniq.js +0 -23
  135. package/dist/cjs/exports/uniq.js.map +0 -6
  136. package/dist/cjs/utils/getHtml.js +0 -49
  137. package/dist/cjs/utils/getHtml.js.map +0 -6
  138. package/dist/cjs/utils/getHtml.native.js +0 -76
  139. package/dist/cjs/utils/getHtml.native.js.map +0 -6
  140. package/dist/esm/exports/bindKeypressInput.js +0 -34
  141. package/dist/esm/exports/bindKeypressInput.js.map +0 -6
  142. package/dist/esm/exports/bindKeypressInput.mjs +0 -31
  143. package/dist/esm/exports/bindKeypressInput.native.js +0 -34
  144. package/dist/esm/exports/bindKeypressInput.native.js.map +0 -6
  145. package/dist/esm/exports/coerceToArray.js +0 -7
  146. package/dist/esm/exports/coerceToArray.js.map +0 -6
  147. package/dist/esm/exports/coerceToArray.mjs +0 -4
  148. package/dist/esm/exports/connectedNativeClients.js +0 -5
  149. package/dist/esm/exports/connectedNativeClients.js.map +0 -6
  150. package/dist/esm/exports/connectedNativeClients.mjs +0 -2
  151. package/dist/esm/exports/empty.js +0 -1
  152. package/dist/esm/exports/empty.js.map +0 -6
  153. package/dist/esm/exports/empty.mjs +0 -0
  154. package/dist/esm/exports/empty.native.js +0 -1
  155. package/dist/esm/exports/empty.native.js.map +0 -6
  156. package/dist/esm/exports/entryRoot.js +0 -58
  157. package/dist/esm/exports/entryRoot.js.map +0 -6
  158. package/dist/esm/exports/entryRoot.mjs +0 -62
  159. package/dist/esm/exports/getIndexJsonResponse.js +0 -55
  160. package/dist/esm/exports/getIndexJsonResponse.js.map +0 -6
  161. package/dist/esm/exports/getIndexJsonResponse.mjs +0 -71
  162. package/dist/esm/exports/getIndexJsonResponse.native.js +0 -78
  163. package/dist/esm/exports/getIndexJsonResponse.native.js.map +0 -6
  164. package/dist/esm/exports/getReactNativeBundle.js +0 -146
  165. package/dist/esm/exports/getReactNativeBundle.js.map +0 -6
  166. package/dist/esm/exports/getReactNativeBundle.mjs +0 -136
  167. package/dist/esm/exports/getViteServerConfig.js +0 -64
  168. package/dist/esm/exports/getViteServerConfig.js.map +0 -6
  169. package/dist/esm/exports/getViteServerConfig.mjs +0 -44
  170. package/dist/esm/exports/getViteServerConfig.native.js +0 -235
  171. package/dist/esm/exports/getViteServerConfig.native.js.map +0 -6
  172. package/dist/esm/exports/hotUpdateCache.js +0 -5
  173. package/dist/esm/exports/hotUpdateCache.js.map +0 -6
  174. package/dist/esm/exports/hotUpdateCache.mjs +0 -2
  175. package/dist/esm/exports/isBuildingNativeBundle.js +0 -5
  176. package/dist/esm/exports/isBuildingNativeBundle.js.map +0 -6
  177. package/dist/esm/exports/isBuildingNativeBundle.mjs +0 -2
  178. package/dist/esm/exports/isWithin.js +0 -9
  179. package/dist/esm/exports/isWithin.js.map +0 -6
  180. package/dist/esm/exports/isWithin.mjs +0 -6
  181. package/dist/esm/exports/reactNativeHMRPlugin.js +0 -58
  182. package/dist/esm/exports/reactNativeHMRPlugin.js.map +0 -6
  183. package/dist/esm/exports/reactNativeHMRPlugin.mjs +0 -62
  184. package/dist/esm/exports/swapPrebuiltReactModules.js +0 -87
  185. package/dist/esm/exports/swapPrebuiltReactModules.js.map +0 -6
  186. package/dist/esm/exports/swapPrebuiltReactModules.mjs +0 -73
  187. package/dist/esm/exports/uniq.js +0 -7
  188. package/dist/esm/exports/uniq.js.map +0 -6
  189. package/dist/esm/exports/uniq.mjs +0 -4
  190. package/dist/esm/utils/getHtml.js +0 -33
  191. package/dist/esm/utils/getHtml.js.map +0 -6
  192. package/dist/esm/utils/getHtml.mjs +0 -23
  193. package/dist/esm/utils/getHtml.native.js +0 -55
  194. 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 { build, resolveConfig, transformWithEsbuild } from "vite";
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
- build(nativeBuildConfig)
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 8:
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": "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",
5
- "names": ["babel", "createViteFlow", "viteReactPlugin", "readFile", "dirname", "join", "relative", "build", "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", "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", "ssr", "minify", "commonjsOptions", "transformMixedEsModules", "rollupOptions", "entries", "native", "treeshake", "preserveEntrySignatures", "output", "preserveModules", "format", "sort", "a", "b", "map", "outputModule", "type", "importsMap", "currentPath", "fileName", "imports", "imp", "relativePath", "isEntry", "JSON", "stringify", "replaceAll", "reactJSX", "react", "reactNative", "replace"]
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.97",
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.97",
39
- "@vxrn/safe-area": "0.1.97",
40
- "@vxrn/vite-flow": "0.1.97",
41
- "@vxrn/vite-native-swc": "0.1.97",
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",
@@ -4,7 +4,6 @@ import type { RollupOutput } from 'rollup'
4
4
  import {
5
5
  loadConfigFromFile,
6
6
  mergeConfig,
7
- resolveConfig,
8
7
  build as viteBuild,
9
8
  type Plugin,
10
9
  type UserConfig,
@@ -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['user-agent']?.match(/Expo|React/)) {
138
- return
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
@@ -6,4 +6,6 @@ export * from './utils/getOptionsFilled'
6
6
  export * from './utils/getOptimizeDeps'
7
7
  export * from './utils/getBaseViteConfig'
8
8
 
9
+ export * from './utils/environmentUtils'
10
+
9
11
  export * from './types'
@@ -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, options) {
82
- if (id.includes('vite-native-client/dist/esm/client.')) {
83
- return injectConfigValues(code)
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 type { OutputOptions } from 'rollup'
4
- import type { Plugin } from 'vite'
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 extensions = [
8
- '.ios.js',
9
- '.native.js',
10
- '.native.ts',
11
- '.native.tsx',
12
- '.js',
13
- '.jsx',
14
- '.json',
15
- '.ts',
16
- '.tsx',
17
- '.mjs',
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 (config) => {
30
- config.define ||= {}
31
- config.define['process.env.REACT_NATIVE_SERVER_PUBLIC_PORT'] = JSON.stringify(
32
- `${options.port}`
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
- config.resolve.extensions = extensions
53
-
54
- config.resolve.conditions = ['react-native', 'require', 'default', 'import']
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
- config.optimizeDeps.esbuildOptions ??= {}
62
- config.optimizeDeps.esbuildOptions.resolveExtensions = extensions
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
- config.optimizeDeps.esbuildOptions.plugins ??= []
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
- config.optimizeDeps.esbuildOptions.loader ??= {}
67
- config.optimizeDeps.esbuildOptions.loader['.js'] = 'jsx'
120
+ optimizeDeps: {
121
+ noDiscovery: true,
122
+ include: undefined,
68
123
 
69
- config.optimizeDeps.esbuildOptions.plugins.push({
70
- name: 'react-native-assets',
71
- setup(build) {
72
- build.onResolve(
73
- {
74
- filter: /\.(png|jpg|gif|webp)$/,
124
+ esbuildOptions: {
125
+ loader: {
126
+ '.js': 'jsx',
75
127
  },
76
- async ({ path, namespace }) => {
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
- if (options.mode === 'build') {
97
- config.plugins ||= []
132
+ // per-enviroment config:
98
133
 
99
- config.build.rollupOptions.plugins.push({
100
- name: `force-export-all`,
101
-
102
- async transform(code, id) {
103
- // if (!id.includes('/node_modules/')) {
104
- // return
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
- const updateOutputOptions = (out: OutputOptions) => {
154
- out.preserveModules = true
141
+ resolve: {
142
+ extensions: getNativeExtensions('ios'),
143
+ },
155
144
 
156
- // this fixes some warnings but breaks import { default as config }
157
- // out.exports = 'named'
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
- out.entryFileNames = (chunkInfo) => {
160
- // ensures we have clean names for our require paths
161
- return '[name].js'
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
- // added by me (nate):
167
- out.manualChunks = undefined
168
- }
176
+ resolve: {
177
+ extensions: getNativeExtensions('android'),
178
+ },
169
179
 
170
- if (Array.isArray(config.build.rollupOptions.output)) {
171
- for (const o in config.build.rollupOptions.output) updateOutputOptions(o as OutputOptions)
172
- } else {
173
- updateOutputOptions(config.build.rollupOptions.output as OutputOptions)
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 { build, mergeConfig, resolveConfig, transformWithEsbuild, type InlineConfig } from 'vite'
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 buildOutput = await build(nativeBuildConfig)
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,4 +1,4 @@
1
- import type { Plugin } from 'vite';
1
+ import { type Plugin } from 'vite';
2
2
  export declare function reactNativeCommonJsPlugin(options: {
3
3
  root: string;
4
4
  port: number;
@@ -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