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.
Files changed (287) hide show
  1. package/dist/cjs/Root.cjs +7 -6
  2. package/dist/cjs/Root.native.js +7 -6
  3. package/dist/cjs/Root.native.js.map +1 -1
  4. package/dist/cjs/babel-plugins/one-router-metro.cjs +5 -0
  5. package/dist/cjs/babel-plugins/one-router-metro.native.js +6 -0
  6. package/dist/cjs/babel-plugins/one-router-metro.native.js.map +1 -1
  7. package/dist/cjs/babel-plugins/one-router-metro.test.cjs +20 -0
  8. package/dist/cjs/babel-plugins/one-router-metro.test.native.js +20 -0
  9. package/dist/cjs/babel-plugins/one-router-metro.test.native.js.map +1 -1
  10. package/dist/cjs/cli/build.cjs +16 -1
  11. package/dist/cjs/cli/build.native.js +16 -1
  12. package/dist/cjs/cli/build.native.js.map +1 -1
  13. package/dist/cjs/cli/dev.cjs +12 -2
  14. package/dist/cjs/cli/dev.native.js +12 -2
  15. package/dist/cjs/cli/dev.native.js.map +1 -1
  16. package/dist/cjs/cli/install-error-handlers.cjs +132 -0
  17. package/dist/cjs/cli/install-error-handlers.native.js +144 -0
  18. package/dist/cjs/cli/install-error-handlers.native.js.map +1 -0
  19. package/dist/cjs/createApp.cjs +3 -0
  20. package/dist/cjs/createApp.native.js +1 -0
  21. package/dist/cjs/createApp.native.js.map +1 -1
  22. package/dist/cjs/fork/extractPathFromURL.cjs +19 -0
  23. package/dist/cjs/fork/extractPathFromURL.native.js +25 -0
  24. package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
  25. package/dist/cjs/fork/extractPathFromURL.test.cjs +37 -0
  26. package/dist/cjs/fork/extractPathFromURL.test.native.js +40 -0
  27. package/dist/cjs/fork/extractPathFromURL.test.native.js.map +1 -0
  28. package/dist/cjs/headless.cjs +1 -0
  29. package/dist/cjs/headless.native.js +1 -0
  30. package/dist/cjs/headless.native.js.map +1 -1
  31. package/dist/cjs/index.cjs +4 -0
  32. package/dist/cjs/index.native.js +4 -0
  33. package/dist/cjs/index.native.js.map +1 -1
  34. package/dist/cjs/link/getLinking.cjs +48 -0
  35. package/dist/cjs/link/getLinking.native.js +54 -0
  36. package/dist/cjs/link/getLinking.native.js.map +1 -0
  37. package/dist/cjs/link/linking.cjs +4 -0
  38. package/dist/cjs/link/linking.native.js +9 -0
  39. package/dist/cjs/link/linking.native.js.map +1 -1
  40. package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +2 -0
  41. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +2 -0
  42. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  43. package/dist/cjs/router/Route.cjs +1 -1
  44. package/dist/cjs/router/Route.native.js +1 -1
  45. package/dist/cjs/router/Route.native.js.map +1 -1
  46. package/dist/cjs/router/getLinkingConfig.cjs +13 -2
  47. package/dist/cjs/router/getLinkingConfig.native.js +14 -2
  48. package/dist/cjs/router/getLinkingConfig.native.js.map +1 -1
  49. package/dist/cjs/router/getLinkingConfig.test.cjs +41 -0
  50. package/dist/cjs/router/getLinkingConfig.test.native.js +44 -0
  51. package/dist/cjs/router/getLinkingConfig.test.native.js.map +1 -0
  52. package/dist/cjs/router/getRouteInfo.cjs +1 -1
  53. package/dist/cjs/router/getRouteInfo.native.js +2 -2
  54. package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
  55. package/dist/cjs/router/linkingConfig.cjs +34 -9
  56. package/dist/cjs/router/linkingConfig.native.js +35 -9
  57. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  58. package/dist/cjs/router/router.cjs +6 -6
  59. package/dist/cjs/router/router.native.js +6 -6
  60. package/dist/cjs/router/router.native.js.map +1 -1
  61. package/dist/cjs/router/sitemap.cjs +65 -0
  62. package/dist/cjs/router/sitemap.native.js +75 -0
  63. package/dist/cjs/router/sitemap.native.js.map +1 -0
  64. package/dist/cjs/router/sitemap.test.cjs +34 -0
  65. package/dist/cjs/router/sitemap.test.native.js +37 -0
  66. package/dist/cjs/router/sitemap.test.native.js.map +1 -0
  67. package/dist/cjs/router/useInitializeOneRouter.cjs +5 -5
  68. package/dist/cjs/router/useInitializeOneRouter.native.js +5 -5
  69. package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
  70. package/dist/cjs/serve.cjs +14 -1
  71. package/dist/cjs/serve.native.js +14 -1
  72. package/dist/cjs/serve.native.js.map +1 -1
  73. package/dist/cjs/utils/isStatus.cjs +1 -1
  74. package/dist/cjs/utils/isStatus.native.js +1 -1
  75. package/dist/cjs/utils/isStatus.native.js.map +1 -1
  76. package/dist/cjs/views/Navigator.cjs +1 -1
  77. package/dist/cjs/views/Navigator.native.js +1 -1
  78. package/dist/cjs/views/Navigator.native.js.map +1 -1
  79. package/dist/cjs/vite/one.cjs +2 -0
  80. package/dist/cjs/vite/one.native.js +4 -2
  81. package/dist/cjs/vite/one.native.js.map +1 -1
  82. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +4 -0
  83. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +6 -0
  84. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  85. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +13 -0
  86. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +13 -0
  87. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  88. package/dist/esm/Root.mjs +8 -7
  89. package/dist/esm/Root.mjs.map +1 -1
  90. package/dist/esm/Root.native.js +8 -7
  91. package/dist/esm/Root.native.js.map +1 -1
  92. package/dist/esm/babel-plugins/one-router-metro.mjs +5 -0
  93. package/dist/esm/babel-plugins/one-router-metro.mjs.map +1 -1
  94. package/dist/esm/babel-plugins/one-router-metro.native.js +6 -0
  95. package/dist/esm/babel-plugins/one-router-metro.native.js.map +1 -1
  96. package/dist/esm/babel-plugins/one-router-metro.test.mjs +20 -0
  97. package/dist/esm/babel-plugins/one-router-metro.test.mjs.map +1 -1
  98. package/dist/esm/babel-plugins/one-router-metro.test.native.js +20 -0
  99. package/dist/esm/babel-plugins/one-router-metro.test.native.js.map +1 -1
  100. package/dist/esm/cli/build.mjs +16 -1
  101. package/dist/esm/cli/build.mjs.map +1 -1
  102. package/dist/esm/cli/build.native.js +16 -1
  103. package/dist/esm/cli/build.native.js.map +1 -1
  104. package/dist/esm/cli/dev.mjs +12 -2
  105. package/dist/esm/cli/dev.mjs.map +1 -1
  106. package/dist/esm/cli/dev.native.js +12 -2
  107. package/dist/esm/cli/dev.native.js.map +1 -1
  108. package/dist/esm/cli/install-error-handlers.mjs +105 -0
  109. package/dist/esm/cli/install-error-handlers.mjs.map +1 -0
  110. package/dist/esm/cli/install-error-handlers.native.js +114 -0
  111. package/dist/esm/cli/install-error-handlers.native.js.map +1 -0
  112. package/dist/esm/createApp.mjs +3 -0
  113. package/dist/esm/createApp.mjs.map +1 -1
  114. package/dist/esm/createApp.native.js +1 -0
  115. package/dist/esm/createApp.native.js.map +1 -1
  116. package/dist/esm/fork/extractPathFromURL.mjs +19 -0
  117. package/dist/esm/fork/extractPathFromURL.mjs.map +1 -1
  118. package/dist/esm/fork/extractPathFromURL.native.js +25 -0
  119. package/dist/esm/fork/extractPathFromURL.native.js.map +1 -1
  120. package/dist/esm/fork/extractPathFromURL.test.mjs +38 -0
  121. package/dist/esm/fork/extractPathFromURL.test.mjs.map +1 -0
  122. package/dist/esm/fork/extractPathFromURL.test.native.js +38 -0
  123. package/dist/esm/fork/extractPathFromURL.test.native.js.map +1 -0
  124. package/dist/esm/headless.mjs +1 -0
  125. package/dist/esm/headless.mjs.map +1 -1
  126. package/dist/esm/headless.native.js +1 -0
  127. package/dist/esm/headless.native.js.map +1 -1
  128. package/dist/esm/index.js +3 -1
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/esm/index.mjs +3 -1
  131. package/dist/esm/index.mjs.map +1 -1
  132. package/dist/esm/index.native.js +3 -1
  133. package/dist/esm/index.native.js.map +1 -1
  134. package/dist/esm/link/getLinking.mjs +22 -0
  135. package/dist/esm/link/getLinking.mjs.map +1 -0
  136. package/dist/esm/link/getLinking.native.js +25 -0
  137. package/dist/esm/link/getLinking.native.js.map +1 -0
  138. package/dist/esm/link/linking.mjs +4 -1
  139. package/dist/esm/link/linking.mjs.map +1 -1
  140. package/dist/esm/link/linking.native.js +9 -1
  141. package/dist/esm/link/linking.native.js.map +1 -1
  142. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +2 -0
  143. package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
  144. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +2 -0
  145. package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  146. package/dist/esm/router/Route.mjs +2 -2
  147. package/dist/esm/router/Route.mjs.map +1 -1
  148. package/dist/esm/router/Route.native.js +2 -2
  149. package/dist/esm/router/Route.native.js.map +1 -1
  150. package/dist/esm/router/getLinkingConfig.mjs +14 -4
  151. package/dist/esm/router/getLinkingConfig.mjs.map +1 -1
  152. package/dist/esm/router/getLinkingConfig.native.js +15 -4
  153. package/dist/esm/router/getLinkingConfig.native.js.map +1 -1
  154. package/dist/esm/router/getLinkingConfig.test.mjs +42 -0
  155. package/dist/esm/router/getLinkingConfig.test.mjs.map +1 -0
  156. package/dist/esm/router/getLinkingConfig.test.native.js +42 -0
  157. package/dist/esm/router/getLinkingConfig.test.native.js.map +1 -0
  158. package/dist/esm/router/getRouteInfo.mjs +2 -2
  159. package/dist/esm/router/getRouteInfo.mjs.map +1 -1
  160. package/dist/esm/router/getRouteInfo.native.js +3 -3
  161. package/dist/esm/router/getRouteInfo.native.js.map +1 -1
  162. package/dist/esm/router/linkingConfig.mjs +35 -10
  163. package/dist/esm/router/linkingConfig.mjs.map +1 -1
  164. package/dist/esm/router/linkingConfig.native.js +36 -10
  165. package/dist/esm/router/linkingConfig.native.js.map +1 -1
  166. package/dist/esm/router/router.mjs +7 -7
  167. package/dist/esm/router/router.mjs.map +1 -1
  168. package/dist/esm/router/router.native.js +7 -7
  169. package/dist/esm/router/router.native.js.map +1 -1
  170. package/dist/esm/router/sitemap.mjs +39 -0
  171. package/dist/esm/router/sitemap.mjs.map +1 -0
  172. package/dist/esm/router/sitemap.native.js +46 -0
  173. package/dist/esm/router/sitemap.native.js.map +1 -0
  174. package/dist/esm/router/sitemap.test.mjs +35 -0
  175. package/dist/esm/router/sitemap.test.mjs.map +1 -0
  176. package/dist/esm/router/sitemap.test.native.js +35 -0
  177. package/dist/esm/router/sitemap.test.native.js.map +1 -0
  178. package/dist/esm/router/useInitializeOneRouter.mjs +5 -5
  179. package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
  180. package/dist/esm/router/useInitializeOneRouter.native.js +5 -5
  181. package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
  182. package/dist/esm/serve.mjs +14 -1
  183. package/dist/esm/serve.mjs.map +1 -1
  184. package/dist/esm/serve.native.js +14 -1
  185. package/dist/esm/serve.native.js.map +1 -1
  186. package/dist/esm/utils/isStatus.mjs +1 -1
  187. package/dist/esm/utils/isStatus.mjs.map +1 -1
  188. package/dist/esm/utils/isStatus.native.js +1 -1
  189. package/dist/esm/utils/isStatus.native.js.map +1 -1
  190. package/dist/esm/views/Navigator.mjs +2 -2
  191. package/dist/esm/views/Navigator.mjs.map +1 -1
  192. package/dist/esm/views/Navigator.native.js +2 -2
  193. package/dist/esm/views/Navigator.native.js.map +1 -1
  194. package/dist/esm/vite/one.mjs +2 -0
  195. package/dist/esm/vite/one.mjs.map +1 -1
  196. package/dist/esm/vite/one.native.js +4 -2
  197. package/dist/esm/vite/one.native.js.map +1 -1
  198. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +4 -0
  199. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  200. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +6 -0
  201. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  202. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +13 -0
  203. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
  204. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +13 -0
  205. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  206. package/metro-entry.js +3 -0
  207. package/package.json +9 -9
  208. package/src/Root.tsx +15 -6
  209. package/src/babel-plugins/one-router-metro.test.ts +33 -0
  210. package/src/babel-plugins/one-router-metro.ts +9 -0
  211. package/src/cli/build.ts +25 -1
  212. package/src/cli/dev.ts +16 -5
  213. package/src/cli/install-error-handlers.ts +172 -0
  214. package/src/createApp.native.tsx +1 -0
  215. package/src/createApp.tsx +5 -0
  216. package/src/fork/extractPathFromURL.test.ts +80 -0
  217. package/src/fork/extractPathFromURL.ts +28 -0
  218. package/src/headless.tsx +3 -0
  219. package/src/index.ts +2 -0
  220. package/src/link/getLinking.ts +56 -0
  221. package/src/link/linking.native.ts +9 -0
  222. package/src/link/linking.ts +4 -0
  223. package/src/metro-config/getViteMetroPluginOptions.ts +3 -0
  224. package/src/router/Route.tsx +2 -2
  225. package/src/router/getLinkingConfig.test.ts +57 -0
  226. package/src/router/getLinkingConfig.ts +21 -3
  227. package/src/router/getRouteInfo.ts +2 -2
  228. package/src/router/linkingConfig.ts +52 -8
  229. package/src/router/router.ts +9 -7
  230. package/src/router/sitemap.test.ts +50 -0
  231. package/src/router/sitemap.ts +66 -0
  232. package/src/router/useInitializeOneRouter.ts +7 -5
  233. package/src/serve.ts +22 -1
  234. package/src/utils/isStatus.ts +11 -2
  235. package/src/views/Navigator.tsx +4 -8
  236. package/src/vite/one.ts +2 -0
  237. package/src/vite/plugins/virtualEntryPlugin.test.ts +17 -0
  238. package/src/vite/plugins/virtualEntryPlugin.ts +8 -0
  239. package/src/vite/types.ts +23 -0
  240. package/types/Root.d.ts +2 -0
  241. package/types/Root.d.ts.map +1 -1
  242. package/types/babel-plugins/one-router-metro.d.ts +1 -0
  243. package/types/babel-plugins/one-router-metro.d.ts.map +1 -1
  244. package/types/cli/build.d.ts.map +1 -1
  245. package/types/cli/dev.d.ts.map +1 -1
  246. package/types/cli/install-error-handlers.d.ts +4 -0
  247. package/types/cli/install-error-handlers.d.ts.map +1 -0
  248. package/types/createApp.d.ts +2 -0
  249. package/types/createApp.d.ts.map +1 -1
  250. package/types/createApp.native.d.ts.map +1 -1
  251. package/types/fork/extractPathFromURL.d.ts.map +1 -1
  252. package/types/fork/extractPathFromURL.test.d.ts +2 -0
  253. package/types/fork/extractPathFromURL.test.d.ts.map +1 -0
  254. package/types/headless.d.ts +2 -0
  255. package/types/headless.d.ts.map +1 -1
  256. package/types/index.d.ts +2 -0
  257. package/types/index.d.ts.map +1 -1
  258. package/types/link/getLinking.d.ts +22 -0
  259. package/types/link/getLinking.d.ts.map +1 -0
  260. package/types/link/linking.d.ts +1 -0
  261. package/types/link/linking.d.ts.map +1 -1
  262. package/types/link/linking.native.d.ts +1 -0
  263. package/types/link/linking.native.d.ts.map +1 -1
  264. package/types/metro-config/getViteMetroPluginOptions.d.ts +2 -1
  265. package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
  266. package/types/router/getLinkingConfig.d.ts +3 -1
  267. package/types/router/getLinkingConfig.d.ts.map +1 -1
  268. package/types/router/getLinkingConfig.test.d.ts +2 -0
  269. package/types/router/getLinkingConfig.test.d.ts.map +1 -0
  270. package/types/router/linkingConfig.d.ts +5 -4
  271. package/types/router/linkingConfig.d.ts.map +1 -1
  272. package/types/router/router.d.ts +2 -1
  273. package/types/router/router.d.ts.map +1 -1
  274. package/types/router/sitemap.d.ts +14 -0
  275. package/types/router/sitemap.d.ts.map +1 -0
  276. package/types/router/sitemap.test.d.ts +2 -0
  277. package/types/router/sitemap.test.d.ts.map +1 -0
  278. package/types/router/useInitializeOneRouter.d.ts +2 -1
  279. package/types/router/useInitializeOneRouter.d.ts.map +1 -1
  280. package/types/serve.d.ts.map +1 -1
  281. package/types/utils/isStatus.d.ts +2 -1
  282. package/types/utils/isStatus.d.ts.map +1 -1
  283. package/types/views/Navigator.d.ts.map +1 -1
  284. package/types/vite/one.d.ts.map +1 -1
  285. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  286. package/types/vite/types.d.ts +23 -0
  287. 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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","ignoreList":[]}
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":"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","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.8",
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.8",
174
- "@vxrn/compiler": "1.16.8",
175
- "@vxrn/resolve": "1.16.8",
176
- "@vxrn/tslib-lite": "1.16.8",
177
- "@vxrn/use-isomorphic-layout-effect": "1.16.8",
178
- "@vxrn/vite-plugin-metro": "1.16.8",
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.8",
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.8",
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 { getLinking } from './router/linkingConfig'
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 { path, routes, routeOptions, isClient, navigationContainerProps, onRenderId } =
92
- props
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={getLinking()}
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 = getLinking()
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
- console.error(err?.message || err)
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
- console.error(err?.message || err)
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
- console.error(err)
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
+ }
@@ -16,6 +16,7 @@ export function createApp(options: CreateAppProps): void {
16
16
  flags={options.flags}
17
17
  routes={options.routes}
18
18
  routerRoot={options.routerRoot}
19
+ linking={options.linking}
19
20
  path="/"
20
21
  />
21
22
  )
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
+ })