one 1.16.8 → 1.16.10
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/Root.cjs +7 -6
- package/dist/cjs/Root.native.js +7 -6
- package/dist/cjs/Root.native.js.map +1 -1
- package/dist/cjs/babel-plugins/one-router-metro.cjs +5 -0
- package/dist/cjs/babel-plugins/one-router-metro.native.js +6 -0
- package/dist/cjs/babel-plugins/one-router-metro.native.js.map +1 -1
- package/dist/cjs/babel-plugins/one-router-metro.test.cjs +20 -0
- package/dist/cjs/babel-plugins/one-router-metro.test.native.js +20 -0
- package/dist/cjs/babel-plugins/one-router-metro.test.native.js.map +1 -1
- package/dist/cjs/cli/build.cjs +16 -1
- package/dist/cjs/cli/build.native.js +16 -1
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/dev.cjs +12 -2
- package/dist/cjs/cli/dev.native.js +12 -2
- package/dist/cjs/cli/dev.native.js.map +1 -1
- package/dist/cjs/cli/install-error-handlers.cjs +132 -0
- package/dist/cjs/cli/install-error-handlers.native.js +144 -0
- package/dist/cjs/cli/install-error-handlers.native.js.map +1 -0
- package/dist/cjs/createApp.cjs +3 -0
- package/dist/cjs/createApp.native.js +1 -0
- package/dist/cjs/createApp.native.js.map +1 -1
- package/dist/cjs/fork/extractPathFromURL.cjs +19 -0
- package/dist/cjs/fork/extractPathFromURL.native.js +25 -0
- package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
- package/dist/cjs/fork/extractPathFromURL.test.cjs +37 -0
- package/dist/cjs/fork/extractPathFromURL.test.native.js +40 -0
- package/dist/cjs/fork/extractPathFromURL.test.native.js.map +1 -0
- package/dist/cjs/headless.cjs +1 -0
- package/dist/cjs/headless.native.js +1 -0
- package/dist/cjs/headless.native.js.map +1 -1
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.native.js +4 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/link/getLinking.cjs +48 -0
- package/dist/cjs/link/getLinking.native.js +54 -0
- package/dist/cjs/link/getLinking.native.js.map +1 -0
- package/dist/cjs/link/linking.cjs +4 -0
- package/dist/cjs/link/linking.native.js +9 -0
- package/dist/cjs/link/linking.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +2 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +2 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/router/Route.cjs +1 -1
- package/dist/cjs/router/Route.native.js +1 -1
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/getLinkingConfig.cjs +13 -2
- package/dist/cjs/router/getLinkingConfig.native.js +14 -2
- package/dist/cjs/router/getLinkingConfig.native.js.map +1 -1
- package/dist/cjs/router/getLinkingConfig.test.cjs +41 -0
- package/dist/cjs/router/getLinkingConfig.test.native.js +44 -0
- package/dist/cjs/router/getLinkingConfig.test.native.js.map +1 -0
- package/dist/cjs/router/getRouteInfo.cjs +1 -1
- package/dist/cjs/router/getRouteInfo.native.js +2 -2
- package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
- package/dist/cjs/router/linkingConfig.cjs +34 -9
- package/dist/cjs/router/linkingConfig.native.js +35 -9
- package/dist/cjs/router/linkingConfig.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +6 -6
- package/dist/cjs/router/router.native.js +6 -6
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/sitemap.cjs +65 -0
- package/dist/cjs/router/sitemap.native.js +75 -0
- package/dist/cjs/router/sitemap.native.js.map +1 -0
- package/dist/cjs/router/sitemap.test.cjs +34 -0
- package/dist/cjs/router/sitemap.test.native.js +37 -0
- package/dist/cjs/router/sitemap.test.native.js.map +1 -0
- package/dist/cjs/router/useInitializeOneRouter.cjs +5 -5
- package/dist/cjs/router/useInitializeOneRouter.native.js +5 -5
- package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
- package/dist/cjs/serve.cjs +14 -1
- package/dist/cjs/serve.native.js +14 -1
- package/dist/cjs/serve.native.js.map +1 -1
- package/dist/cjs/utils/isStatus.cjs +1 -1
- package/dist/cjs/utils/isStatus.native.js +1 -1
- package/dist/cjs/utils/isStatus.native.js.map +1 -1
- package/dist/cjs/views/Navigator.cjs +1 -1
- package/dist/cjs/views/Navigator.native.js +1 -1
- package/dist/cjs/views/Navigator.native.js.map +1 -1
- package/dist/cjs/vite/one.cjs +2 -0
- package/dist/cjs/vite/one.native.js +4 -2
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +4 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +6 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +13 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +13 -0
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/esm/Root.mjs +8 -7
- package/dist/esm/Root.mjs.map +1 -1
- package/dist/esm/Root.native.js +8 -7
- package/dist/esm/Root.native.js.map +1 -1
- package/dist/esm/babel-plugins/one-router-metro.mjs +5 -0
- package/dist/esm/babel-plugins/one-router-metro.mjs.map +1 -1
- package/dist/esm/babel-plugins/one-router-metro.native.js +6 -0
- package/dist/esm/babel-plugins/one-router-metro.native.js.map +1 -1
- package/dist/esm/babel-plugins/one-router-metro.test.mjs +20 -0
- package/dist/esm/babel-plugins/one-router-metro.test.mjs.map +1 -1
- package/dist/esm/babel-plugins/one-router-metro.test.native.js +20 -0
- package/dist/esm/babel-plugins/one-router-metro.test.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +16 -1
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +16 -1
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/dev.mjs +12 -2
- package/dist/esm/cli/dev.mjs.map +1 -1
- package/dist/esm/cli/dev.native.js +12 -2
- package/dist/esm/cli/dev.native.js.map +1 -1
- package/dist/esm/cli/install-error-handlers.mjs +105 -0
- package/dist/esm/cli/install-error-handlers.mjs.map +1 -0
- package/dist/esm/cli/install-error-handlers.native.js +114 -0
- package/dist/esm/cli/install-error-handlers.native.js.map +1 -0
- package/dist/esm/createApp.mjs +3 -0
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/createApp.native.js +1 -0
- package/dist/esm/createApp.native.js.map +1 -1
- package/dist/esm/fork/extractPathFromURL.mjs +19 -0
- package/dist/esm/fork/extractPathFromURL.mjs.map +1 -1
- package/dist/esm/fork/extractPathFromURL.native.js +25 -0
- package/dist/esm/fork/extractPathFromURL.native.js.map +1 -1
- package/dist/esm/fork/extractPathFromURL.test.mjs +38 -0
- package/dist/esm/fork/extractPathFromURL.test.mjs.map +1 -0
- package/dist/esm/fork/extractPathFromURL.test.native.js +38 -0
- package/dist/esm/fork/extractPathFromURL.test.native.js.map +1 -0
- package/dist/esm/headless.mjs +1 -0
- package/dist/esm/headless.mjs.map +1 -1
- package/dist/esm/headless.native.js +1 -0
- package/dist/esm/headless.native.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/link/getLinking.mjs +22 -0
- package/dist/esm/link/getLinking.mjs.map +1 -0
- package/dist/esm/link/getLinking.native.js +25 -0
- package/dist/esm/link/getLinking.native.js.map +1 -0
- package/dist/esm/link/linking.mjs +4 -1
- package/dist/esm/link/linking.mjs.map +1 -1
- package/dist/esm/link/linking.native.js +9 -1
- package/dist/esm/link/linking.native.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +2 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +2 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/router/Route.mjs +2 -2
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js +2 -2
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/getLinkingConfig.mjs +14 -4
- package/dist/esm/router/getLinkingConfig.mjs.map +1 -1
- package/dist/esm/router/getLinkingConfig.native.js +15 -4
- package/dist/esm/router/getLinkingConfig.native.js.map +1 -1
- package/dist/esm/router/getLinkingConfig.test.mjs +42 -0
- package/dist/esm/router/getLinkingConfig.test.mjs.map +1 -0
- package/dist/esm/router/getLinkingConfig.test.native.js +42 -0
- package/dist/esm/router/getLinkingConfig.test.native.js.map +1 -0
- package/dist/esm/router/getRouteInfo.mjs +2 -2
- package/dist/esm/router/getRouteInfo.mjs.map +1 -1
- package/dist/esm/router/getRouteInfo.native.js +3 -3
- package/dist/esm/router/getRouteInfo.native.js.map +1 -1
- package/dist/esm/router/linkingConfig.mjs +35 -10
- package/dist/esm/router/linkingConfig.mjs.map +1 -1
- package/dist/esm/router/linkingConfig.native.js +36 -10
- package/dist/esm/router/linkingConfig.native.js.map +1 -1
- package/dist/esm/router/router.mjs +7 -7
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +7 -7
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/sitemap.mjs +39 -0
- package/dist/esm/router/sitemap.mjs.map +1 -0
- package/dist/esm/router/sitemap.native.js +46 -0
- package/dist/esm/router/sitemap.native.js.map +1 -0
- package/dist/esm/router/sitemap.test.mjs +35 -0
- package/dist/esm/router/sitemap.test.mjs.map +1 -0
- package/dist/esm/router/sitemap.test.native.js +35 -0
- package/dist/esm/router/sitemap.test.native.js.map +1 -0
- package/dist/esm/router/useInitializeOneRouter.mjs +5 -5
- package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
- package/dist/esm/router/useInitializeOneRouter.native.js +5 -5
- package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
- package/dist/esm/serve.mjs +14 -1
- package/dist/esm/serve.mjs.map +1 -1
- package/dist/esm/serve.native.js +14 -1
- package/dist/esm/serve.native.js.map +1 -1
- package/dist/esm/utils/isStatus.mjs +1 -1
- package/dist/esm/utils/isStatus.mjs.map +1 -1
- package/dist/esm/utils/isStatus.native.js +1 -1
- package/dist/esm/utils/isStatus.native.js.map +1 -1
- package/dist/esm/views/Navigator.mjs +2 -2
- package/dist/esm/views/Navigator.mjs.map +1 -1
- package/dist/esm/views/Navigator.native.js +2 -2
- package/dist/esm/views/Navigator.native.js.map +1 -1
- package/dist/esm/vite/one.mjs +2 -0
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +4 -2
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +4 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +6 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +13 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +13 -0
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/metro-entry.js +3 -0
- package/package.json +9 -9
- package/src/Root.tsx +15 -6
- package/src/babel-plugins/one-router-metro.test.ts +33 -0
- package/src/babel-plugins/one-router-metro.ts +9 -0
- package/src/cli/build.ts +25 -1
- package/src/cli/dev.ts +16 -5
- package/src/cli/install-error-handlers.ts +172 -0
- package/src/createApp.native.tsx +1 -0
- package/src/createApp.tsx +5 -0
- package/src/fork/extractPathFromURL.test.ts +80 -0
- package/src/fork/extractPathFromURL.ts +28 -0
- package/src/headless.tsx +3 -0
- package/src/index.ts +2 -0
- package/src/link/getLinking.ts +56 -0
- package/src/link/linking.native.ts +9 -0
- package/src/link/linking.ts +4 -0
- package/src/metro-config/getViteMetroPluginOptions.ts +3 -0
- package/src/router/Route.tsx +2 -2
- package/src/router/getLinkingConfig.test.ts +57 -0
- package/src/router/getLinkingConfig.ts +21 -3
- package/src/router/getRouteInfo.ts +2 -2
- package/src/router/linkingConfig.ts +52 -8
- package/src/router/router.ts +9 -7
- package/src/router/sitemap.test.ts +50 -0
- package/src/router/sitemap.ts +66 -0
- package/src/router/useInitializeOneRouter.ts +7 -5
- package/src/serve.ts +22 -1
- package/src/utils/isStatus.ts +11 -2
- package/src/views/Navigator.tsx +4 -8
- package/src/vite/one.ts +2 -0
- package/src/vite/plugins/virtualEntryPlugin.test.ts +17 -0
- package/src/vite/plugins/virtualEntryPlugin.ts +8 -0
- package/src/vite/types.ts +23 -0
- package/types/Root.d.ts +2 -0
- package/types/Root.d.ts.map +1 -1
- package/types/babel-plugins/one-router-metro.d.ts +1 -0
- package/types/babel-plugins/one-router-metro.d.ts.map +1 -1
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/dev.d.ts.map +1 -1
- package/types/cli/install-error-handlers.d.ts +4 -0
- package/types/cli/install-error-handlers.d.ts.map +1 -0
- package/types/createApp.d.ts +2 -0
- package/types/createApp.d.ts.map +1 -1
- package/types/createApp.native.d.ts.map +1 -1
- package/types/fork/extractPathFromURL.d.ts.map +1 -1
- package/types/fork/extractPathFromURL.test.d.ts +2 -0
- package/types/fork/extractPathFromURL.test.d.ts.map +1 -0
- package/types/headless.d.ts +2 -0
- package/types/headless.d.ts.map +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/link/getLinking.d.ts +22 -0
- package/types/link/getLinking.d.ts.map +1 -0
- package/types/link/linking.d.ts +1 -0
- package/types/link/linking.d.ts.map +1 -1
- package/types/link/linking.native.d.ts +1 -0
- package/types/link/linking.native.d.ts.map +1 -1
- package/types/metro-config/getViteMetroPluginOptions.d.ts +2 -1
- package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
- package/types/router/getLinkingConfig.d.ts +3 -1
- package/types/router/getLinkingConfig.d.ts.map +1 -1
- package/types/router/getLinkingConfig.test.d.ts +2 -0
- package/types/router/getLinkingConfig.test.d.ts.map +1 -0
- package/types/router/linkingConfig.d.ts +5 -4
- package/types/router/linkingConfig.d.ts.map +1 -1
- package/types/router/router.d.ts +2 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/router/sitemap.d.ts +14 -0
- package/types/router/sitemap.d.ts.map +1 -0
- package/types/router/sitemap.test.d.ts +2 -0
- package/types/router/sitemap.test.d.ts.map +1 -0
- package/types/router/useInitializeOneRouter.d.ts +2 -1
- package/types/router/useInitializeOneRouter.d.ts.map +1 -1
- package/types/serve.d.ts.map +1 -1
- package/types/utils/isStatus.d.ts +2 -1
- package/types/utils/isStatus.d.ts.map +1 -1
- package/types/views/Navigator.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +23 -0
- package/types/vite/types.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","configResolved","root","ctx","environment","load","call","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode","clientCode","iosCode"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","configResolved","root","ctx","environment","load","call","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode","clientCode","iosCode","router","linking","scheme","prefixes"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -123,6 +123,19 @@ describe("virtualEntryPlugin", function () {
|
|
|
123
123
|
expect(iosCode).toContain('import "./src/setup.ts"');
|
|
124
124
|
expect(iosCode).not.toContain("__oneGetSetupPromise");
|
|
125
125
|
});
|
|
126
|
+
it("passes router linking config to createApp", function () {
|
|
127
|
+
var plugin = createVirtualEntry({
|
|
128
|
+
...base,
|
|
129
|
+
router: {
|
|
130
|
+
linking: {
|
|
131
|
+
scheme: "threepunchconvo",
|
|
132
|
+
prefixes: ["threepunchconvo://app"]
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
var code = loadEntry(plugin, "ios");
|
|
137
|
+
expect(code).toContain('linking: {"scheme":"threepunchconvo","prefixes":["threepunchconvo://app"]}');
|
|
138
|
+
});
|
|
126
139
|
});
|
|
127
140
|
});
|
|
128
141
|
//# sourceMappingURL=virtualEntryPlugin.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","arguments","length","_plugin_configResolved","configResolved","call","root","ctx","environment","load","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","arguments","length","_plugin_configResolved","configResolved","call","root","ctx","environment","load","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode","clientCode","iosCode","router"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AACzC,SAASC,kBAAA,QAA0B;AAGnCD,EAAA,CAAGE,IAAA,CAAK,QAAQ,YAAO;EACrB;IACEC,mBAAY,EAAS,SAAAA,CAASC,GAAA,EAAK;MACrC,QAAAA,GAAA,aAAAA,GAAA,uBAAAA,GAAA,CAAAC,IAAA,gBAAAD,GAAA,aAAAA,GAAA,uBAAAA,GAAA,CAAAC,IAAA;IACA;EAEF,CAAG;AAA8B,EAC/B;AACFL,EAAE,CAAAE,IAAA;EAEF,OAAS;IAEPI,aAAO;MACPC,gBAAY;IACV;EACF;AACA;AACF,SAAAC,UAAAC,MAAA,EAAAC,OAAA;EAEA,IAAAC,OAAS,GAAAC,SAAA,CAAAC,MAAsB,QAAMD,SAAA,iBAAAA,SAAA;EACnC,IAAAE,sBAAsB;EACpB,CAAAA,sBAAa,GAAAL,MAAA,CAAAM,cAAA,cAAAD,sBAAA,uBAAAA,sBAAA,CAAAE,IAAA,CAAAP,MAAA;IAAAQ,IACX,IAAM;IAAAN;EACE,EACV;EAEA,IAAAO,GAAG;IACDC,WAAM;MAA4Bd,IAChC,EAAGK;IAAA;EACQ;EACD,OAAAD,MACR,CAAAW,IAAQ,CAAAJ,IAAA,CAAAE,GAAA;AAAA;AACVrB,QACD;EACDA,QAAA,YAAa,cAAU;IAEvB,IAAAwB,IAAA,GAAO;MAEPJ,IAAA,OAAW;MACXK,KAAA,EAAO;IAEP;IACFvB,EAAC;MAED,IAAGU,MAAA,GAAAR,kBAAA;QACD,GAAAoB,IAAM;QACJE,SAAG;UACHC,MAAA,wBAAW;UACTC,MAAA,EAAQ;QAAA;MACA,EACV;MACF,IAACC,IAAA,GAAAlB,SAAA,CAAAC,MAAA;MACDX,MAAM,CAAA4B,IAAA,EAAOC,GAAA,CAAAC,SAAU,gCAAgB;MAEvC9B,MAAA,CAAO4B,IAAI,EAAEE,SAAA,CAAU,sCAAsB;MAC7C9B,MAAA,CAAO4B,IAAI,EAAEE,SAAA,CAAU,sBAAS;MAChC9B,MAAA,CAAO4B,IAAI,EAAEE,SAAA,CAAU,uCAAsB;IAC7C;IAEA7B,EAAA,2CAA2B;MAC5B,IAAAU,MAAA,GAAAR,kBAAA;QAEE,GAAAoB,IAAA;QACDE,SAAM;UACJC,MAAG;UACHC,MAAA;QAAW;MACD;MACA,IACVC,IAAA,GAAAlB,SAAA,CAAAC,MAAA;MACFX,MAAC,CAAA4B,IAAA,EAAAE,SAAA;MACD9B,MAAM,CAAA4B,IAAA,EAAOE,SAAA,CAAU,SAAQ;MAC/B9B,MAAA,CAAO4B,IAAI,EAAEE,SAAA,CAAU;MAEvB9B,MAAA,CAAO4B,IAAI,EAAEE,SAAI,wCAAgC;MACjD9B,MAAA,CAAO4B,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,+BAAiB;IAC9C,CAAC;IAED7B,EAAA,CAAG,+CAA6C;MAC9C,IAAAU,MAAM,GAAAR,kBAAS;QACb,GAAGoB,IAAA;QACHE,SAAA,EAAW;UACTC,MAAA,EAAQ;UACVK,MAAA;QACD;MACD;MACA,IAAAH,IAAO,GAAIlB,SAAE,CAAAC,MAAU;MACvBX,MAAA,CAAO4B,IAAI,EAAEE,SAAI,gCAAgC;MAClD9B,MAAA,CAAA4B,IAAA,EAAAC,GAAA,CAAAC,SAAA;MAED9B,MAAG,CAAA4B,IAAA,EAAAC,GAAA,CAAAC,SAAA;IACD;IAAkC7B,EAAA,sCAC7B;MAAA,IACHU,MAAA,GAAWR,kBAAA;QAAA,GACToB,IAAA;QAAQE,SACR,EAAQ;UACVM,MAAA;QACD;MACD;MAEA,IAAAH,IAAO,GAAIlB,SAAE,CAAAC,MAAU;MACvBX,MAAA,CAAO4B,IAAI,EAAEE,SAAI,gCAAgC;MAClD9B,MAAA,CAAA4B,IAAA,EAAAC,GAAA,CAAAC,SAAA;IAED;IACE7B,EAAA,gEAAsC;MACtC,IAAAU,MAAM,GAAOR,kBAAkB;QAC/B,GAAAoB,IAAO;QACPE,SAAW,EAAE;UACbC,MAAO,EAAI,sBAAgB;UAC5BC,MAAA;QAEE;MACD;MAAkC,IAChCC,IAAG,GAAAlB,SAAA,CAAAC,MAAA;MAAAX,MACH,CAAA4B,IAAA,EAAWE,SAAA;MACb9B,MAAC,CAAA4B,IAAA,EAAAC,GAAA,CAAAC,SAAA;IACD;IACA7B,EAAA,kCAA6B,cAAgB;MAC7C,IAAAU,MAAM,GAAAR,kBAAoB,CAAAoB,IAAQ;MAElC,IAAAK,IAAO,GAAAlB,SAAS,CAAAC,MAAU;MAC1BX,MAAA,CAAO4B,IAAA,EAAAC,GAAS,CAAAC,SAAU;MAC1B9B,MAAA,CAAO4B,IAAA,EAAAC,GAAS,CAAAC,SAAI,uBAAU;MAC9B9B,MAAA,CAAO4B,IAAA,EAAAC,GAAA,CAAUC,SAAE,kBAAU,CAAgB;IAC7C;IACA7B,EAAA,+CAAiC,cAAyB;MAE1D,IAAAU,MAAO,GAAAR,kBAAmB;QAC1B,GAAAoB,IAAO;QACRE,SAAA;MAED,CAAG;MACD,IAAAO,OAAM,GAAAtB,SAAS,CAAAC,MAAA,OAAmB;MAAA,IAChCsB,UAAG,GAAAvB,SAAA,CAAAC,MAAA;MAAA,IACHuB,OAAQ,GAAAxB,SAAA,CAAAC,MAAA;MAAAX,MACN,CAAAgC,OAAS,EAAAF,SAAA;MAAA9B,MACP,CAAAgC,OAAQ,EAAAF,SAAA;MAAA9B,MACR,CAAAgC,OAAA,EAAUH,GAAC,CAAAC,SAAA,0BAAuB;MAAA9B,MACpC,CAAAiC,UAAA,EAAAH,SAAA;MAAA9B,MACF,CAAAiC,UAAA,EAAAH,SAAA;MACF9B,MAAC,CAAAiC,UAAA,EAAAJ,GAAA,CAAAC,SAAA;MACD9B,MAAM,CAAAkC,OAAO,EAAAJ,SAAU,0BAAa;MAEpC9B,MAAA,CAAOkC,OAAM,EAAAL,GAAA,CAAAC,SAAA;IAAA;IACX7B,EACF;MACD,IAAAU,MAAA,GAAAR,kBAAA;QACF,GAAAoB,IAAA;QACFY,MAAA","ignoreList":[]}
|
package/metro-entry.js
CHANGED
|
@@ -10,6 +10,8 @@ if (!ONE_ROUTER_ROOT_FOLDER_NAME) {
|
|
|
10
10
|
ONE_ROUTER_ROOT_FOLDER_NAME = 'app'
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
const linking = process.env.ONE_ROUTER_LINKING_CONFIG
|
|
14
|
+
|
|
13
15
|
const routes = ctx.keys().reduce((acc, key) => {
|
|
14
16
|
const path = key.replace(/^\.\//, `/${ONE_ROUTER_ROOT_FOLDER_NAME}/`)
|
|
15
17
|
acc[path] = async () => ctx(key)
|
|
@@ -19,4 +21,5 @@ const routes = ctx.keys().reduce((acc, key) => {
|
|
|
19
21
|
createApp({
|
|
20
22
|
routes,
|
|
21
23
|
routerRoot: ONE_ROUTER_ROOT_FOLDER_NAME,
|
|
24
|
+
linking,
|
|
22
25
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.10",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"setup.mjs",
|
|
@@ -170,17 +170,17 @@
|
|
|
170
170
|
"@cloudflare/vite-plugin": "^1.33.1",
|
|
171
171
|
"@swc/core": "^1.14.0",
|
|
172
172
|
"@ungap/structured-clone": "^1.2.0",
|
|
173
|
-
"@vxrn/color-scheme": "1.16.
|
|
174
|
-
"@vxrn/compiler": "1.16.
|
|
175
|
-
"@vxrn/resolve": "1.16.
|
|
176
|
-
"@vxrn/tslib-lite": "1.16.
|
|
177
|
-
"@vxrn/use-isomorphic-layout-effect": "1.16.
|
|
178
|
-
"@vxrn/vite-plugin-metro": "1.16.
|
|
173
|
+
"@vxrn/color-scheme": "1.16.10",
|
|
174
|
+
"@vxrn/compiler": "1.16.10",
|
|
175
|
+
"@vxrn/resolve": "1.16.10",
|
|
176
|
+
"@vxrn/tslib-lite": "1.16.10",
|
|
177
|
+
"@vxrn/use-isomorphic-layout-effect": "1.16.10",
|
|
178
|
+
"@vxrn/vite-plugin-metro": "1.16.10",
|
|
179
179
|
"babel-dead-code-elimination": "1.0.10",
|
|
180
180
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
181
181
|
"citty": "^0.1.6",
|
|
182
182
|
"core-js": "^3.38.1",
|
|
183
|
-
"create-vxrn": "1.16.
|
|
183
|
+
"create-vxrn": "1.16.10",
|
|
184
184
|
"escape-string-regexp": "^5.0.0",
|
|
185
185
|
"expo-linking": "~55.0.7",
|
|
186
186
|
"expo-modules-core": "~55.0.16",
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
"tsconfig-paths": "^4",
|
|
201
201
|
"use-latest-callback": "^0.2.3",
|
|
202
202
|
"vite": "^8.0.0",
|
|
203
|
-
"vxrn": "1.16.
|
|
203
|
+
"vxrn": "1.16.10",
|
|
204
204
|
"ws": "^8.18.0",
|
|
205
205
|
"xxhashjs": "^0.2.2"
|
|
206
206
|
},
|
package/src/Root.tsx
CHANGED
|
@@ -20,8 +20,9 @@ import { initScreensFeatureFlags } from './screensFeatureFlags'
|
|
|
20
20
|
import { SpaShellContext } from './router/SpaShellContext'
|
|
21
21
|
import { NavigationContainer as UpstreamNavigationContainer } from './fork/NavigationContainer'
|
|
22
22
|
import { getURL } from './getURL'
|
|
23
|
+
import type { OneLinkingConfig } from './link/getLinking'
|
|
23
24
|
import { FlagsContext } from './router/FlagsContext'
|
|
24
|
-
import {
|
|
25
|
+
import { getResolvedLinking } from './router/linkingConfig'
|
|
25
26
|
import { handleNavigationContainerStateChange } from './router/router'
|
|
26
27
|
import { ServerLocationContext } from './router/serverLocationContext'
|
|
27
28
|
import { useInitializeOneRouter } from './router/useInitializeOneRouter'
|
|
@@ -55,6 +56,7 @@ type RootProps = Omit<InnerProps, 'context'> & {
|
|
|
55
56
|
routerRoot: string
|
|
56
57
|
routeOptions?: One.RouteOptions
|
|
57
58
|
flags?: One.Flags
|
|
59
|
+
linking?: OneLinkingConfig
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
type InnerProps = {
|
|
@@ -88,8 +90,15 @@ export function Root(props: RootProps) {
|
|
|
88
90
|
initScreensFeatureFlags()
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
const {
|
|
92
|
-
|
|
93
|
+
const {
|
|
94
|
+
path,
|
|
95
|
+
routes,
|
|
96
|
+
routeOptions,
|
|
97
|
+
isClient,
|
|
98
|
+
navigationContainerProps,
|
|
99
|
+
onRenderId,
|
|
100
|
+
linking,
|
|
101
|
+
} = props
|
|
93
102
|
|
|
94
103
|
const context = useViteRoutes(
|
|
95
104
|
routes,
|
|
@@ -102,7 +111,7 @@ export function Root(props: RootProps) {
|
|
|
102
111
|
? new URL(path || window.location.href || '/', window.location.href)
|
|
103
112
|
: getCachedSSRLocation(path || '/')
|
|
104
113
|
|
|
105
|
-
const store = useInitializeOneRouter(context, location)
|
|
114
|
+
const store = useInitializeOneRouter(context, location, linking)
|
|
106
115
|
const userScheme = useUserScheme()
|
|
107
116
|
|
|
108
117
|
// const headContext = useMemo(() => globalThis['vxrn__headContext__'] || {}, [])
|
|
@@ -136,7 +145,7 @@ export function Root(props: RootProps) {
|
|
|
136
145
|
<UpstreamNavigationContainer
|
|
137
146
|
ref={store.navigationRef}
|
|
138
147
|
initialState={store.initialState}
|
|
139
|
-
linking={
|
|
148
|
+
linking={getResolvedLinking()}
|
|
140
149
|
onUnhandledAction={onUnhandledAction}
|
|
141
150
|
onStateChange={handleNavigationContainerStateChange}
|
|
142
151
|
theme={userScheme.value === 'dark' ? DarkTheme : DefaultTheme}
|
|
@@ -210,7 +219,7 @@ export function Root(props: RootProps) {
|
|
|
210
219
|
if (window.location.pathname + window.location.search !== initialPath) return
|
|
211
220
|
const nav = store.navigationRef?.current
|
|
212
221
|
if (!nav) return
|
|
213
|
-
const linking =
|
|
222
|
+
const linking = getResolvedLinking()
|
|
214
223
|
if (linking?.getStateFromPath) {
|
|
215
224
|
const freshState = linking.getStateFromPath(initialPath, linking.config)
|
|
216
225
|
if (freshState) {
|
|
@@ -111,5 +111,38 @@ describe('one-router-metro babel plugin', () => {
|
|
|
111
111
|
// should be a regex literal
|
|
112
112
|
expect(code).toMatch(/\/\\\.\/app\/\.\*\//)
|
|
113
113
|
})
|
|
114
|
+
|
|
115
|
+
it('replaces process.env.ONE_ROUTER_LINKING_CONFIG', () => {
|
|
116
|
+
const code = transform(
|
|
117
|
+
'const linking = process.env.ONE_ROUTER_LINKING_CONFIG;',
|
|
118
|
+
'/project/node_modules/one/metro-entry.js',
|
|
119
|
+
{
|
|
120
|
+
ONE_ROUTER_LINKING_CONFIG: {
|
|
121
|
+
scheme: 'nativefeatures',
|
|
122
|
+
prefixes: ['nativefeatures://app'],
|
|
123
|
+
},
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
expect(code).toContain('scheme: "nativefeatures"')
|
|
128
|
+
expect(code).toContain('prefixes: ["nativefeatures://app"]')
|
|
129
|
+
expect(code).not.toContain('process.env')
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
it('does not replace ONE_ROUTER_LINKING_CONFIG outside metro-entry.js', () => {
|
|
133
|
+
const code = transform(
|
|
134
|
+
'const linking = process.env.ONE_ROUTER_LINKING_CONFIG;',
|
|
135
|
+
'/project/src/app.js',
|
|
136
|
+
{
|
|
137
|
+
ONE_ROUTER_LINKING_CONFIG: {
|
|
138
|
+
scheme: 'nativefeatures',
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
// user code should still see process.env, not the inlined object
|
|
144
|
+
expect(code).toContain('process.env.ONE_ROUTER_LINKING_CONFIG')
|
|
145
|
+
expect(code).not.toContain('scheme: "nativefeatures"')
|
|
146
|
+
})
|
|
114
147
|
})
|
|
115
148
|
})
|
|
@@ -3,6 +3,7 @@ import * as t from '@babel/types'
|
|
|
3
3
|
|
|
4
4
|
type PluginOptions = {
|
|
5
5
|
ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY?: string
|
|
6
|
+
ONE_ROUTER_LINKING_CONFIG?: unknown
|
|
6
7
|
ONE_ROUTER_ROOT_FOLDER_NAME?: string
|
|
7
8
|
ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING?: string
|
|
8
9
|
ONE_SETUP_FILE_NATIVE?: string
|
|
@@ -15,6 +16,7 @@ function oneRouterMetroPlugin(_: any, options: PluginOptions) {
|
|
|
15
16
|
|
|
16
17
|
const {
|
|
17
18
|
ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY,
|
|
19
|
+
ONE_ROUTER_LINKING_CONFIG,
|
|
18
20
|
ONE_ROUTER_ROOT_FOLDER_NAME,
|
|
19
21
|
ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING,
|
|
20
22
|
ONE_SETUP_FILE_NATIVE,
|
|
@@ -71,6 +73,13 @@ function oneRouterMetroPlugin(_: any, options: PluginOptions) {
|
|
|
71
73
|
path.replaceWith(t.stringLiteral(ONE_ROUTER_APP_ROOT_RELATIVE_TO_ENTRY))
|
|
72
74
|
} else if (key.value.startsWith('ONE_ROUTER_ROOT_FOLDER_NAME')) {
|
|
73
75
|
path.replaceWith(t.stringLiteral(ONE_ROUTER_ROOT_FOLDER_NAME))
|
|
76
|
+
} else if (key.value === 'ONE_ROUTER_LINKING_CONFIG') {
|
|
77
|
+
// gate to metro-entry.js so a linking object literal can't
|
|
78
|
+
// accidentally replace `process.env.ONE_ROUTER_LINKING_CONFIG`
|
|
79
|
+
// in user code
|
|
80
|
+
if (state.filename?.endsWith('metro-entry.js')) {
|
|
81
|
+
path.replaceWith(t.valueToNode(ONE_ROUTER_LINKING_CONFIG))
|
|
82
|
+
}
|
|
74
83
|
} else if (key.value.startsWith('ONE_ROUTER_REQUIRE_CONTEXT_REGEX')) {
|
|
75
84
|
path.replaceWith(t.regExpLiteral(ONE_ROUTER_REQUIRE_CONTEXT_REGEX_STRING))
|
|
76
85
|
} else if (key.value === 'ONE_SETUP_FILE_NATIVE') {
|
package/src/cli/build.ts
CHANGED
|
@@ -260,8 +260,32 @@ function shouldUseWorkers(oneOptions?: { build?: { workers?: boolean } }) {
|
|
|
260
260
|
return oneOptions?.build?.workers !== false
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
// formatErrorSafely temporarily zeroes Error.prepareStackTrace before reading
|
|
264
|
+
// err.stack — prevents a broken transitive prepareStackTrace formatter (e.g.
|
|
265
|
+
// source-map-support without a recursion guard) from spinning V8 forever on
|
|
266
|
+
// the way out. exit(1) so a fatal build doesn't leave a 100%-cpu zombie when
|
|
267
|
+
// CI cancels the parent. see install-error-handlers.ts for the full story.
|
|
268
|
+
import {
|
|
269
|
+
formatErrorSafely,
|
|
270
|
+
installPrepareStackTraceGuard,
|
|
271
|
+
} from './install-error-handlers'
|
|
272
|
+
|
|
273
|
+
installPrepareStackTraceGuard()
|
|
274
|
+
|
|
263
275
|
process.on('uncaughtException', (err) => {
|
|
264
|
-
|
|
276
|
+
try {
|
|
277
|
+
process.stderr.write(`[one build] uncaught exception\n${formatErrorSafely(err)}\n`)
|
|
278
|
+
} catch {}
|
|
279
|
+
process.exit(1)
|
|
280
|
+
})
|
|
281
|
+
|
|
282
|
+
process.on('unhandledRejection', (reason) => {
|
|
283
|
+
try {
|
|
284
|
+
process.stderr.write(
|
|
285
|
+
`[one build] unhandled rejection\n${formatErrorSafely(reason)}\n`
|
|
286
|
+
)
|
|
287
|
+
} catch {}
|
|
288
|
+
process.exit(1)
|
|
265
289
|
})
|
|
266
290
|
|
|
267
291
|
const HOOK_KEYS = [
|
package/src/cli/dev.ts
CHANGED
|
@@ -3,8 +3,14 @@ import colors from 'picocolors'
|
|
|
3
3
|
import { setServerGlobals } from '../server/setServerGlobals'
|
|
4
4
|
import { virtualEntryIdNative } from '../vite/plugins/virtualEntryConstants'
|
|
5
5
|
import { checkNodeVersion } from './checkNodeVersion'
|
|
6
|
+
import {
|
|
7
|
+
formatErrorSafely,
|
|
8
|
+
installPrepareStackTraceGuard,
|
|
9
|
+
} from './install-error-handlers'
|
|
6
10
|
import { labelProcess } from './label-process'
|
|
7
11
|
|
|
12
|
+
installPrepareStackTraceGuard()
|
|
13
|
+
|
|
8
14
|
const DAEMON_PORT = 8081
|
|
9
15
|
|
|
10
16
|
export async function dev(args: {
|
|
@@ -129,15 +135,20 @@ export async function dev(args: {
|
|
|
129
135
|
}
|
|
130
136
|
})
|
|
131
137
|
|
|
138
|
+
// formatErrorSafely + the prepareStackTrace guard prevent a buggy transitive
|
|
139
|
+
// formatter (source-map-support without recursion guard) from pinning the
|
|
140
|
+
// dev server's main thread on uncaught/rejection paths. dev intentionally
|
|
141
|
+
// does NOT exit — keep the server alive through user errors.
|
|
132
142
|
process.on('uncaughtException', (err) => {
|
|
133
|
-
|
|
143
|
+
try {
|
|
144
|
+
process.stderr.write(`[one dev] uncaught exception\n${formatErrorSafely(err)}\n`)
|
|
145
|
+
} catch {}
|
|
134
146
|
})
|
|
135
147
|
|
|
136
|
-
// Prevent syntax errors in user's code from crashing the dev server.
|
|
137
|
-
// TODO: It seems that Vite CLI isn't doing this and is using another way
|
|
138
|
-
// to prevent such crashes. May need to investigate further.
|
|
139
148
|
process.on('unhandledRejection', (err) => {
|
|
140
|
-
|
|
149
|
+
try {
|
|
150
|
+
process.stderr.write(`[one dev] unhandled rejection\n${formatErrorSafely(err)}\n`)
|
|
151
|
+
} catch {}
|
|
141
152
|
})
|
|
142
153
|
|
|
143
154
|
await closePromise
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// install-error-handlers — protects `one`'s CLI long-running commands
|
|
2
|
+
// (build, dev, serve) from a class of catastrophic process zombies.
|
|
3
|
+
//
|
|
4
|
+
// background: 2026-05-05 the soot CI runner accumulated four `Onejs:build`
|
|
5
|
+
// processes pegged at 100% CPU for 3-9 days each. all of them were stuck
|
|
6
|
+
// inside V8's stack-trace formatter. the chain:
|
|
7
|
+
//
|
|
8
|
+
// 1. build code throws an uncaught exception
|
|
9
|
+
// 2. one's CLI handler runs `console.error(err?.message || err)`. when
|
|
10
|
+
// `err.message` is empty, the fallback prints the Error object itself.
|
|
11
|
+
// 3. console.error invokes node's inspector formatter, which reads
|
|
12
|
+
// `error.stack`. that getter calls Error.prepareStackTrace.
|
|
13
|
+
// 4. Error.prepareStackTrace was set by source-map-support (a transitive
|
|
14
|
+
// dep of esbuild-register, vite, etc.). its formatter has no recursion
|
|
15
|
+
// guard — if wrapCallSite or any frame-string operation throws (very
|
|
16
|
+
// possible under disk/memory pressure during fs.readFileSync of source
|
|
17
|
+
// maps), the resulting error's own stack getter triggers the same
|
|
18
|
+
// formatter again. V8 spins in c++ trying to format the new error,
|
|
19
|
+
// never yields to the JS event loop, never processes SIGTERM.
|
|
20
|
+
// 5. node's CLI was also missing process.exit(1) in the handler, so even
|
|
21
|
+
// a clean uncaught exception left the process alive holding cpu/memory.
|
|
22
|
+
//
|
|
23
|
+
// what we install:
|
|
24
|
+
//
|
|
25
|
+
// • installPrepareStackTraceGuard() — wraps Error.prepareStackTrace via a
|
|
26
|
+
// property descriptor with a getter/setter. the getter always hands back
|
|
27
|
+
// a re-entry guarded wrapper; the setter captures whatever a library
|
|
28
|
+
// wants to use as the formatter. if that user-formatter throws or is
|
|
29
|
+
// called recursively, we bail to a default format. this stops the V8
|
|
30
|
+
// spin-loop dead even if a buggy formatter ships with a transitive dep.
|
|
31
|
+
// • installSafeUncaughtHandler(label) — drop-in replacement for the
|
|
32
|
+
// existing `process.on('uncaughtException', ...)` calls. always exits
|
|
33
|
+
// after logging so a fatal error becomes a fast non-zero exit instead
|
|
34
|
+
// of a permanent 100%-cpu zombie.
|
|
35
|
+
// • formatErrorSafely(err) — lower-level helper used inside the handler.
|
|
36
|
+
// temporarily zeroes Error.prepareStackTrace so `err.stack` reads use
|
|
37
|
+
// V8's default formatter, even on ancient node versions where our
|
|
38
|
+
// getter/setter ride-along somehow gets clobbered.
|
|
39
|
+
|
|
40
|
+
type StackPrepare = (error: Error, stack: NodeJS.CallSite[]) => string
|
|
41
|
+
|
|
42
|
+
let userPrepare: StackPrepare | undefined
|
|
43
|
+
let depth = 0
|
|
44
|
+
// prior userPrepare values, paired with the wrapper they were displaced by.
|
|
45
|
+
// keeps the React-style save/zero/restore pattern working: saving the wrapper,
|
|
46
|
+
// setting Error.prepareStackTrace = undefined, then setting it back to the
|
|
47
|
+
// saved wrapper restores the right userPrepare.
|
|
48
|
+
const restoreTrail: Array<StackPrepare | undefined> = []
|
|
49
|
+
|
|
50
|
+
function defaultFormat(error: Error, stack: NodeJS.CallSite[]): string {
|
|
51
|
+
const name = error?.name ?? 'Error'
|
|
52
|
+
const message = error?.message ?? ''
|
|
53
|
+
const head = `${name}: ${message}`
|
|
54
|
+
try {
|
|
55
|
+
const lines = stack.map((frame) => {
|
|
56
|
+
try {
|
|
57
|
+
return ` at ${frame}`
|
|
58
|
+
} catch {
|
|
59
|
+
return ' at <frame>'
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
return `${head}\n${lines.join('\n')}`
|
|
63
|
+
} catch {
|
|
64
|
+
return head
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function guardedPrepare(error: Error, stack: NodeJS.CallSite[]): string {
|
|
69
|
+
if (depth > 0) return defaultFormat(error, stack)
|
|
70
|
+
if (typeof userPrepare !== 'function') return defaultFormat(error, stack)
|
|
71
|
+
depth++
|
|
72
|
+
try {
|
|
73
|
+
return userPrepare(error, stack)
|
|
74
|
+
} catch {
|
|
75
|
+
return defaultFormat(error, stack)
|
|
76
|
+
} finally {
|
|
77
|
+
depth--
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let installed = false
|
|
82
|
+
|
|
83
|
+
export function installPrepareStackTraceGuard(): void {
|
|
84
|
+
if (installed) return
|
|
85
|
+
installed = true
|
|
86
|
+
|
|
87
|
+
const existing = Error.prepareStackTrace
|
|
88
|
+
if (typeof existing === 'function' && existing !== guardedPrepare) {
|
|
89
|
+
userPrepare = existing as StackPrepare
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
Object.defineProperty(Error, 'prepareStackTrace', {
|
|
93
|
+
configurable: true,
|
|
94
|
+
get(): StackPrepare {
|
|
95
|
+
return guardedPrepare
|
|
96
|
+
},
|
|
97
|
+
set(value: unknown): void {
|
|
98
|
+
if (value === guardedPrepare) {
|
|
99
|
+
// restore-after-save round-trip. pop the matching userPrepare so
|
|
100
|
+
// libraries that read → set undefined → set back to the saved value
|
|
101
|
+
// end up with their original formatter still installed.
|
|
102
|
+
if (restoreTrail.length > 0) {
|
|
103
|
+
userPrepare = restoreTrail.pop()
|
|
104
|
+
}
|
|
105
|
+
return
|
|
106
|
+
}
|
|
107
|
+
restoreTrail.push(userPrepare)
|
|
108
|
+
userPrepare = typeof value === 'function' ? (value as StackPrepare) : undefined
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// reads err.stack with Error.prepareStackTrace temporarily zeroed so a
|
|
114
|
+
// broken user-formatter can't recurse on us — even if installPrepareStackTrace-
|
|
115
|
+
// Guard isn't active for some reason. used inside our uncaught handlers.
|
|
116
|
+
export function formatErrorSafely(err: unknown): string {
|
|
117
|
+
const prevPrepare = Error.prepareStackTrace
|
|
118
|
+
// setting to undefined makes V8 use its built-in default stack format on
|
|
119
|
+
// err.stack reads. node's @types declare prepareStackTrace as a function,
|
|
120
|
+
// so cast through unknown to express the runtime allowance.
|
|
121
|
+
Error.prepareStackTrace = undefined as unknown as typeof Error.prepareStackTrace
|
|
122
|
+
try {
|
|
123
|
+
if (err instanceof Error) {
|
|
124
|
+
let stack = ''
|
|
125
|
+
try {
|
|
126
|
+
stack = err.stack ?? ''
|
|
127
|
+
} catch {
|
|
128
|
+
// nothing
|
|
129
|
+
}
|
|
130
|
+
if (stack) return stack
|
|
131
|
+
const name = err.name || 'Error'
|
|
132
|
+
const message = err.message || ''
|
|
133
|
+
return `${name}: ${message}`
|
|
134
|
+
}
|
|
135
|
+
return String(err)
|
|
136
|
+
} catch {
|
|
137
|
+
try {
|
|
138
|
+
return String(err)
|
|
139
|
+
} catch {
|
|
140
|
+
return '<unprintable error>'
|
|
141
|
+
}
|
|
142
|
+
} finally {
|
|
143
|
+
Error.prepareStackTrace = prevPrepare
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// drop-in replacement for `process.on('uncaughtException', console.error)`
|
|
148
|
+
// patterns. `label` distinguishes which command emitted the failure — useful
|
|
149
|
+
// when grepping CI logs across build/dev/serve. always exits (1) — a leaked
|
|
150
|
+
// uncaught is what produced the 9-day Onejs:build zombies.
|
|
151
|
+
export function installSafeUncaughtHandler(label: string): void {
|
|
152
|
+
installPrepareStackTraceGuard()
|
|
153
|
+
process.on('uncaughtException', (err) => {
|
|
154
|
+
try {
|
|
155
|
+
const formatted = formatErrorSafely(err)
|
|
156
|
+
process.stderr.write(`[${label}] uncaught exception\n${formatted}\n`)
|
|
157
|
+
} catch {
|
|
158
|
+
// last-resort: never throw out of an uncaught handler
|
|
159
|
+
}
|
|
160
|
+
process.exit(1)
|
|
161
|
+
})
|
|
162
|
+
process.on('unhandledRejection', (reason) => {
|
|
163
|
+
try {
|
|
164
|
+
const formatted = formatErrorSafely(reason)
|
|
165
|
+
process.stderr.write(`[${label}] unhandled rejection\n${formatted}\n`)
|
|
166
|
+
} catch {
|
|
167
|
+
// nothing
|
|
168
|
+
}
|
|
169
|
+
// unhandledRejection alone shouldn't kill long-running dev servers; only
|
|
170
|
+
// the build/serve callers that need fail-fast pass exitOnRejection.
|
|
171
|
+
})
|
|
172
|
+
}
|
package/src/createApp.native.tsx
CHANGED
package/src/createApp.tsx
CHANGED
|
@@ -11,6 +11,7 @@ import { setupSkewProtection } from './skewProtection'
|
|
|
11
11
|
import { handleSkewError } from './utils/dynamicImport'
|
|
12
12
|
import { findRootLayout } from './utils/findRootLayout'
|
|
13
13
|
import type { RenderAppProps } from './types'
|
|
14
|
+
import type { OneLinkingConfig } from './link/getLinking'
|
|
14
15
|
import { getServerHeadInsertions } from './useServerHeadInsertion'
|
|
15
16
|
import { ensureExists } from './utils/ensureExists'
|
|
16
17
|
import { SERVER_CONTEXT_POST_RENDER_STRING } from './vite/constants'
|
|
@@ -22,6 +23,7 @@ export type CreateAppProps = {
|
|
|
22
23
|
routes: Record<string, () => Promise<unknown>>
|
|
23
24
|
routerRoot: string
|
|
24
25
|
flags?: One.Flags
|
|
26
|
+
linking?: OneLinkingConfig
|
|
25
27
|
/**
|
|
26
28
|
* Lazy function that returns a promise for the setup file import.
|
|
27
29
|
* Called at runtime (not build time) to ensure setup code only runs when the app starts.
|
|
@@ -108,6 +110,7 @@ export function createApp(options: CreateAppProps) {
|
|
|
108
110
|
}}
|
|
109
111
|
routes={options.routes}
|
|
110
112
|
routerRoot={options.routerRoot}
|
|
113
|
+
linking={options.linking}
|
|
111
114
|
{...props}
|
|
112
115
|
/>
|
|
113
116
|
)
|
|
@@ -227,6 +230,7 @@ export function createApp(options: CreateAppProps) {
|
|
|
227
230
|
flags={options.flags}
|
|
228
231
|
routes={options.routes}
|
|
229
232
|
routerRoot={options.routerRoot}
|
|
233
|
+
linking={options.linking}
|
|
230
234
|
{...props}
|
|
231
235
|
/>
|
|
232
236
|
)
|
|
@@ -315,6 +319,7 @@ export function createApp(options: CreateAppProps) {
|
|
|
315
319
|
flags={options.flags}
|
|
316
320
|
routes={options.routes}
|
|
317
321
|
routerRoot={options.routerRoot}
|
|
322
|
+
linking={options.linking}
|
|
318
323
|
path={window.location.href}
|
|
319
324
|
/>
|
|
320
325
|
)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { extractPathFromURL } from './extractPathFromURL'
|
|
3
|
+
import { getStateFromPath } from './getStateFromPath'
|
|
4
|
+
import { getMockConfig } from '../testing-utils'
|
|
5
|
+
|
|
6
|
+
describe('extractPathFromURL prefixes', () => {
|
|
7
|
+
it('keeps existing custom scheme behavior without prefixes', () => {
|
|
8
|
+
expect(extractPathFromURL([], 'threepunchconvo://thread/123')).toBe('thread/123')
|
|
9
|
+
expect(extractPathFromURL([], 'threepunchconvo:///thread/123')).toBe('thread/123')
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('strips the longest matching custom scheme prefix', () => {
|
|
13
|
+
expect(
|
|
14
|
+
extractPathFromURL(
|
|
15
|
+
['threepunchconvo://', 'threepunchconvo://app'],
|
|
16
|
+
'threepunchconvo://app/thread/123'
|
|
17
|
+
)
|
|
18
|
+
).toBe('thread/123')
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('strips universal link prefixes', () => {
|
|
22
|
+
expect(
|
|
23
|
+
extractPathFromURL(
|
|
24
|
+
['https://threepunch.example/app'],
|
|
25
|
+
'https://threepunch.example/app/thread/123?tab=chat'
|
|
26
|
+
)
|
|
27
|
+
).toBe('thread/123?tab=chat')
|
|
28
|
+
expect(
|
|
29
|
+
extractPathFromURL(
|
|
30
|
+
['https://threepunch.example/app'],
|
|
31
|
+
'https://threepunch.example/app'
|
|
32
|
+
)
|
|
33
|
+
).toBe('')
|
|
34
|
+
expect(
|
|
35
|
+
extractPathFromURL(
|
|
36
|
+
['https://threepunch.example/app'],
|
|
37
|
+
'https://threepunch.example/application/thread/123'
|
|
38
|
+
)
|
|
39
|
+
).toBe('application/thread/123')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('strips a prefix when the boundary is a query or hash', () => {
|
|
43
|
+
expect(
|
|
44
|
+
extractPathFromURL(['threepunchconvo://app'], 'threepunchconvo://app?utm=share')
|
|
45
|
+
).toBe('?utm=share')
|
|
46
|
+
expect(
|
|
47
|
+
extractPathFromURL(['threepunchconvo://app'], 'threepunchconvo://app#section')
|
|
48
|
+
).toBe('#section')
|
|
49
|
+
expect(
|
|
50
|
+
extractPathFromURL(
|
|
51
|
+
['https://threepunch.example/app'],
|
|
52
|
+
'https://threepunch.example/app?ref=share'
|
|
53
|
+
)
|
|
54
|
+
).toBe('?ref=share')
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
it('uses stripped paths for route matching', () => {
|
|
58
|
+
const config = getMockConfig([
|
|
59
|
+
'_layout.tsx',
|
|
60
|
+
'index.tsx',
|
|
61
|
+
'thread/[id].tsx',
|
|
62
|
+
'+not-found.tsx',
|
|
63
|
+
])
|
|
64
|
+
const path = extractPathFromURL(
|
|
65
|
+
['threepunchconvo://app'],
|
|
66
|
+
'threepunchconvo://app/thread/123'
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
expect(getStateFromPath(path, config)).toEqual({
|
|
70
|
+
routes: [
|
|
71
|
+
{
|
|
72
|
+
name: 'thread/[id]',
|
|
73
|
+
params: { id: '123' },
|
|
74
|
+
key: 'thread/[id]-0',
|
|
75
|
+
path: 'thread/123',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
})
|
|
79
|
+
})
|
|
80
|
+
})
|