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.
- package/dist/cjs/cli.js +5 -0
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/cli.native.js +41 -34
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/constants.js +1 -69
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/constants.native.js +1 -105
- package/dist/cjs/constants.native.js.map +2 -2
- package/dist/cjs/exports/build.js +76 -50
- package/dist/cjs/exports/build.js.map +2 -2
- package/dist/cjs/exports/build.native.js +257 -140
- package/dist/cjs/exports/build.native.js.map +2 -2
- package/dist/cjs/exports/dev.js +23 -19
- package/dist/cjs/exports/dev.js.map +1 -1
- package/dist/cjs/exports/dev.native.js +32 -30
- package/dist/cjs/exports/dev.native.js.map +2 -2
- package/dist/cjs/utils/assert.js +24 -0
- package/dist/cjs/utils/assert.js.map +6 -0
- package/dist/cjs/utils/assert.native.js +32 -0
- package/dist/cjs/utils/assert.native.js.map +6 -0
- package/dist/cjs/utils/getOptimizeDeps.js +134 -0
- package/dist/cjs/utils/getOptimizeDeps.js.map +6 -0
- package/dist/cjs/utils/getOptimizeDeps.native.js +173 -0
- package/dist/cjs/utils/getOptimizeDeps.native.js.map +6 -0
- package/dist/esm/cli.js +5 -0
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/cli.mjs +5 -0
- package/dist/esm/cli.native.js +41 -34
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/constants.js +1 -69
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/constants.mjs +2 -12
- package/dist/esm/constants.native.js +1 -103
- package/dist/esm/constants.native.js.map +2 -2
- package/dist/esm/exports/build.js +78 -52
- package/dist/esm/exports/build.js.map +2 -2
- package/dist/esm/exports/build.mjs +80 -55
- package/dist/esm/exports/build.native.js +260 -142
- package/dist/esm/exports/build.native.js.map +2 -2
- package/dist/esm/exports/dev.js +20 -15
- package/dist/esm/exports/dev.js.map +1 -1
- package/dist/esm/exports/dev.mjs +27 -20
- package/dist/esm/exports/dev.native.js +29 -26
- package/dist/esm/exports/dev.native.js.map +2 -2
- package/dist/esm/utils/assert.js +8 -0
- package/dist/esm/utils/assert.js.map +6 -0
- package/dist/esm/utils/assert.mjs +4 -0
- package/dist/esm/utils/assert.native.js +11 -0
- package/dist/esm/utils/assert.native.js.map +6 -0
- package/dist/esm/utils/getOptimizeDeps.js +118 -0
- package/dist/esm/utils/getOptimizeDeps.js.map +6 -0
- package/dist/esm/utils/getOptimizeDeps.mjs +18 -0
- package/dist/esm/utils/getOptimizeDeps.native.js +152 -0
- package/dist/esm/utils/getOptimizeDeps.native.js.map +6 -0
- package/package.json +10 -10
- package/src/cli.ts +5 -0
- package/src/constants.ts +0 -75
- package/src/exports/build.ts +118 -76
- package/src/exports/dev.ts +28 -21
- package/src/utils/assert.ts +5 -0
- package/src/utils/getOptimizeDeps.ts +124 -0
- package/types/constants.d.ts +0 -9
- package/types/exports/build.d.ts +5 -2
- package/types/utils/assert.d.ts +2 -0
- package/types/utils/getOptimizeDeps.d.ts +13 -0
package/src/exports/dev.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
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
|
-
|
|
329
|
-
|
|
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,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
|
+
}
|
package/types/constants.d.ts
CHANGED
|
@@ -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
|
package/types/exports/build.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { VXRNConfig } from '../types';
|
|
2
2
|
export declare const resolveFile: (path: string) => string;
|
|
3
|
-
|
|
3
|
+
type BuildOptions = {
|
|
4
4
|
step?: string;
|
|
5
|
-
|
|
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,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
|