vxrn 0.1.47 → 0.1.49

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 (65) hide show
  1. package/dist/cjs/cli.js +5 -0
  2. package/dist/cjs/cli.js.map +1 -1
  3. package/dist/cjs/cli.native.js +41 -34
  4. package/dist/cjs/cli.native.js.map +1 -1
  5. package/dist/cjs/constants.js +1 -69
  6. package/dist/cjs/constants.js.map +1 -1
  7. package/dist/cjs/constants.native.js +1 -105
  8. package/dist/cjs/constants.native.js.map +2 -2
  9. package/dist/cjs/exports/build.js +76 -50
  10. package/dist/cjs/exports/build.js.map +2 -2
  11. package/dist/cjs/exports/build.native.js +257 -140
  12. package/dist/cjs/exports/build.native.js.map +2 -2
  13. package/dist/cjs/exports/dev.js +23 -19
  14. package/dist/cjs/exports/dev.js.map +1 -1
  15. package/dist/cjs/exports/dev.native.js +32 -30
  16. package/dist/cjs/exports/dev.native.js.map +2 -2
  17. package/dist/cjs/utils/assert.js +24 -0
  18. package/dist/cjs/utils/assert.js.map +6 -0
  19. package/dist/cjs/utils/assert.native.js +32 -0
  20. package/dist/cjs/utils/assert.native.js.map +6 -0
  21. package/dist/cjs/utils/getOptimizeDeps.js +134 -0
  22. package/dist/cjs/utils/getOptimizeDeps.js.map +6 -0
  23. package/dist/cjs/utils/getOptimizeDeps.native.js +173 -0
  24. package/dist/cjs/utils/getOptimizeDeps.native.js.map +6 -0
  25. package/dist/esm/cli.js +5 -0
  26. package/dist/esm/cli.js.map +1 -1
  27. package/dist/esm/cli.mjs +5 -0
  28. package/dist/esm/cli.native.js +41 -34
  29. package/dist/esm/cli.native.js.map +1 -1
  30. package/dist/esm/constants.js +1 -69
  31. package/dist/esm/constants.js.map +1 -1
  32. package/dist/esm/constants.mjs +2 -12
  33. package/dist/esm/constants.native.js +1 -103
  34. package/dist/esm/constants.native.js.map +2 -2
  35. package/dist/esm/exports/build.js +78 -52
  36. package/dist/esm/exports/build.js.map +2 -2
  37. package/dist/esm/exports/build.mjs +80 -55
  38. package/dist/esm/exports/build.native.js +260 -142
  39. package/dist/esm/exports/build.native.js.map +2 -2
  40. package/dist/esm/exports/dev.js +20 -15
  41. package/dist/esm/exports/dev.js.map +1 -1
  42. package/dist/esm/exports/dev.mjs +27 -20
  43. package/dist/esm/exports/dev.native.js +29 -26
  44. package/dist/esm/exports/dev.native.js.map +2 -2
  45. package/dist/esm/utils/assert.js +8 -0
  46. package/dist/esm/utils/assert.js.map +6 -0
  47. package/dist/esm/utils/assert.mjs +4 -0
  48. package/dist/esm/utils/assert.native.js +11 -0
  49. package/dist/esm/utils/assert.native.js.map +6 -0
  50. package/dist/esm/utils/getOptimizeDeps.js +118 -0
  51. package/dist/esm/utils/getOptimizeDeps.js.map +6 -0
  52. package/dist/esm/utils/getOptimizeDeps.mjs +18 -0
  53. package/dist/esm/utils/getOptimizeDeps.native.js +152 -0
  54. package/dist/esm/utils/getOptimizeDeps.native.js.map +6 -0
  55. package/package.json +10 -10
  56. package/src/cli.ts +5 -0
  57. package/src/constants.ts +0 -75
  58. package/src/exports/build.ts +118 -76
  59. package/src/exports/dev.ts +28 -21
  60. package/src/utils/assert.ts +5 -0
  61. package/src/utils/getOptimizeDeps.ts +124 -0
  62. package/types/constants.d.ts +0 -9
  63. package/types/exports/build.d.ts +5 -2
  64. package/types/utils/assert.d.ts +2 -0
  65. package/types/utils/getOptimizeDeps.d.ts +13 -0
@@ -13,7 +13,6 @@ import { createServer as nodeCreateServer } from 'node:http'
13
13
  import { dirname, join, relative, resolve } from 'node:path'
14
14
  import readline from 'node:readline'
15
15
  import { WebSocket } from 'ws'
16
-
17
16
  import * as babel from '@babel/core'
18
17
  import { buildReact, buildReactJSX, buildReactNative } from '@vxrn/react-native-prebuilt'
19
18
  import viteReactPlugin, { swcTransform, transformForBuild } from '@vxrn/vite-native-swc'
@@ -33,7 +32,7 @@ import {
33
32
  import createViteFlow from '@vxrn/vite-flow'
34
33
  import type { Peer } from 'crossws'
35
34
  import { resolve as importMetaResolve } from 'import-meta-resolve'
36
- import { depsToOptimize, nativeExtensions, optimizeDeps } from '../constants'
35
+ import { nativeExtensions } from '../constants'
37
36
  import { clientInjectionsPlugin } from '../plugins/clientInjectPlugin'
38
37
  import { reactNativeCommonJsPlugin } from '../plugins/reactNativeCommonJsPlugin'
39
38
  import type { VXRNConfig } from '../types'
@@ -41,6 +40,7 @@ import { getBaseViteConfig } from '../utils/getBaseViteConfig'
41
40
  import { getOptionsFilled, type VXRNConfigFilled } from '../utils/getOptionsFilled'
42
41
  import { getVitePath } from '../utils/getVitePath'
43
42
  import { checkPatches } from '../utils/patches'
43
+ import { getOptimizeDeps } from '../utils/getOptimizeDeps'
44
44
 
45
45
  // sorry for the mess, exploring before abstracting
46
46
 
@@ -178,7 +178,6 @@ export const dev = async ({ clean, ...rest }: VXRNConfig & { clean?: boolean })
178
178
  const { handleUpgrade } = wsAdapter(app.websocket)
179
179
 
180
180
  // vite hmr two way bridge:
181
- // vite hmr:
182
181
  app.use(
183
182
  '/__vxrnhmr',
184
183
  defineEventHandler({
@@ -295,11 +294,14 @@ export const dev = async ({ clean, ...rest }: VXRNConfig & { clean?: boolean })
295
294
  )
296
295
 
297
296
  // Define proxy event handler
298
- const proxyEventHandler = createProxyEventHandler({
299
- target: `http://127.0.0.1:${vitePort}`,
300
- enableLogger: !!process.env.DEBUG,
301
- })
302
- app.use(eventHandler(proxyEventHandler))
297
+ app.use(
298
+ eventHandler(
299
+ createProxyEventHandler({
300
+ target: `http://127.0.0.1:${vitePort}`,
301
+ enableLogger: process.env.DEBUG?.startsWith('vxrn'),
302
+ })
303
+ )
304
+ )
303
305
 
304
306
  const server = nodeCreateServer(toNodeListener(app))
305
307
 
@@ -314,21 +316,23 @@ export const dev = async ({ clean, ...rest }: VXRNConfig & { clean?: boolean })
314
316
 
315
317
  console.info(`Server running on http://localhost:${port}`)
316
318
 
317
- // bridge socket between vite
318
- if (vitePort) {
319
- socket = new WebSocket(`ws://localhost:${vitePort}/__vxrnhmr`, 'vite-hmr')
319
+ server.once('listening', () => {
320
+ // bridge socket between vite
321
+ if (vitePort) {
322
+ socket = new WebSocket(`ws://127.0.0.1:${vitePort}/__vxrnhmr`, 'vite-hmr')
320
323
 
321
- socket.on('message', (msg) => {
322
- const message = msg.toString()
323
- for (const listener of [...clients]) {
324
- listener.send(message)
325
- }
326
- })
324
+ socket.on('message', (msg) => {
325
+ const message = msg.toString()
326
+ for (const listener of [...clients]) {
327
+ listener.send(message)
328
+ }
329
+ })
327
330
 
328
- socket.on('error', (err) => {
329
- console.info('error bridging socket to vite', err)
330
- })
331
- }
331
+ socket.on('error', (err) => {
332
+ console.info('error bridging socket to vite', err)
333
+ })
334
+ }
335
+ })
332
336
 
333
337
  return {
334
338
  closePromise: new Promise((res) => viteServer.httpServer?.on('close', res)),
@@ -343,6 +347,7 @@ export const dev = async ({ clean, ...rest }: VXRNConfig & { clean?: boolean })
343
347
 
344
348
  async function getReactNativeBundle(options: VXRNConfigFilled, viteRNClientPlugin: any) {
345
349
  const { root, port, cacheDir } = options
350
+ const { depsToOptimize } = getOptimizeDeps('build')
346
351
 
347
352
  if (process.env.LOAD_TMP_BUNDLE) {
348
353
  // for easier quick testing things:
@@ -771,6 +776,7 @@ let entryRoot = ''
771
776
 
772
777
  async function getViteServerConfig(config: VXRNConfigFilled) {
773
778
  const { root, host, webConfig } = config
779
+ const { optimizeDeps } = getOptimizeDeps('serve')
774
780
 
775
781
  let serverConfig: UserConfig = mergeConfig(
776
782
  getBaseViteConfig({
@@ -792,6 +798,7 @@ async function getViteServerConfig(config: VXRNConfigFilled) {
792
798
  },
793
799
  },
794
800
  ],
801
+
795
802
  optimizeDeps,
796
803
 
797
804
  ssr: {
@@ -0,0 +1,5 @@
1
+ export function assertIsError(error: unknown): asserts error is Error {
2
+ if (!(error instanceof Error)) {
3
+ throw error
4
+ }
5
+ }
@@ -0,0 +1,124 @@
1
+ import { optimizeDeps, type UserConfig } from 'vite'
2
+ import { webExtensions } from '../constants'
3
+
4
+ export function getOptimizeDeps(mode: 'build' | 'serve') {
5
+ const needsInterop = [
6
+ 'react',
7
+ 'react/jsx-runtime',
8
+ 'react/jsx-dev-runtime',
9
+ 'react-native-web-internals',
10
+ 'react-dom',
11
+ 'react-native-web',
12
+ 'react-dom/server',
13
+ 'react-dom/client',
14
+ 'url-parse',
15
+ '@vxrn/safe-area',
16
+ 'query-string',
17
+ 'escape-string-regexp',
18
+ 'use-latest-callback',
19
+ 'react-is',
20
+ 'fast-deep-equal',
21
+ 'react-native-svg',
22
+ '@supabase/auth-helpers-react',
23
+ 'parse-numeric-range',
24
+ 'use-sync-external-store',
25
+ 'use-sync-external-store/shim',
26
+ 'expo-constants',
27
+ 'expo-linking',
28
+ 'uuid',
29
+ '@react-navigation/core',
30
+ '@react-navigation/native',
31
+ '@react-navigation/elements',
32
+ '@react-navigation/bottom-tabs',
33
+ '@react-navigation/native-stack',
34
+ 'inline-style-prefixer',
35
+ '@docsearch/react',
36
+ '@algolia/autocomplete-core',
37
+ '@algolia/autocomplete-plugin-algolia-insights',
38
+ '@algolia/autocomplete-shared',
39
+ 'react-native-reanimated',
40
+ 'moti',
41
+ ]
42
+
43
+ const depsToOptimize = [
44
+ ...needsInterop,
45
+ 'requires-port',
46
+ 'querystringify',
47
+ 'compare-versions',
48
+ 'strict-uri-encode',
49
+ 'decode-uri-component',
50
+ 'split-on-first',
51
+ 'filter-obj',
52
+ 'scheduler',
53
+ 'warn-once',
54
+ '@radix-ui/react-compose-refs',
55
+ '@radix-ui/react-slot',
56
+ 'expo-splash-screen',
57
+ 'nanoid',
58
+ 'swr',
59
+ 'refractor/lang/tsx',
60
+ 'invariant',
61
+ 'tamagui/linear-gradient',
62
+ '@tamagui/linear-gradient',
63
+ '@react-native/normalize-color',
64
+ '@vxrn/router',
65
+ 'expo-modules-core',
66
+ 'expo-status-bar',
67
+ 'react-native-web',
68
+ 'react-native-web-lite',
69
+ 'react-native',
70
+ '@floating-ui/react',
71
+ '@floating-ui/react-dom',
72
+ '@tamagui/constants',
73
+ '@tamagui/react-native-use-responder-events',
74
+ '@tamagui/alert-dialog',
75
+ '@react-navigation/routers',
76
+ '@tamagui/simple-hash',
77
+ '@tamagui/use-did-finish-ssr',
78
+ '@tamagui/use-event',
79
+ '@tamagui/portal',
80
+ '@tamagui/compose-refs',
81
+ '@tamagui/avatar',
82
+ '@tamagui/core',
83
+ '@tamagui/dialog',
84
+ '@tamagui/group',
85
+ '@tamagui/helpers-icon',
86
+ '@tamagui/helpers',
87
+ '@tamagui/image',
88
+ '@tamagui/lucide-icons',
89
+ '@tamagui/popover',
90
+ '@tamagui/popper',
91
+ '@tamagui/scroll-view',
92
+ '@tamagui/select',
93
+ '@tamagui/sheet',
94
+ '@tamagui/switch',
95
+ '@tamagui/tabs',
96
+ '@tamagui/toast',
97
+ '@tamagui/toggle-group',
98
+ '@tamagui/tooltip',
99
+ '@tamagui/use-window-dimensions',
100
+ '@tamagui/web',
101
+ 'tamagui',
102
+ 'react-native-web',
103
+ 'react-native-web-lite',
104
+ 'reforest',
105
+ ]
106
+
107
+ if (mode === 'build') {
108
+ // breaks in serve mode
109
+ depsToOptimize.push('@babel/runtime')
110
+ }
111
+
112
+ return {
113
+ needsInterop,
114
+ depsToOptimize,
115
+ optimizeDeps: {
116
+ include: depsToOptimize,
117
+ exclude: ['util', '@swc/wasm', '@swc/core-darwin-arm64'],
118
+ needsInterop,
119
+ esbuildOptions: {
120
+ resolveExtensions: webExtensions,
121
+ },
122
+ } satisfies UserConfig['optimizeDeps'],
123
+ }
124
+ }
@@ -1,13 +1,4 @@
1
1
  export declare const DEFAULT_PORT = 8081;
2
2
  export declare const nativeExtensions: string[];
3
3
  export declare const webExtensions: string[];
4
- export declare const depsToOptimize: string[];
5
- export declare const optimizeDeps: {
6
- include: string[];
7
- exclude: string[];
8
- needsInterop: string[];
9
- esbuildOptions: {
10
- resolveExtensions: string[];
11
- };
12
- };
13
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1,6 +1,9 @@
1
1
  import type { VXRNConfig } from '../types';
2
2
  export declare const resolveFile: (path: string) => string;
3
- export declare const build: (optionsIn: VXRNConfig, { step }?: {
3
+ type BuildOptions = {
4
4
  step?: string;
5
- }) => Promise<void>;
5
+ page?: string;
6
+ };
7
+ export declare const build: (optionsIn: VXRNConfig, buildOptions?: BuildOptions) => Promise<void>;
8
+ export {};
6
9
  //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function assertIsError(error: unknown): asserts error is Error;
2
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1,13 @@
1
+ export declare function getOptimizeDeps(mode: 'build' | 'serve'): {
2
+ needsInterop: string[];
3
+ depsToOptimize: string[];
4
+ optimizeDeps: {
5
+ include: string[];
6
+ exclude: string[];
7
+ needsInterop: string[];
8
+ esbuildOptions: {
9
+ resolveExtensions: string[];
10
+ };
11
+ };
12
+ };
13
+ //# sourceMappingURL=getOptimizeDeps.d.ts.map