one 2.7.7 → 2.8.0
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/One.podspec +3 -0
- package/android/build.gradle +8 -1
- package/android/consumer-rules.pro +6 -0
- package/dist/cjs/cli/build.cjs +1 -1
- package/dist/cjs/cli/build.native.cjs +1 -1
- package/dist/cjs/cli/build.native.js +1 -1
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.cjs +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.cjs +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +10 -4
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.cjs +10 -4
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +10 -4
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/metro-config/withOne.cjs +2 -2
- package/dist/cjs/metro-config/withOne.native.cjs +2 -2
- package/dist/cjs/metro-config/withOne.native.js +2 -2
- package/dist/cjs/metro-config/withOne.native.js.map +1 -1
- package/dist/cjs/vite/one.cjs +5 -5
- package/dist/cjs/vite/one.native.cjs +5 -5
- package/dist/cjs/vite/one.native.js +5 -5
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +3 -3
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.cjs +3 -3
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +3 -3
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +1 -1
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +1 -1
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +10 -4
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +10 -4
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/metro-config/withOne.mjs +1 -1
- package/dist/esm/metro-config/withOne.mjs.map +1 -1
- package/dist/esm/metro-config/withOne.native.js +1 -1
- package/dist/esm/metro-config/withOne.native.js.map +1 -1
- package/dist/esm/vite/one.mjs +1 -1
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +1 -1
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/workerdDevPlugin.mjs +2 -2
- package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/workerdDevPlugin.native.js +2 -2
- package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -1
- package/ios/PrivacyInfo.xcprivacy +52 -0
- package/metro-entry.js +1 -1
- package/package.json +79 -42
- package/src/__tests__/polyfills-mobile-metro.test.ts +2 -2
- package/src/cli/build.ts +1 -1
- package/src/metro-config/buildOneMetroResolverOverrides.ts +1 -1
- package/src/metro-config/getViteMetroPluginOptions.integration.test.ts +5 -3
- package/src/metro-config/getViteMetroPluginOptions.ts +10 -4
- package/src/metro-config/withOne.ts +3 -1
- package/src/native/packedClosure.test.ts +68 -6
- package/src/native/shippedAndroid.test.ts +21 -0
- package/src/native/shippedArtifacts.test.ts +81 -0
- package/src/vite/one.ts +2 -1
- package/src/vite/plugins/workerdDevPlugin.ts +2 -2
- package/types/Frozen.d.ts +1 -1
- package/types/Frozen.d.ts.map +1 -1
- package/types/Frozen.native.d.ts +1 -1
- package/types/Frozen.native.d.ts.map +1 -1
- package/types/Root.d.ts +1 -1
- package/types/Root.d.ts.map +1 -1
- package/types/fallbackViews/Sitemap.d.ts +1 -1
- package/types/fallbackViews/Sitemap.d.ts.map +1 -1
- package/types/fallbackViews/Sitemap.web.d.ts +2 -1
- package/types/fallbackViews/Sitemap.web.d.ts.map +1 -1
- package/types/fallbackViews/Unmatched.d.ts +2 -1
- package/types/fallbackViews/Unmatched.d.ts.map +1 -1
- package/types/fallbackViews/Unmatched.web.d.ts +2 -1
- package/types/fallbackViews/Unmatched.web.d.ts.map +1 -1
- package/types/headless/Presentations.d.ts +1 -1
- package/types/headless/Presentations.d.ts.map +1 -1
- package/types/headless/keepMounted.d.ts +1 -1
- package/types/headless/keepMounted.d.ts.map +1 -1
- package/types/headless/useDrawer.d.ts +1 -1
- package/types/headless/useDrawer.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackToolbar.d.ts +1 -1
- package/types/layouts/stack-utils/StackToolbar.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackToolbarBottomHost.d.ts +1 -1
- package/types/layouts/stack-utils/StackToolbarBottomHost.d.ts.map +1 -1
- package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
- package/types/metro-config/withOne.d.ts.map +1 -1
- package/types/platform/AndroidMenu.d.ts +2 -2
- package/types/platform/AndroidMenu.d.ts.map +1 -1
- package/types/platform/Animators.native.d.ts +2 -2
- package/types/platform/Animators.native.d.ts.map +1 -1
- package/types/platform/ArrangementView.d.ts +1 -1
- package/types/platform/ArrangementView.d.ts.map +1 -1
- package/types/platform/ArrangementView.native.d.ts +1 -1
- package/types/platform/ArrangementView.native.d.ts.map +1 -1
- package/types/platform/Containers.native.d.ts +34 -34
- package/types/platform/Containers.native.d.ts.map +1 -1
- package/types/platform/Menu.native.d.ts +2 -2
- package/types/platform/Menu.native.d.ts.map +1 -1
- package/types/platform/NavigationSplitView.native.d.ts +1 -1
- package/types/platform/NavigationSplitView.native.d.ts.map +1 -1
- package/types/platform/NavigationStack.native.d.ts +2 -2
- package/types/platform/NavigationStack.native.d.ts.map +1 -1
- package/types/platform/Pager.native.d.ts +1 -1
- package/types/platform/Pager.native.d.ts.map +1 -1
- package/types/platform/Popover.native.d.ts +1 -1
- package/types/platform/Popover.native.d.ts.map +1 -1
- package/types/platform/Sheet.native.d.ts +2 -2
- package/types/platform/Sheet.native.d.ts.map +1 -1
- package/types/platform/Tabs.native.d.ts +1 -1
- package/types/platform/Tabs.native.d.ts.map +1 -1
- package/types/platform/adaptive/ReservedRegions.d.ts +1 -1
- package/types/platform/adaptive/ReservedRegions.d.ts.map +1 -1
- package/types/platform/adaptive/ReservedRegions.native.d.ts +1 -1
- package/types/platform/adaptive/ReservedRegions.native.d.ts.map +1 -1
- package/types/platform/compose.android.d.ts +101 -101
- package/types/platform/compose.android.d.ts.map +1 -1
- package/types/platform/effects/Blur.d.ts +1 -1
- package/types/platform/effects/Blur.d.ts.map +1 -1
- package/types/platform/effects/Blur.native.d.ts +1 -1
- package/types/platform/effects/Blur.native.d.ts.map +1 -1
- package/types/platform/effects/EdgeFade.d.ts +1 -1
- package/types/platform/effects/EdgeFade.d.ts.map +1 -1
- package/types/platform/effects/EdgeFade.native.d.ts +1 -1
- package/types/platform/effects/EdgeFade.native.d.ts.map +1 -1
- package/types/platform/effects/Mask.d.ts +1 -1
- package/types/platform/effects/Mask.d.ts.map +1 -1
- package/types/platform/effects/Mask.native.d.ts +1 -1
- package/types/platform/effects/Mask.native.d.ts.map +1 -1
- package/types/platform/generated/Controls.native.d.ts +55 -55
- package/types/platform/generated/Controls.native.d.ts.map +1 -1
- package/types/platform/index.native.d.ts +58 -58
- package/types/platform/menu/index.native.d.ts +1 -1
- package/types/platform/menu/index.native.d.ts.map +1 -1
- package/types/platform/native-source/view.native.d.ts +1 -1
- package/types/platform/native-source/view.native.d.ts.map +1 -1
- package/types/platform/split-view/split-view.d.ts +2 -2
- package/types/platform/split-view/split-view.d.ts.map +1 -1
- package/types/platform/split-view/split-view.native.d.ts +3 -3
- package/types/platform/split-view/split-view.native.d.ts.map +1 -1
- package/types/platform/swift/index.native.d.ts +1 -1
- package/types/platform/swift/index.native.d.ts.map +1 -1
- package/types/platform/toolbar/index.native.d.ts +2 -2
- package/types/platform/toolbar/index.native.d.ts.map +1 -1
- package/types/platform/ui/Icon.android.d.ts +1 -1
- package/types/platform/ui/Icon.android.d.ts.map +1 -1
- package/types/platform/ui/Image.d.ts +1 -1
- package/types/platform/ui/Image.d.ts.map +1 -1
- package/types/platform/ui/Image.native.d.ts +1 -1
- package/types/platform/ui/Image.native.d.ts.map +1 -1
- package/types/platform/ui/Map.android.d.ts +1 -1
- package/types/platform/ui/Map.android.d.ts.map +1 -1
- package/types/platform/ui/Map.ios.d.ts +1 -1
- package/types/platform/ui/Map.ios.d.ts.map +1 -1
- package/types/platform/ui/PictureInPicture.d.ts +1 -1
- package/types/platform/ui/PictureInPicture.d.ts.map +1 -1
- package/types/platform/ui/PictureInPicture.native.d.ts +1 -1
- package/types/platform/ui/PictureInPicture.native.d.ts.map +1 -1
- package/types/platform/ui/Portal.d.ts +2 -2
- package/types/platform/ui/Portal.d.ts.map +1 -1
- package/types/platform/ui/Portal.native.d.ts +2 -2
- package/types/platform/ui/Portal.native.d.ts.map +1 -1
- package/types/platform/universal/TextInput/index.android.d.ts +1 -1
- package/types/platform/universal/TextInput/index.android.d.ts.map +1 -1
- package/types/platform/universal/TextInput/index.d.ts +1 -1
- package/types/platform/universal/TextInput/index.d.ts.map +1 -1
- package/types/platform/universal/TextInput/index.ios.d.ts +1 -1
- package/types/platform/universal/TextInput/index.ios.d.ts.map +1 -1
- package/types/platform/web/DomView.d.ts +1 -1
- package/types/platform/web/DomView.d.ts.map +1 -1
- package/types/platform/zoom/index.native.d.ts +3 -3
- package/types/platform/zoom/index.native.d.ts.map +1 -1
- package/types/router/Route.d.ts +1 -1
- package/types/router/Route.d.ts.map +1 -1
- package/types/router/RouteInfoContext.d.ts +1 -1
- package/types/router/RouteInfoContext.d.ts.map +1 -1
- package/types/router/web/WebStackView.d.ts +1 -1
- package/types/router/web/WebStackView.d.ts.map +1 -1
- package/types/safe-area-context/NativeSafeAreaProvider.d.ts +1 -1
- package/types/safe-area-context/NativeSafeAreaProvider.d.ts.map +1 -1
- package/types/safe-area-context/NativeSafeAreaProvider.native.d.ts +2 -1
- package/types/safe-area-context/NativeSafeAreaProvider.native.d.ts.map +1 -1
- package/types/safe-area-context/SafeAreaContext.d.ts +1 -1
- package/types/safe-area-context/SafeAreaContext.d.ts.map +1 -1
- package/types/server/ServerContextScript.d.ts +1 -1
- package/types/server/ServerContextScript.d.ts.map +1 -1
- package/types/ui/TabList.d.ts +1 -1
- package/types/ui/TabList.d.ts.map +1 -1
- package/types/ui/TabSlot.d.ts +3 -3
- package/types/ui/TabSlot.d.ts.map +1 -1
- package/types/ui/TabTrigger.d.ts +1 -1
- package/types/ui/TabTrigger.d.ts.map +1 -1
- package/types/ui/Tabs.d.ts +1 -1
- package/types/ui/Tabs.d.ts.map +1 -1
- package/types/views/ErrorBoundary.d.ts +2 -1
- package/types/views/ErrorBoundary.d.ts.map +1 -1
- package/types/views/ErrorBoundary.web.d.ts +2 -1
- package/types/views/ErrorBoundary.web.d.ts.map +1 -1
- package/types/views/LoadProgressBar.d.ts +1 -1
- package/types/views/LoadProgressBar.d.ts.map +1 -1
- package/types/views/LoadProgressBar.web.d.ts +2 -1
- package/types/views/LoadProgressBar.web.d.ts.map +1 -1
- package/types/views/Navigator.d.ts +6 -6
- package/types/views/Navigator.d.ts.map +1 -1
- package/types/views/RootErrorBoundary.d.ts +1 -1
- package/types/views/RootErrorBoundary.d.ts.map +1 -1
- package/types/views/RootErrorBoundary.web.d.ts +1 -1
- package/types/views/RootErrorBoundary.web.d.ts.map +1 -1
- package/types/views/RouteErrorView.d.ts +1 -1
- package/types/views/RouteErrorView.d.ts.map +1 -1
- package/types/views/RouteErrorView.web.d.ts +1 -1
- package/types/views/RouteErrorView.web.d.ts.map +1 -1
- package/types/views/Try.d.ts +1 -1
- package/types/views/Try.d.ts.map +1 -1
- package/types/vite/DevHead.d.ts +1 -1
- package/types/vite/DevHead.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
package/metro-entry.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// initialize globals before configured setup, whose side-effect import is eager
|
|
2
2
|
// even when metro defers the named createApp import.
|
|
3
|
-
import 'react-native/
|
|
3
|
+
import 'react-native/setup-env'
|
|
4
4
|
import './dist/esm/polyfills-mobile.native.js'
|
|
5
5
|
|
|
6
6
|
// configured setup is injected after these imports by one-router-metro.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "One is a React framework for web, iOS, and Android apps.",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"sideEffects": [
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"README.md",
|
|
193
193
|
"ios",
|
|
194
194
|
"android/build.gradle",
|
|
195
|
+
"android/consumer-rules.pro",
|
|
195
196
|
"android/CMakeLists.txt",
|
|
196
197
|
"android/portal",
|
|
197
198
|
"android/src",
|
|
@@ -219,12 +220,6 @@
|
|
|
219
220
|
},
|
|
220
221
|
"dependencies": {
|
|
221
222
|
"@azure/core-asynciterator-polyfill": "^1.0.2",
|
|
222
|
-
"@babel/core": "^7.28.5",
|
|
223
|
-
"@babel/generator": "7.29.7",
|
|
224
|
-
"@babel/parser": "^7.28.5",
|
|
225
|
-
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
|
226
|
-
"@babel/traverse": "^7.28.5",
|
|
227
|
-
"@babel/types": "^7.28.5",
|
|
228
223
|
"@bacons/text-decoder": "^0.0.0",
|
|
229
224
|
"@cloudflare/vite-plugin": "^1.33.1",
|
|
230
225
|
"@op-engineering/op-sqlite": "18.2.5",
|
|
@@ -236,18 +231,15 @@
|
|
|
236
231
|
"@react-navigation/native-stack": "8.0.0-alpha.59",
|
|
237
232
|
"@react-navigation/routers": "8.0.0-alpha.21",
|
|
238
233
|
"@ungap/structured-clone": "^1.2.0",
|
|
239
|
-
"@vxrn/color-scheme": "2.
|
|
240
|
-
"@vxrn/compiler": "2.
|
|
241
|
-
"@vxrn/resolve": "2.
|
|
242
|
-
"@vxrn/tslib-lite": "2.
|
|
243
|
-
"@vxrn/use-isomorphic-layout-effect": "2.
|
|
244
|
-
"@vxrn/utils": "2.
|
|
245
|
-
"@vxrn/vite-plugin-metro": "2.7.7",
|
|
246
|
-
"babel-dead-code-elimination": "1.0.10",
|
|
247
|
-
"babel-plugin-module-resolver": "^5.0.2",
|
|
234
|
+
"@vxrn/color-scheme": "2.8.0",
|
|
235
|
+
"@vxrn/compiler": "2.8.0",
|
|
236
|
+
"@vxrn/resolve": "2.8.0",
|
|
237
|
+
"@vxrn/tslib-lite": "2.8.0",
|
|
238
|
+
"@vxrn/use-isomorphic-layout-effect": "2.8.0",
|
|
239
|
+
"@vxrn/utils": "2.8.0",
|
|
248
240
|
"citty": "^0.1.6",
|
|
249
241
|
"core-js": "^3.38.1",
|
|
250
|
-
"create-vxrn": "2.
|
|
242
|
+
"create-vxrn": "2.8.0",
|
|
251
243
|
"escape-string-regexp": "^5.0.0",
|
|
252
244
|
"fast-deep-equal": "^3.1.3",
|
|
253
245
|
"fast-glob": "^3.3.3",
|
|
@@ -260,37 +252,46 @@
|
|
|
260
252
|
"oxc-parser": "^0.112.0",
|
|
261
253
|
"perfect-debounce": "^1.0.0",
|
|
262
254
|
"picocolors": "^1.0.0",
|
|
263
|
-
"react-compiler-runtime": "^
|
|
255
|
+
"react-compiler-runtime": "^1.0.0",
|
|
264
256
|
"react-native-css-interop": "^0.2.6",
|
|
265
257
|
"react-native-nitro-image": "0.15.2",
|
|
266
258
|
"react-native-nitro-modules": "0.37.1",
|
|
267
259
|
"react-native-nitro-web-image": "0.15.2",
|
|
268
260
|
"ts-pattern": "^5.6.2",
|
|
269
261
|
"tsconfig-paths": "^4",
|
|
270
|
-
"use-latest-callback": "^0.
|
|
262
|
+
"use-latest-callback": "^0.3.5",
|
|
271
263
|
"vite": "^8.2.2",
|
|
272
|
-
"vxrn": "2.
|
|
264
|
+
"vxrn": "2.8.0",
|
|
273
265
|
"web-streams-polyfill": "^4.3.0",
|
|
274
266
|
"ws": "^8.21.0",
|
|
275
267
|
"xxhashjs": "^0.2.2"
|
|
276
268
|
},
|
|
277
269
|
"peerDependencies": {
|
|
278
270
|
"@callstack/liquid-glass": ">=0.6.0",
|
|
279
|
-
"@react-native/babel-preset": "^0.
|
|
271
|
+
"@react-native/babel-preset": "^0.88.0",
|
|
280
272
|
"@react-navigation/core": "8.0.0-alpha.41",
|
|
281
273
|
"@react-navigation/drawer": "8.0.0-alpha.58",
|
|
282
274
|
"@react-navigation/native": "8.0.0-alpha.51",
|
|
283
|
-
"react": "^19.
|
|
284
|
-
"react-dom": "^19.
|
|
285
|
-
"react-native": "^0.
|
|
275
|
+
"react": "^19.3.0",
|
|
276
|
+
"react-dom": "^19.3.0",
|
|
277
|
+
"react-native": "^0.88.0",
|
|
286
278
|
"react-native-gesture-handler": ">=3.0.0",
|
|
287
|
-
"react-native-reanimated": ">=4.
|
|
279
|
+
"react-native-reanimated": ">=4.7.1",
|
|
288
280
|
"react-native-screens": ">=4.30.0",
|
|
289
281
|
"react-native-web": "^0.21.2",
|
|
290
|
-
"react-native-worklets": ">=0.
|
|
282
|
+
"react-native-worklets": ">=0.13.0",
|
|
291
283
|
"sharp": "^0.35.5",
|
|
292
284
|
"@tamagui/sheet": ">=3.0.0-beta.1537.1 <4 || >=3.0.0-0.canary <3.0.0-1",
|
|
293
|
-
"@tamagui/web": ">=3.0.0-beta.1537.1 <4 || >=3.0.0-0.canary <3.0.0-1"
|
|
285
|
+
"@tamagui/web": ">=3.0.0-beta.1537.1 <4 || >=3.0.0-0.canary <3.0.0-1",
|
|
286
|
+
"@babel/core": "^7.28.5",
|
|
287
|
+
"@babel/generator": "7.29.7",
|
|
288
|
+
"@babel/parser": "^7.28.5",
|
|
289
|
+
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
|
290
|
+
"@babel/traverse": "^7.28.5",
|
|
291
|
+
"@babel/types": "^7.28.5",
|
|
292
|
+
"babel-dead-code-elimination": "1.0.10",
|
|
293
|
+
"babel-plugin-module-resolver": "^5.0.2",
|
|
294
|
+
"@vxrn/vite-plugin-metro": "2.8.0"
|
|
294
295
|
},
|
|
295
296
|
"peerDependenciesMeta": {
|
|
296
297
|
"@react-native/babel-preset": {
|
|
@@ -322,41 +323,77 @@
|
|
|
322
323
|
},
|
|
323
324
|
"@tamagui/web": {
|
|
324
325
|
"optional": true
|
|
326
|
+
},
|
|
327
|
+
"@babel/core": {
|
|
328
|
+
"optional": true
|
|
329
|
+
},
|
|
330
|
+
"@babel/generator": {
|
|
331
|
+
"optional": true
|
|
332
|
+
},
|
|
333
|
+
"@babel/parser": {
|
|
334
|
+
"optional": true
|
|
335
|
+
},
|
|
336
|
+
"@babel/plugin-transform-export-namespace-from": {
|
|
337
|
+
"optional": true
|
|
338
|
+
},
|
|
339
|
+
"@babel/traverse": {
|
|
340
|
+
"optional": true
|
|
341
|
+
},
|
|
342
|
+
"@babel/types": {
|
|
343
|
+
"optional": true
|
|
344
|
+
},
|
|
345
|
+
"babel-dead-code-elimination": {
|
|
346
|
+
"optional": true
|
|
347
|
+
},
|
|
348
|
+
"babel-plugin-module-resolver": {
|
|
349
|
+
"optional": true
|
|
350
|
+
},
|
|
351
|
+
"@vxrn/vite-plugin-metro": {
|
|
352
|
+
"optional": true
|
|
325
353
|
}
|
|
326
354
|
},
|
|
327
355
|
"devDependencies": {
|
|
328
|
-
"@tamagui/sheet": "3.0.
|
|
356
|
+
"@tamagui/sheet": "3.0.18",
|
|
329
357
|
"@callstack/liquid-glass": "^0.8.1",
|
|
330
|
-
"@react-native/babel-plugin-codegen": "0.
|
|
331
|
-
"@react-native/codegen": "^0.
|
|
358
|
+
"@react-native/babel-plugin-codegen": "0.88.0",
|
|
359
|
+
"@react-native/codegen": "^0.88.0",
|
|
332
360
|
"@react-navigation/core": "8.0.0-alpha.41",
|
|
333
361
|
"@react-navigation/drawer": "8.0.0-alpha.58",
|
|
334
362
|
"@react-navigation/native": "8.0.0-alpha.51",
|
|
335
|
-
"@tamagui/build": "3.0.
|
|
363
|
+
"@tamagui/build": "3.0.18",
|
|
336
364
|
"@types/node": "^24.10.0",
|
|
337
|
-
"@types/react-dom": "^19.
|
|
365
|
+
"@types/react-dom": "^19.3.0",
|
|
338
366
|
"@types/react-test-renderer": "^19.1.0",
|
|
339
367
|
"@types/xxhashjs": "^0.2.4",
|
|
340
|
-
"@vxrn/emitter": "2.
|
|
368
|
+
"@vxrn/emitter": "2.8.0",
|
|
341
369
|
"depcheck": "^1.4.7",
|
|
342
370
|
"esbuild": "^0.25.12",
|
|
343
371
|
"immer": "^10.1.1",
|
|
344
372
|
"nitrogen": "0.37.1",
|
|
345
|
-
"react": "19.
|
|
346
|
-
"react-dom": "19.
|
|
347
|
-
"react-native": "0.
|
|
348
|
-
"react-native-gesture-handler": "~3.
|
|
349
|
-
"react-native-reanimated": "~4.
|
|
373
|
+
"react": "19.3.0",
|
|
374
|
+
"react-dom": "19.3.0",
|
|
375
|
+
"react-native": "0.88.0",
|
|
376
|
+
"react-native-gesture-handler": "~3.4.0",
|
|
377
|
+
"react-native-reanimated": "~4.7.1",
|
|
350
378
|
"react-native-screens": "~4.30.0",
|
|
351
379
|
"react-native-web": "^0.21.2",
|
|
352
|
-
"react-native-worklets": "~0.
|
|
353
|
-
"react-test-renderer": "
|
|
380
|
+
"react-native-worklets": "~0.13.0",
|
|
381
|
+
"react-test-renderer": "19.3.0",
|
|
354
382
|
"rolldown": "^1.2.8",
|
|
355
383
|
"sharp": "^0.35.5",
|
|
356
384
|
"typescript": "7.0.2",
|
|
357
385
|
"vitest": "^4.1.0",
|
|
358
386
|
"yoga-layout": "^3.2.1",
|
|
359
|
-
"@tamagui/web": "3.0.
|
|
387
|
+
"@tamagui/web": "3.0.18",
|
|
388
|
+
"@babel/core": "^7.28.5",
|
|
389
|
+
"@babel/generator": "7.29.7",
|
|
390
|
+
"@babel/parser": "^7.28.5",
|
|
391
|
+
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
|
|
392
|
+
"@babel/traverse": "^7.28.5",
|
|
393
|
+
"@babel/types": "^7.28.5",
|
|
394
|
+
"babel-dead-code-elimination": "1.0.10",
|
|
395
|
+
"babel-plugin-module-resolver": "^5.0.2",
|
|
396
|
+
"@vxrn/vite-plugin-metro": "2.8.0"
|
|
360
397
|
},
|
|
361
398
|
"publishConfig": {
|
|
362
399
|
"access": "public"
|
|
@@ -513,7 +550,7 @@
|
|
|
513
550
|
}
|
|
514
551
|
}
|
|
515
552
|
},
|
|
516
|
-
"releaseSourceCommit": "
|
|
553
|
+
"releaseSourceCommit": "9435b113ae773ceebeef9e0a7144d5401b2c986f",
|
|
517
554
|
"repository": {
|
|
518
555
|
"type": "git",
|
|
519
556
|
"url": "git+https://github.com/onejs/one.git",
|
|
@@ -72,7 +72,7 @@ function evaluateCoreJs(imports: string[], entry?: string) {
|
|
|
72
72
|
if (entry) {
|
|
73
73
|
const factory = vm.runInContext(`(function(require) { ${entry}\n })`, context)
|
|
74
74
|
factory((specifier: string) => {
|
|
75
|
-
if (specifier === 'react-native/
|
|
75
|
+
if (specifier === 'react-native/setup-env') {
|
|
76
76
|
context.nativeInitialized = true
|
|
77
77
|
return {}
|
|
78
78
|
}
|
|
@@ -139,7 +139,7 @@ const metroEntrySource = readFileSync(new URL('../../metro-entry.js', import.met
|
|
|
139
139
|
const compiledMetroEntry = compileMetroEntry(metroEntrySource)
|
|
140
140
|
const compiledControlEntry = compileMetroEntry(
|
|
141
141
|
metroEntrySource
|
|
142
|
-
.replace("import 'react-native/
|
|
142
|
+
.replace("import 'react-native/setup-env'", '')
|
|
143
143
|
.replace("import './dist/esm/polyfills-mobile.native.js'", '')
|
|
144
144
|
)
|
|
145
145
|
|
package/src/cli/build.ts
CHANGED
|
@@ -1426,7 +1426,7 @@ export default {
|
|
|
1426
1426
|
// rolldown can't parse react-native's Flow syntax; alias to react-native-web for ssr
|
|
1427
1427
|
{
|
|
1428
1428
|
find: /^react-native\/Libraries\/.*/,
|
|
1429
|
-
replacement: resolvePath('@vxrn/
|
|
1429
|
+
replacement: resolvePath('@vxrn/utils/empty', options.root),
|
|
1430
1430
|
},
|
|
1431
1431
|
{
|
|
1432
1432
|
// react native 0.87 removed @react-native/assets-registry, but libraries
|
|
@@ -27,7 +27,7 @@ export function buildOneMetroResolverOverrides({
|
|
|
27
27
|
defaultConfig: T
|
|
28
28
|
) => T {
|
|
29
29
|
const require = module.createRequire(projectRoot + '/')
|
|
30
|
-
const emptyPath = require.resolve('@vxrn/
|
|
30
|
+
const emptyPath = require.resolve('@vxrn/utils/empty', {
|
|
31
31
|
paths: [projectRoot],
|
|
32
32
|
})
|
|
33
33
|
const projectPackagePath = path.join(projectRoot, 'package.json')
|
|
@@ -15,7 +15,7 @@ describe('getViteMetroPluginOptions babel-config coexistence', () => {
|
|
|
15
15
|
|
|
16
16
|
beforeAll(() => {
|
|
17
17
|
// place the fixture under the workspace root so Node can walk up to
|
|
18
|
-
// node_modules and resolve `one/metro-entry` + `@vxrn/
|
|
18
|
+
// node_modules and resolve `one/metro-entry` + `@vxrn/utils/empty`
|
|
19
19
|
const workspaceRoot = path.resolve(__dirname, '../../../../')
|
|
20
20
|
tmpDir = fs.mkdtempSync(path.join(workspaceRoot, '.tmp-one-vite-metro-test-'))
|
|
21
21
|
fs.writeFileSync(
|
|
@@ -29,7 +29,7 @@ describe('getViteMetroPluginOptions babel-config coexistence', () => {
|
|
|
29
29
|
fs.rmSync(tmpDir, { recursive: true, force: true })
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
-
it('explains the missing Metro
|
|
32
|
+
it('explains the missing Metro plugin in an isolated app', () => {
|
|
33
33
|
const isolatedApp = fs.mkdtempSync(path.join(os.tmpdir(), 'one-metro-no-preset-'))
|
|
34
34
|
try {
|
|
35
35
|
expect(() =>
|
|
@@ -37,7 +37,9 @@ describe('getViteMetroPluginOptions babel-config coexistence', () => {
|
|
|
37
37
|
projectRoot: isolatedApp,
|
|
38
38
|
relativeRouterRoot: 'app',
|
|
39
39
|
})
|
|
40
|
-
).toThrow(
|
|
40
|
+
).toThrow(
|
|
41
|
+
/Metro requires @vxrn\/vite-plugin-metro and babel-preset-expo in the app.*Install with/
|
|
42
|
+
)
|
|
41
43
|
} finally {
|
|
42
44
|
fs.rmSync(isolatedApp, { recursive: true, force: true })
|
|
43
45
|
}
|
|
@@ -21,11 +21,17 @@ export function getViteMetroPluginOptions({
|
|
|
21
21
|
setupFile?: string | { native?: string; ios?: string; android?: string }
|
|
22
22
|
}): Parameters<typeof metroPlugin>[0] {
|
|
23
23
|
const require = createRequire(projectRoot + '/')
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const missing = ['@vxrn/vite-plugin-metro', 'babel-preset-expo'].filter((name) => {
|
|
25
|
+
try {
|
|
26
|
+
require.resolve(name)
|
|
27
|
+
return false
|
|
28
|
+
} catch {
|
|
29
|
+
return true
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
if (missing.length) {
|
|
27
33
|
throw new Error(
|
|
28
|
-
`[one] Metro requires
|
|
34
|
+
`[one] Metro requires ${missing.join(' and ')} in the app at ${projectRoot}. Install with your package manager, or remove native.bundler: 'metro' to use One's default native bundler.`
|
|
29
35
|
)
|
|
30
36
|
}
|
|
31
37
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
|
-
import { buildMetroConfigInputFromViteConfig } from '@vxrn/vite-plugin-metro'
|
|
3
2
|
import { getViteMetroPluginOptions } from './getViteMetroPluginOptions'
|
|
4
3
|
import { loadUserOneOptions } from '../vite/loadConfig'
|
|
5
4
|
|
|
@@ -93,6 +92,9 @@ export async function withOne(
|
|
|
93
92
|
root: path.resolve(loaded?.config?.config?.root ?? projectRoot),
|
|
94
93
|
} as any
|
|
95
94
|
|
|
95
|
+
// imported after getViteMetroPluginOptions so a missing optional peer gets its
|
|
96
|
+
// install message instead of a bare module-not-found
|
|
97
|
+
const { buildMetroConfigInputFromViteConfig } = await import('@vxrn/vite-plugin-metro')
|
|
96
98
|
const { defaultConfig } = await buildMetroConfigInputFromViteConfig(viteConfig, {
|
|
97
99
|
...metroPluginOptions,
|
|
98
100
|
mainModuleName: 'one/metro-entry',
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
writeFileSync,
|
|
14
14
|
} from 'node:fs'
|
|
15
15
|
import { tmpdir } from 'node:os'
|
|
16
|
-
import { dirname, join, resolve } from 'node:path'
|
|
16
|
+
import { dirname, join, relative, resolve } from 'node:path'
|
|
17
17
|
import { fileURLToPath } from 'node:url'
|
|
18
18
|
import { describe, expect, it } from 'vitest'
|
|
19
19
|
import { auditUnpackedManifest, findForbiddenDependencies } from './closure'
|
|
@@ -235,6 +235,15 @@ console.log('one/native ok ' + url);
|
|
|
235
235
|
const appDir = join(tmp, 'app')
|
|
236
236
|
mkdirSync(join(appDir, 'app'), { recursive: true })
|
|
237
237
|
writeFileSync(join(appDir, '.watchmanconfig'), '{}\n')
|
|
238
|
+
// the ejected babel config runs one/babel-preset, whose babel packages are
|
|
239
|
+
// optional peers the app installs (docs/metro-mode)
|
|
240
|
+
const onePeers = JSON.parse(readFileSync(join(oneDir, 'package.json'), 'utf8'))
|
|
241
|
+
.peerDependencies as Record<string, string>
|
|
242
|
+
const babelPresetPeers = Object.fromEntries(
|
|
243
|
+
Object.entries(onePeers).filter(
|
|
244
|
+
([name]) => name.startsWith('@babel/') || name.startsWith('babel-')
|
|
245
|
+
)
|
|
246
|
+
)
|
|
238
247
|
|
|
239
248
|
writeFileSync(
|
|
240
249
|
join(appDir, 'package.json'),
|
|
@@ -247,12 +256,13 @@ console.log('one/native ok ' + url);
|
|
|
247
256
|
vxrn: `file:${packedClosure.vxrn}`,
|
|
248
257
|
'@vxrn/vite-plugin-metro': `file:${packedClosure['@vxrn/vite-plugin-metro']}`,
|
|
249
258
|
'@vxrn/utils': `file:${packedClosure['@vxrn/utils']}`,
|
|
250
|
-
react: '19.
|
|
251
|
-
'react-native': '0.
|
|
259
|
+
react: '19.3.0',
|
|
260
|
+
'react-native': '0.88.0',
|
|
252
261
|
'react-native-web': '^0.21.2',
|
|
253
262
|
vite: '^8.2.2',
|
|
254
|
-
metro: '^0.87.
|
|
255
|
-
'metro-config': '^0.87.
|
|
263
|
+
metro: '^0.87.1',
|
|
264
|
+
'metro-config': '^0.87.1',
|
|
265
|
+
...babelPresetPeers,
|
|
256
266
|
},
|
|
257
267
|
overrides: Object.fromEntries(
|
|
258
268
|
Object.entries(packedClosure).map(([name, tarball]) => [
|
|
@@ -379,7 +389,7 @@ if (!config.dependencies['react-native-nitro-modules']) {
|
|
|
379
389
|
['-e', "require('./metro.config.cjs').catch((error) => { console.error(error.message); process.exitCode = 1 })"],
|
|
380
390
|
{ cwd: appDir, encoding: 'utf8' }
|
|
381
391
|
)
|
|
382
|
-
).toThrow(/Metro requires babel-preset-expo.*Install
|
|
392
|
+
).toThrow(/Metro requires babel-preset-expo in the app.*Install with/)
|
|
383
393
|
|
|
384
394
|
const expoPresetVersion = JSON.parse(
|
|
385
395
|
readFileSync(join(workspaceRoot, '../node_modules/babel-preset-expo/package.json'), 'utf8')
|
|
@@ -440,4 +450,56 @@ if (!config.dependencies['react-native-nitro-modules']) {
|
|
|
440
450
|
process.chdir(previousCwd)
|
|
441
451
|
}
|
|
442
452
|
})
|
|
453
|
+
|
|
454
|
+
it('packs every files entry and non-dist export target of each published package', () => {
|
|
455
|
+
const tmp = realpathSync(mkdtempSync(join(tmpdir(), 'one-packed-files-')))
|
|
456
|
+
// workspaceRoot here is the packages directory (see packWorkspaceClosure).
|
|
457
|
+
for (const entry of readdirSync(workspaceRoot, { withFileTypes: true })) {
|
|
458
|
+
if (!entry.isDirectory()) continue
|
|
459
|
+
const packageDir = join(workspaceRoot, entry.name)
|
|
460
|
+
const manifestPath = join(packageDir, 'package.json')
|
|
461
|
+
if (!existsSync(manifestPath)) continue
|
|
462
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
|
|
463
|
+
if (manifest.private) continue
|
|
464
|
+
const extracted = unpack(packToDir(packageDir, tmp), join(tmp, entry.name))
|
|
465
|
+
const packed: string[] = []
|
|
466
|
+
const collect = (dir: string) => {
|
|
467
|
+
for (const child of readdirSync(dir, { withFileTypes: true })) {
|
|
468
|
+
if (child.isDirectory()) collect(join(dir, child.name))
|
|
469
|
+
else packed.push(relative(extracted, join(dir, child.name)))
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
collect(extracted)
|
|
473
|
+
// npm silently ignores files entries that match nothing, so a stale
|
|
474
|
+
// entry looks packed until something references the missing path.
|
|
475
|
+
for (const pattern of manifest.files ?? []) {
|
|
476
|
+
// dist and types only exist after the release build; everything
|
|
477
|
+
// else must already match at least one packed path.
|
|
478
|
+
if (pattern === 'dist' || pattern === 'types') continue
|
|
479
|
+
expect(
|
|
480
|
+
packed.some((file) => file === pattern || file.startsWith(`${pattern}/`)),
|
|
481
|
+
`${manifest.name}: files entry ${pattern} packs nothing`
|
|
482
|
+
).toBe(true)
|
|
483
|
+
}
|
|
484
|
+
const targets = new Set<string>()
|
|
485
|
+
const walk = (value: unknown) => {
|
|
486
|
+
if (typeof value === 'string' && value.startsWith('./') && !value.includes('*')) {
|
|
487
|
+
if (value !== './') targets.add(value.slice(2))
|
|
488
|
+
} else if (value && typeof value === 'object') {
|
|
489
|
+
// comment keys (// ...) carry placeholder values, not targets.
|
|
490
|
+
Object.entries(value).forEach(([key, entry]) => {
|
|
491
|
+
if (!key.startsWith('//')) walk(entry)
|
|
492
|
+
})
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
walk(manifest.exports)
|
|
496
|
+
walk(manifest.bin)
|
|
497
|
+
for (const target of targets) {
|
|
498
|
+
if (target.startsWith('dist/') || target.startsWith('types/')) continue
|
|
499
|
+
expect(packed, `${manifest.name}: export target ${target} is missing`).toContain(
|
|
500
|
+
target
|
|
501
|
+
)
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
})
|
|
443
505
|
}, 180000)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// guards for what one ships into real android app builds: the native
|
|
2
|
+
// library must stay 16 kb page aligned.
|
|
3
|
+
import { readFileSync } from 'node:fs'
|
|
4
|
+
import { dirname, join, resolve } from 'node:path'
|
|
5
|
+
import { fileURLToPath } from 'node:url'
|
|
6
|
+
import { describe, expect, it } from 'vitest'
|
|
7
|
+
|
|
8
|
+
const here = dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
const oneDir = resolve(here, '../..')
|
|
10
|
+
|
|
11
|
+
describe('shipped android artifacts', () => {
|
|
12
|
+
it('builds the native library 16 kb page aligned', () => {
|
|
13
|
+
// google play requires 16 kb page support for targetSdk 35+, and the
|
|
14
|
+
// pinned ndk 27 defaults to 4 kb. react native's gradle plugin injects
|
|
15
|
+
// this flag into app modules only, never libraries, so the library
|
|
16
|
+
// must pass it to cmake itself or libOne.so fails to load on 16 kb
|
|
17
|
+
// page devices.
|
|
18
|
+
const gradle = readFileSync(join(oneDir, 'android/build.gradle'), 'utf8')
|
|
19
|
+
expect(gradle).toContain('-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON')
|
|
20
|
+
})
|
|
21
|
+
})
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// guards for what one ships into real ios app builds: the pod must
|
|
2
|
+
// carry a privacy manifest covering the required-reason apis its
|
|
3
|
+
// sources use, and reference only resources that exist.
|
|
4
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs'
|
|
5
|
+
import { dirname, join, resolve } from 'node:path'
|
|
6
|
+
import { fileURLToPath } from 'node:url'
|
|
7
|
+
import { describe, expect, it } from 'vitest'
|
|
8
|
+
|
|
9
|
+
const here = dirname(fileURLToPath(import.meta.url))
|
|
10
|
+
const oneDir = resolve(here, '../..')
|
|
11
|
+
|
|
12
|
+
function readSources(dir: string): string[] {
|
|
13
|
+
const out: string[] = []
|
|
14
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
15
|
+
if (entry.name === 'Tests') continue
|
|
16
|
+
const full = join(dir, entry.name)
|
|
17
|
+
if (entry.isDirectory()) out.push(...readSources(full))
|
|
18
|
+
else if (/\.(swift|m|mm|h|cpp)$/.test(entry.name)) out.push(readFileSync(full, 'utf8'))
|
|
19
|
+
}
|
|
20
|
+
return out
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe('shipped ios artifacts', () => {
|
|
24
|
+
it('ships a privacy manifest covering the required-reason apis in use', () => {
|
|
25
|
+
const manifestPath = join(oneDir, 'ios/PrivacyInfo.xcprivacy')
|
|
26
|
+
expect(existsSync(manifestPath)).toBe(true)
|
|
27
|
+
const manifest = readFileSync(manifestPath, 'utf8')
|
|
28
|
+
expect(manifest).toContain('<plist version="1.0">')
|
|
29
|
+
// reasons mirror expo's shipped manifests for the same api surface:
|
|
30
|
+
// user defaults (expo-constants), boot time (expo-device), file
|
|
31
|
+
// timestamps and disk space (expo-file-system).
|
|
32
|
+
const expected: Record<string, string[]> = {
|
|
33
|
+
NSPrivacyAccessedAPICategoryUserDefaults: ['CA92.1'],
|
|
34
|
+
NSPrivacyAccessedAPICategorySystemBootTime: ['35F9.1'],
|
|
35
|
+
NSPrivacyAccessedAPICategoryFileTimestamp: ['0A2A.1', '3B52.1'],
|
|
36
|
+
NSPrivacyAccessedAPICategoryDiskSpace: ['E174.1', '85F4.1'],
|
|
37
|
+
}
|
|
38
|
+
for (const [category, reasons] of Object.entries(expected)) {
|
|
39
|
+
expect(manifest).toContain(category)
|
|
40
|
+
for (const reason of reasons) expect(manifest).toContain(reason)
|
|
41
|
+
}
|
|
42
|
+
// every declared category must have a use in the shipped sources, and
|
|
43
|
+
// no other required-reason category may appear without one.
|
|
44
|
+
const sources = readSources(join(oneDir, 'ios'))
|
|
45
|
+
const uses: Record<string, RegExp> = {
|
|
46
|
+
NSPrivacyAccessedAPICategoryUserDefaults: /UserDefaults|AppStorage/,
|
|
47
|
+
NSPrivacyAccessedAPICategorySystemBootTime: /systemUptime|kern\.boottime/,
|
|
48
|
+
NSPrivacyAccessedAPICategoryFileTimestamp:
|
|
49
|
+
/attributesOfItem|\.modificationDate|\.creationDate|\.fileCreationDate/,
|
|
50
|
+
NSPrivacyAccessedAPICategoryDiskSpace:
|
|
51
|
+
/attributesOfFileSystem|systemFreeSize|systemSize|volumeAvailableCapacity/,
|
|
52
|
+
}
|
|
53
|
+
for (const [category, pattern] of Object.entries(uses)) {
|
|
54
|
+
expect(sources.some((source) => pattern.test(source))).toBe(true)
|
|
55
|
+
}
|
|
56
|
+
expect(sources.some((source) => /activeKeyboards/.test(source))).toBe(false)
|
|
57
|
+
// the pod must bundle the manifest, and the npm tarball must include it.
|
|
58
|
+
const podspec = readFileSync(join(oneDir, 'One.podspec'), 'utf8')
|
|
59
|
+
expect(podspec).toContain('PrivacyInfo.xcprivacy')
|
|
60
|
+
const files: string[] = JSON.parse(
|
|
61
|
+
readFileSync(join(oneDir, 'package.json'), 'utf8')
|
|
62
|
+
).files
|
|
63
|
+
expect(files).toContain('ios')
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('references only podspec headers that exist', () => {
|
|
67
|
+
const podspec = readFileSync(join(oneDir, 'One.podspec'), 'utf8')
|
|
68
|
+
const headers = podspec.match(/'ios\/[^']+\.h'/g) ?? []
|
|
69
|
+
expect(headers.length).toBeGreaterThan(0)
|
|
70
|
+
for (const quoted of headers) {
|
|
71
|
+
expect(existsSync(join(oneDir, quoted.slice(1, -1)))).toBe(true)
|
|
72
|
+
}
|
|
73
|
+
for (const generated of [
|
|
74
|
+
'nitrogen/generated/ios/One+autolinking.rb',
|
|
75
|
+
'nitrogen/generated/ios/One-Swift-Cxx-Bridge.hpp',
|
|
76
|
+
'schema.json',
|
|
77
|
+
]) {
|
|
78
|
+
expect(existsSync(join(oneDir, generated))).toBe(true)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
})
|
package/src/vite/one.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { configureVXRNCompilerPlugin } from '@vxrn/compiler'
|
|
2
2
|
import { resolvePath } from '@vxrn/resolve'
|
|
3
|
-
import {
|
|
3
|
+
import type { MetroPluginOptions } from '@vxrn/vite-plugin-metro'
|
|
4
|
+
import { getPlatformEnvDefine } from '@vxrn/utils'
|
|
4
5
|
import events from 'node:events'
|
|
5
6
|
import { existsSync, readFileSync } from 'node:fs'
|
|
6
7
|
import path from 'node:path'
|
|
@@ -3,7 +3,7 @@ import { join, resolve } from 'node:path'
|
|
|
3
3
|
import { pathToFileURL } from 'node:url'
|
|
4
4
|
import { resolvePath } from '@vxrn/resolve'
|
|
5
5
|
import { cloudflare } from '@cloudflare/vite-plugin'
|
|
6
|
-
import { getPlatformEnvDefine } from '@vxrn/
|
|
6
|
+
import { getPlatformEnvDefine } from '@vxrn/utils'
|
|
7
7
|
import { exactRegex } from 'rolldown/filter'
|
|
8
8
|
import { type Plugin, type PluginOption } from 'vite'
|
|
9
9
|
import { CACHE_KEY } from '../../constants'
|
|
@@ -285,7 +285,7 @@ export function createWorkerdDevPlugins(
|
|
|
285
285
|
? ['/bundledDevClient.mjs', '/assets/_virtual_one-entry.js']
|
|
286
286
|
: ['/@vite/client', virtalEntryIdClient]
|
|
287
287
|
|
|
288
|
-
const empty = resolvePath('@vxrn/
|
|
288
|
+
const empty = resolvePath('@vxrn/utils/empty', root)
|
|
289
289
|
const absorbed = absorbedPackageAliases(root, 'web')
|
|
290
290
|
|
|
291
291
|
const preparePlugin: Plugin = {
|
package/types/Frozen.d.ts
CHANGED
package/types/Frozen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frozen.d.ts","sourceRoot":"","sources":["../src/Frozen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,MAAM,CAAC,EAAE,EAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"Frozen.d.ts","sourceRoot":"","sources":["../src/Frozen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,MAAM,CAAC,EAAE,EAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BASrF"}
|
package/types/Frozen.native.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frozen.native.d.ts","sourceRoot":"","sources":["../src/Frozen.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,MAAM,CAAC,EAAE,EAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"Frozen.native.d.ts","sourceRoot":"","sources":["../src/Frozen.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,MAAM,CAAC,EAAE,EAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAGrF"}
|
package/types/Root.d.ts
CHANGED
|
@@ -34,6 +34,6 @@ type InnerProps = {
|
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
export declare function Root(props: RootProps): import("react
|
|
37
|
+
export declare function Root(props: RootProps): import("react").JSX.Element | null;
|
|
38
38
|
export {};
|
|
39
39
|
//# sourceMappingURL=Root.d.ts.map
|
package/types/Root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../src/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAG1F,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAOlD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAcvC,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG;IAC7C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACpD,wBAAwB,CAAC,EAAE,wBAAwB,GAAG;QACpD,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,OAAO,CAAA;YACb,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAA;gBACf,UAAU,EAAE,MAAM,CAAA;gBAClB,IAAI,EAAE,MAAM,CAAA;gBACZ,IAAI,EAAE,MAAM,CAAA;gBACZ,MAAM,EAAE,MAAM,CAAA;gBACd,YAAY,EAAE,MAAM,CAAA;aACrB,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAKD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../src/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAG1F,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAOlD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAcvC,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG;IAC7C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;IACjB,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACpD,wBAAwB,CAAC,EAAE,wBAAwB,GAAG;QACpD,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,OAAO,CAAA;YACb,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAA;gBACf,UAAU,EAAE,MAAM,CAAA;gBAClB,IAAI,EAAE,MAAM,CAAA;gBACZ,IAAI,EAAE,MAAM,CAAA;gBACZ,MAAM,EAAE,MAAM,CAAA;gBACd,YAAY,EAAE,MAAM,CAAA;aACrB,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAKD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,sCA8KpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
2
2
|
export declare function getNavOptions(): NativeStackNavigationOptions;
|
|
3
|
-
export declare function Sitemap(): import("react
|
|
3
|
+
export declare function Sitemap(): import("react").JSX.Element;
|
|
4
4
|
//# sourceMappingURL=Sitemap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sitemap.d.ts","sourceRoot":"","sources":["../../src/fallbackViews/Sitemap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAelF,wBAAgB,aAAa,IAAI,4BAA4B,CAoB5D;AAED,wBAAgB,OAAO,
|
|
1
|
+
{"version":3,"file":"Sitemap.d.ts","sourceRoot":"","sources":["../../src/fallbackViews/Sitemap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAelF,wBAAgB,aAAa,IAAI,4BAA4B,CAoB5D;AAED,wBAAgB,OAAO,gCA6JtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
export declare function getNavOptions(): NativeStackNavigationOptions;
|
|
3
|
-
export declare function Sitemap():
|
|
4
|
+
export declare function Sitemap(): React.JSX.Element;
|
|
4
5
|
//# sourceMappingURL=Sitemap.web.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sitemap.web.d.ts","sourceRoot":"","sources":["../../src/fallbackViews/Sitemap.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"Sitemap.web.d.ts","sourceRoot":"","sources":["../../src/fallbackViews/Sitemap.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAClF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,wBAAgB,aAAa,IAAI,4BAA4B,CAY5D;AAED,wBAAgB,OAAO,sBA6BtB"}
|