vxrn 2.7.6 → 2.7.7
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/config/getOptimizeDeps.mjs +1 -1
- package/dist/config/getOptimizeDeps.mjs.map +1 -1
- package/dist/config/getOptimizeDeps.native.js +3 -1
- package/dist/config/getOptimizeDeps.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +13 -2
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +47 -5
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/package.json +12 -12
- package/src/config/getOptimizeDeps.ts +3 -1
- package/src/config/ssrVendorOptimization.test.ts +115 -0
- package/src/utils/createNativeDevEngine.test.ts +80 -4
- package/src/utils/createNativeDevEngine.ts +36 -7
- package/types/config/getOptimizeDeps.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOptimizeDeps.js","names":[],"sources":["config/getOptimizeDeps.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n const needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n const depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"one/drawer\",\n // prebundled with one so its tabs read the same route context\n \"one/ui\",\n // one's own copy, by alias: prebundled with one so both share one context\n \"react-native-safe-area-context\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: { \".js\": \"jsx\", \".ts\": \"ts\", \".tsx\": \"tsx\" },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,MAAM,eAAe;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM,iBAAiB;
|
|
1
|
+
{"version":3,"file":"getOptimizeDeps.js","names":[],"sources":["config/getOptimizeDeps.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n const needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n const depsToOptimize = [\n // patched React entries reach the vendor transitively when needed; forcing\n // every vendor entry also bundles a second, unused runtime for React 19 apps.\n ...needsInterop.filter((dep) => !dep.startsWith(\"@vxrn/vendor/react\")),\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"one/drawer\",\n // prebundled with one so its tabs read the same route context\n \"one/ui\",\n // one's own copy, by alias: prebundled with one so both share one context\n \"react-native-safe-area-context\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: { \".js\": \"jsx\", \".ts\": \"ts\", \".tsx\": \"tsx\" },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,MAAM,eAAe;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM,iBAAiB;EAGrB,GAAG,aAAa,QAAQ,QAAQ,CAAC,IAAI,WAAW,oBAAoB,CAAC;EACrE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAWA,WAAW,EACT,QAAQ,EACN,uBAAuB,UACzB,EACF;IAMA,aAAa;KAAE,OAAO;KAAO,OAAO;KAAM,QAAQ;IAAM;IAKxD,oBAAoB;GACtB;EACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOptimizeDeps.native.js","names":[],"sources":["config/getOptimizeDeps.native.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n var needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n var depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"one/drawer\",\n // prebundled with one so its tabs read the same route context\n \"one/ui\",\n // one's own copy, by alias: prebundled with one so both share one context\n \"react-native-safe-area-context\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: {\n \".js\": \"jsx\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\"\n },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,IAAI,eAAe;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,iBAAiB;
|
|
1
|
+
{"version":3,"file":"getOptimizeDeps.native.js","names":[],"sources":["config/getOptimizeDeps.native.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n var needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n var depsToOptimize = [\n // patched React entries reach the vendor transitively when needed; forcing\n // every vendor entry also bundles a second, unused runtime for React 19 apps.\n ...needsInterop.filter(function(dep) {\n return !dep.startsWith(\"@vxrn/vendor/react\");\n }),\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"one/drawer\",\n // prebundled with one so its tabs read the same route context\n \"one/ui\",\n // one's own copy, by alias: prebundled with one so both share one context\n \"react-native-safe-area-context\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: {\n \".js\": \"jsx\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\"\n },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,IAAI,eAAe;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,iBAAiB;EAGnB,GAAG,aAAa,OAAO,SAAS,KAAK;GACnC,OAAO,CAAC,IAAI,WAAW,oBAAoB;EAC7C,CAAC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAWA,WAAW,EACT,QAAQ,EACN,uBAAuB,UACzB,EACF;IAMA,aAAa;KACX,OAAO;KACP,OAAO;KACP,QAAQ;IACV;IAKA,oBAAoB;GACtB;EACF;CACF;AACF"}
|
|
@@ -197,7 +197,7 @@ function getNativeOutputOptions(prelude, sourcemap, minify) {
|
|
|
197
197
|
};
|
|
198
198
|
}
|
|
199
199
|
function normalizeNativeCommonJSInterop(code) {
|
|
200
|
-
return code.replace(/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g, "$1$2");
|
|
200
|
+
return code.replace(/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|[\w$]+|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g, "$1$2");
|
|
201
201
|
}
|
|
202
202
|
function blankPreservingLines(match) {
|
|
203
203
|
return "\n".repeat(match.match(/\n/g)?.length ?? 0);
|
|
@@ -363,12 +363,19 @@ try {
|
|
|
363
363
|
},
|
|
364
364
|
onHmrUpdates: async (result) => {
|
|
365
365
|
await engine?.ensureCurrentBuildFinish();
|
|
366
|
+
if (await rebuildIfRouteGraphChanged()) return;
|
|
366
367
|
if (result instanceof Error) {
|
|
368
|
+
const { removedFiles, registryId } = virtualEntry.routes;
|
|
369
|
+
const errors = result.errors ?? [];
|
|
370
|
+
if (registryId && errors.length && errors.every((e) => {
|
|
371
|
+
if (e.code !== "UNRESOLVED_IMPORT" || e.id !== registryId || !e.exporter) return false;
|
|
372
|
+
const file = normalizePath(resolve(dirname(e.id), e.exporter));
|
|
373
|
+
return removedFiles.has(file);
|
|
374
|
+
})) return;
|
|
367
375
|
console.error("[vxrn] HMR error:", result.message);
|
|
368
376
|
onHmrUpdate?.({ type: "hmr:error" });
|
|
369
377
|
return;
|
|
370
378
|
}
|
|
371
|
-
if (await rebuildIfRouteGraphChanged()) return;
|
|
372
379
|
for (const { clientId, update } of result.updates) if (update.type === "Patch" && update.code) {
|
|
373
380
|
await engine.notifyPayloadDelivered(update.filename);
|
|
374
381
|
onHmrUpdate?.({
|
|
@@ -618,13 +625,17 @@ ${routeHmr}
|
|
|
618
625
|
const routes = {
|
|
619
626
|
routeRoot,
|
|
620
627
|
files: /* @__PURE__ */ new Set(),
|
|
628
|
+
removedFiles: /* @__PURE__ */ new Set(),
|
|
621
629
|
isRouteFile,
|
|
622
630
|
scanFiles,
|
|
623
631
|
updateFiles(files) {
|
|
632
|
+
for (const file of routes.files) if (!files.has(file)) routes.removedFiles.add(file);
|
|
633
|
+
for (const file of files) routes.removedFiles.delete(file);
|
|
624
634
|
routes.files = files;
|
|
625
635
|
if (!useDynamicRouteRegistry) return;
|
|
626
636
|
mkdirSync(dirname(registryPath), { recursive: true });
|
|
627
637
|
const registryDir = realpathSync(dirname(registryPath));
|
|
638
|
+
routes.registryId = join(registryDir, basename(registryPath));
|
|
628
639
|
const source = `export const routes = {
|
|
629
640
|
${[...files].sort().map((file) => {
|
|
630
641
|
const routeKey = `/${normalizePath(relative(root, file))}`;
|