one 1.21.7 → 1.21.8

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 (209) hide show
  1. package/dist/cjs/cli/dev.native.js.map +1 -1
  2. package/dist/cjs/cli.cjs +0 -3
  3. package/dist/cjs/cli.native.js +0 -3
  4. package/dist/cjs/cli.native.js.map +1 -1
  5. package/dist/cjs/image/getImageData.cjs +1 -1
  6. package/dist/cjs/image/getImageData.native.js +1 -1
  7. package/dist/cjs/image/getImageData.native.js.map +1 -1
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/layouts/Stack.cjs +5 -5
  10. package/dist/cjs/layouts/Stack.native.js +5 -5
  11. package/dist/cjs/layouts/Stack.native.js.map +1 -1
  12. package/dist/cjs/layouts/stack-utils/StackScreen.cjs +3 -0
  13. package/dist/cjs/layouts/stack-utils/StackScreen.native.js +3 -0
  14. package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
  15. package/dist/cjs/layouts/stack-utils/StackToolbar.cjs +419 -0
  16. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js +453 -0
  17. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js.map +1 -0
  18. package/dist/cjs/layouts/stack-utils/StackToolbar.types.cjs +18 -0
  19. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js +21 -0
  20. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js.map +1 -0
  21. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.runtime.test.cjs +63 -0
  22. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.runtime.test.native.js +73 -0
  23. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.runtime.test.native.js.map +1 -0
  24. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.cjs +205 -0
  25. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js +220 -0
  26. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  27. package/dist/cjs/layouts/stack-utils/index.cjs +2 -0
  28. package/dist/cjs/layouts/stack-utils/index.native.js +2 -0
  29. package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
  30. package/dist/cjs/layouts/withLayoutContext.cjs +39 -8
  31. package/dist/cjs/layouts/withLayoutContext.native.js +43 -8
  32. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  33. package/dist/cjs/layouts/withLayoutContext.test.cjs +96 -0
  34. package/dist/cjs/layouts/withLayoutContext.test.native.js +100 -0
  35. package/dist/cjs/layouts/withLayoutContext.test.native.js.map +1 -0
  36. package/dist/cjs/router/Route.cjs +3 -0
  37. package/dist/cjs/router/Route.native.js +3 -0
  38. package/dist/cjs/router/Route.native.js.map +1 -1
  39. package/dist/cjs/router/protectedRoutes.test.cjs +22 -0
  40. package/dist/cjs/router/protectedRoutes.test.native.js +25 -0
  41. package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -0
  42. package/dist/cjs/router/router.cjs +26 -8
  43. package/dist/cjs/router/router.native.js +26 -8
  44. package/dist/cjs/router/router.native.js.map +1 -1
  45. package/dist/cjs/router/useScreens.cjs +38 -11
  46. package/dist/cjs/router/useScreens.native.js +39 -11
  47. package/dist/cjs/router/useScreens.native.js.map +1 -1
  48. package/dist/cjs/router/useScreens.test.cjs +134 -0
  49. package/dist/cjs/router/useScreens.test.native.js +163 -0
  50. package/dist/cjs/router/useScreens.test.native.js.map +1 -0
  51. package/dist/cjs/views/Navigator.cjs +14 -6
  52. package/dist/cjs/views/Navigator.native.js +14 -6
  53. package/dist/cjs/views/Navigator.native.js.map +1 -1
  54. package/dist/cjs/views/Protected.native.js.map +1 -1
  55. package/dist/cjs/views/SuspenseFallback.cjs +18 -0
  56. package/dist/cjs/views/SuspenseFallback.native.js +21 -0
  57. package/dist/cjs/views/SuspenseFallback.native.js.map +1 -0
  58. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +47 -7
  59. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
  60. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  61. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +15 -6
  62. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
  63. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  64. package/dist/esm/cli/dev.mjs.map +1 -1
  65. package/dist/esm/cli/dev.native.js.map +1 -1
  66. package/dist/esm/cli.mjs +0 -3
  67. package/dist/esm/cli.mjs.map +1 -1
  68. package/dist/esm/cli.native.js +0 -3
  69. package/dist/esm/cli.native.js.map +1 -1
  70. package/dist/esm/image/getImageData.mjs +1 -1
  71. package/dist/esm/image/getImageData.mjs.map +1 -1
  72. package/dist/esm/image/getImageData.native.js +1 -1
  73. package/dist/esm/image/getImageData.native.js.map +1 -1
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/index.mjs.map +1 -1
  76. package/dist/esm/index.native.js.map +1 -1
  77. package/dist/esm/layouts/Stack.mjs +6 -6
  78. package/dist/esm/layouts/Stack.mjs.map +1 -1
  79. package/dist/esm/layouts/Stack.native.js +6 -6
  80. package/dist/esm/layouts/Stack.native.js.map +1 -1
  81. package/dist/esm/layouts/stack-utils/StackScreen.mjs +3 -0
  82. package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
  83. package/dist/esm/layouts/stack-utils/StackScreen.native.js +3 -0
  84. package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
  85. package/dist/esm/layouts/stack-utils/StackToolbar.mjs +384 -0
  86. package/dist/esm/layouts/stack-utils/StackToolbar.mjs.map +1 -0
  87. package/dist/esm/layouts/stack-utils/StackToolbar.native.js +416 -0
  88. package/dist/esm/layouts/stack-utils/StackToolbar.native.js.map +1 -0
  89. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs +2 -0
  90. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs.map +1 -0
  91. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js +2 -0
  92. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js.map +1 -0
  93. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.runtime.test.mjs +40 -0
  94. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.runtime.test.mjs.map +1 -0
  95. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.runtime.test.native.js +47 -0
  96. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.runtime.test.native.js.map +1 -0
  97. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +205 -0
  98. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -1
  99. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +220 -0
  100. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  101. package/dist/esm/layouts/stack-utils/index.mjs +2 -1
  102. package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
  103. package/dist/esm/layouts/stack-utils/index.native.js +2 -1
  104. package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
  105. package/dist/esm/layouts/withLayoutContext.mjs +41 -11
  106. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  107. package/dist/esm/layouts/withLayoutContext.native.js +45 -11
  108. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  109. package/dist/esm/layouts/withLayoutContext.test.mjs +73 -0
  110. package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -0
  111. package/dist/esm/layouts/withLayoutContext.test.native.js +74 -0
  112. package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -0
  113. package/dist/esm/router/Route.mjs +3 -1
  114. package/dist/esm/router/Route.mjs.map +1 -1
  115. package/dist/esm/router/Route.native.js +3 -1
  116. package/dist/esm/router/Route.native.js.map +1 -1
  117. package/dist/esm/router/protectedRoutes.test.mjs +23 -0
  118. package/dist/esm/router/protectedRoutes.test.mjs.map +1 -0
  119. package/dist/esm/router/protectedRoutes.test.native.js +23 -0
  120. package/dist/esm/router/protectedRoutes.test.native.js.map +1 -0
  121. package/dist/esm/router/router.mjs +26 -9
  122. package/dist/esm/router/router.mjs.map +1 -1
  123. package/dist/esm/router/router.native.js +26 -9
  124. package/dist/esm/router/router.native.js.map +1 -1
  125. package/dist/esm/router/useScreens.mjs +39 -11
  126. package/dist/esm/router/useScreens.mjs.map +1 -1
  127. package/dist/esm/router/useScreens.native.js +40 -11
  128. package/dist/esm/router/useScreens.native.js.map +1 -1
  129. package/dist/esm/router/useScreens.test.mjs +105 -0
  130. package/dist/esm/router/useScreens.test.mjs.map +1 -0
  131. package/dist/esm/router/useScreens.test.native.js +130 -0
  132. package/dist/esm/router/useScreens.test.native.js.map +1 -0
  133. package/dist/esm/views/Navigator.mjs +15 -7
  134. package/dist/esm/views/Navigator.mjs.map +1 -1
  135. package/dist/esm/views/Navigator.native.js +15 -7
  136. package/dist/esm/views/Navigator.native.js.map +1 -1
  137. package/dist/esm/views/Protected.mjs.map +1 -1
  138. package/dist/esm/views/Protected.native.js.map +1 -1
  139. package/dist/esm/views/SuspenseFallback.mjs +2 -0
  140. package/dist/esm/views/SuspenseFallback.mjs.map +1 -0
  141. package/dist/esm/views/SuspenseFallback.native.js +2 -0
  142. package/dist/esm/views/SuspenseFallback.native.js.map +1 -0
  143. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +47 -7
  144. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  145. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +47 -7
  146. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  147. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +15 -6
  148. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
  149. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +15 -6
  150. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  151. package/package.json +12 -11
  152. package/src/cli/dev.ts +0 -1
  153. package/src/cli.ts +0 -3
  154. package/src/image/getImageData.ts +2 -2
  155. package/src/index.ts +12 -0
  156. package/src/layouts/Stack.tsx +6 -4
  157. package/src/layouts/stack-utils/README.md +1 -0
  158. package/src/layouts/stack-utils/StackScreen.tsx +7 -0
  159. package/src/layouts/stack-utils/StackToolbar.tsx +550 -0
  160. package/src/layouts/stack-utils/StackToolbar.types.ts +98 -0
  161. package/src/layouts/stack-utils/__tests__/StackToolbar.runtime.test.tsx +46 -0
  162. package/src/layouts/stack-utils/__tests__/composition.test.tsx +176 -0
  163. package/src/layouts/stack-utils/index.tsx +16 -0
  164. package/src/layouts/withLayoutContext.test.tsx +74 -0
  165. package/src/layouts/withLayoutContext.tsx +71 -12
  166. package/src/router/Route.tsx +8 -0
  167. package/src/router/protectedRoutes.test.ts +35 -0
  168. package/src/router/router.ts +48 -20
  169. package/src/router/useScreens.test.tsx +139 -0
  170. package/src/router/useScreens.tsx +59 -13
  171. package/src/views/Navigator.tsx +25 -5
  172. package/src/views/Protected.tsx +3 -0
  173. package/src/views/SuspenseFallback.ts +7 -0
  174. package/src/vite/plugins/fileSystemRouterPlugin.test.ts +15 -6
  175. package/src/vite/plugins/fileSystemRouterPlugin.tsx +52 -7
  176. package/types/cli/dev.d.ts +0 -1
  177. package/types/cli/dev.d.ts.map +1 -1
  178. package/types/image/getImageData.d.ts +1 -1
  179. package/types/image/getImageData.d.ts.map +1 -1
  180. package/types/index.d.ts +2 -1
  181. package/types/index.d.ts.map +1 -1
  182. package/types/layouts/Stack.d.ts +11 -0
  183. package/types/layouts/Stack.d.ts.map +1 -1
  184. package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
  185. package/types/layouts/stack-utils/StackToolbar.d.ts +26 -0
  186. package/types/layouts/stack-utils/StackToolbar.d.ts.map +1 -0
  187. package/types/layouts/stack-utils/StackToolbar.types.d.ts +82 -0
  188. package/types/layouts/stack-utils/StackToolbar.types.d.ts.map +1 -0
  189. package/types/layouts/stack-utils/index.d.ts +3 -1
  190. package/types/layouts/stack-utils/index.d.ts.map +1 -1
  191. package/types/layouts/withLayoutContext.d.ts +7 -0
  192. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  193. package/types/layouts/withLayoutContext.test.d.ts +2 -0
  194. package/types/layouts/withLayoutContext.test.d.ts.map +1 -0
  195. package/types/router/Route.d.ts +4 -0
  196. package/types/router/Route.d.ts.map +1 -1
  197. package/types/router/protectedRoutes.test.d.ts +2 -0
  198. package/types/router/protectedRoutes.test.d.ts.map +1 -0
  199. package/types/router/router.d.ts +4 -6
  200. package/types/router/router.d.ts.map +1 -1
  201. package/types/router/useScreens.d.ts.map +1 -1
  202. package/types/router/useScreens.test.d.ts +2 -0
  203. package/types/router/useScreens.test.d.ts.map +1 -0
  204. package/types/views/Navigator.d.ts.map +1 -1
  205. package/types/views/Protected.d.ts +3 -0
  206. package/types/views/Protected.d.ts.map +1 -1
  207. package/types/views/SuspenseFallback.d.ts +8 -0
  208. package/types/views/SuspenseFallback.d.ts.map +1 -0
  209. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","stack_utils_exports","__export","StackHeader","StackHeaderBackButton","import_StackHeaderBackButton","StackHeaderComponent","import_StackHeaderComponent","StackHeaderLeft","import_StackHeaderLeft","StackHeaderRight","import_StackHeaderRight","StackHeaderSearchBar","import_StackHeaderSearchBar","StackHeaderTitle","import_StackHeaderTitle","StackScreen","import_StackScreen","appendScreenStackPropsToOptions","validateStackPresentation","module","exports","require","Object","assign","Left","Right","BackButton","Title","SearchBar"],"sources":["../../../../src/layouts/stack-utils/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,mBAAA;AAAAC,QAAA,CAAAD,mBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAC,4BAAA,CAAAD,qBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD,oBAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAC,sBAAA,CAAAD,eAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD,oBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,WAAA;EAAAE,+BAAA,EAAAA,CAAA,KAAAD,kBAAA,CAAAC,+BAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAF,kBAAA,CAAAE;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAzB,YAAA,CAAAK,mBAGO;AACP,IAAAI,4BAAA,GAA4DiB,OAAA;AAC5D,IAAAf,2BAA2D,GAAAe,OAAA;AAC3D,IAAAb,sBAAA,GAAAa,OAA6D;AAC7D,IAAAX,uBAAA,GAAAW,OAGO;AACP,IAAAT,2BAA6D,GAAAS,OAAA;AA6B7D,IAAAP,uBAMO,GAAAO,OAAA;AA7BA,IAAAL,kBAAoB,GAAAK,OAAO,0BAAO;AAAsB,IAC7DnB,WAAM,GAAAoB,MAAA,CAAAC,MAAA,CAAAjB,2BAAA,CAAAD,oBAAA;EACNmB,IAAA,EAAAhB,sBAAO,CAAAD,eAAA;EACPkB,KAAA,EAAAf,uBAAY,CAAAD,gBAAA;EACZiB,UAAO,EAAAtB,4BAAA,CAAAD,qBAAA;EACPwB,KAAA,EAAAb,uBAAW,CAAAD,gBAAA;EACZe,SAAA,EAAAhB,2BAAA,CAAAD","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","stack_utils_exports","__export","StackHeader","StackHeaderBackButton","import_StackHeaderBackButton","StackHeaderComponent","import_StackHeaderComponent","StackHeaderLeft","import_StackHeaderLeft","StackHeaderRight","import_StackHeaderRight","StackHeaderSearchBar","import_StackHeaderSearchBar","StackHeaderTitle","import_StackHeaderTitle","StackScreen","import_StackScreen","StackToolbar","import_StackToolbar","appendScreenStackPropsToOptions","validateStackPresentation","module","exports","require","Object","assign","Left","Right","BackButton","Title","SearchBar"],"sources":["../../../../src/layouts/stack-utils/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,mBAAA;AAAAC,QAAA,CAAAD,mBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAC,4BAAA,CAAAD,qBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD,oBAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAC,sBAAA,CAAAD,eAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD,oBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,WAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAC,mBAAA,CAAAD,YAAA;EAAAE,+BAAA,EAAAA,CAAA,KAAAH,kBAAA,CAAAG,+BAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAJ,kBAAA,CAAAI;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAA3B,YAAA,CAAAK,mBAGO;AACP,IAAAI,4BAAA,GAA4DmB,OAAA;AAC5D,IAAAjB,2BAA2D,GAAAiB,OAAA;AAC3D,IAAAf,sBAAA,GAAAe,OAA6D;AAC7D,IAAAb,uBAAA,GAAAa,OAGO;AACP,IAAAX,2BAA6D,GAAAW,OAAA;AAC7D,IAAAT,uBAA6B,GAAAS,OAAA;AA4C7B,IAAAL,mBAAA,GAMOK,OAAA;AA5CA,IAAAP,kBAAoB,GAAAO,OAAO,0BAAO;AAAsB,IAC7DrB,WAAM,GAAAsB,MAAA,CAAAC,MAAA,CAAAnB,2BAAA,CAAAD,oBAAA;EACNqB,IAAA,EAAAlB,sBAAO,CAAAD,eAAA;EACPoB,KAAA,EAAAjB,uBAAY,CAAAD,gBAAA;EACZmB,UAAO,EAAAxB,4BAAA,CAAAD,qBAAA;EACP0B,KAAA,EAAAf,uBAAW,CAAAD,gBAAA;EACZiB,SAAA,EAAAlB,2BAAA,CAAAD","ignoreList":[]}
@@ -34,13 +34,16 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
34
  var withLayoutContext_exports = {};
35
35
  __export(withLayoutContext_exports, {
36
36
  useFilterScreenChildren: () => useFilterScreenChildren,
37
+ useResolvedGuardedRedirects: () => useResolvedGuardedRedirects,
37
38
  withLayoutContext: () => withLayoutContext
38
39
  });
39
40
  module.exports = __toCommonJS(withLayoutContext_exports);
40
41
  var import_react = __toESM(require("react"), 1);
42
+ var import_matchers = require("../router/matchers.cjs");
41
43
  var import_Route = require("../router/Route.cjs");
42
44
  var import_router = require("../router/router.cjs");
43
45
  var import_useScreens = require("../router/useScreens.cjs");
46
+ var import_sortRoutes = require("../router/sortRoutes.cjs");
44
47
  var import_withStaticProperties = require("../utils/withStaticProperties.cjs");
45
48
  var import_Protected = require("../views/Protected.cjs");
46
49
  var import_Screen = require("../views/Screen.cjs");
@@ -54,7 +57,8 @@ function useFilterScreenChildren(children, {
54
57
  const customChildren = [];
55
58
  const screens = [];
56
59
  const protectedScreens = /* @__PURE__ */new Set();
57
- function flattenChild(child, exclude = false) {
60
+ const guardedRedirects = /* @__PURE__ */new Map();
61
+ function flattenChild(child, exclude = false, redirectTo) {
58
62
  if (import_react.default.isValidElement(child) && (child.type === import_Screen.Screen || child.type === import_StackScreen.StackScreen)) {
59
63
  if (typeof child.props === "object" && child.props && "name" in child.props && !child.props.name) {
60
64
  throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
@@ -67,15 +71,18 @@ function useFilterScreenChildren(children, {
67
71
  const screenProps = child.props;
68
72
  if (exclude && screenProps.name) {
69
73
  protectedScreens.add(screenProps.name);
74
+ guardedRedirects.set(screenProps.name, redirectTo);
70
75
  } else {
71
76
  screens.push(screenProps);
72
77
  }
73
78
  return;
74
79
  }
75
80
  if ((0, import_Protected.isProtectedElement)(child)) {
76
- const excludeChildren = exclude || !child.props.guard;
81
+ const guardFails = !child.props.guard;
82
+ const excludeChildren = exclude || guardFails;
83
+ const childRedirectTo = guardFails ? child.props.redirectTo : redirectTo;
77
84
  import_react.default.Children.forEach(child.props.children, nested => {
78
- flattenChild(nested, excludeChildren);
85
+ flattenChild(nested, excludeChildren, childRedirectTo);
79
86
  });
80
87
  return;
81
88
  }
@@ -95,10 +102,25 @@ function useFilterScreenChildren(children, {
95
102
  return {
96
103
  screens,
97
104
  children: customChildren,
98
- protectedScreens
105
+ protectedScreens,
106
+ guardedRedirects
99
107
  };
100
108
  }, [children, contextKey, isCustomNavigator]);
101
109
  }
110
+ function useResolvedGuardedRedirects(guardedRedirects) {
111
+ const node = (0, import_Route.useRouteNode)();
112
+ return import_react.default.useMemo(() => {
113
+ if (!node) {
114
+ return guardedRedirects;
115
+ }
116
+ const defaultRoute = [...node.children].sort((0, import_sortRoutes.sortRoutesWithInitial)(node.initialRouteName)).find(child => {
117
+ const normalized = child.route.replace(/\/index$/, "");
118
+ return !(guardedRedirects.has(child.route) || guardedRedirects.has(normalized));
119
+ });
120
+ const defaultHref = defaultRoute ? (0, import_matchers.stripInvisibleSegmentsFromPath)((0, import_matchers.getContextKey)(defaultRoute.contextKey)) || "/" : void 0;
121
+ return new Map(Array.from(guardedRedirects, ([name, redirectTo]) => [name, redirectTo ?? defaultHref]));
122
+ }, [guardedRedirects, node]);
123
+ }
102
124
  function withLayoutContext(Nav, processor, options) {
103
125
  return (0, import_withStaticProperties.withStaticProperties)(import_react.default.forwardRef((propsIn, ref) => {
104
126
  const {
@@ -108,17 +130,26 @@ function withLayoutContext(Nav, processor, options) {
108
130
  const contextKey = (0, import_Route.useContextKey)();
109
131
  const {
110
132
  screens,
111
- protectedScreens
133
+ protectedScreens,
134
+ guardedRedirects
112
135
  } = useFilterScreenChildren(children, {
113
136
  contextKey
114
137
  });
115
- (0, import_router.registerProtectedRoutes)(contextKey, protectedScreens);
138
+ const resolvedGuardedRedirects = useResolvedGuardedRedirects(guardedRedirects);
139
+ (0, import_router.registerProtectedRoutes)(contextKey, resolvedGuardedRedirects);
140
+ const currentPathname = import_router.routeInfo?.pathname;
141
+ const protectedHref = currentPathname ? (0, import_router.resolveProtectedHref)(currentPathname) : currentPathname;
116
142
  import_react.default.useEffect(() => {
117
- (0, import_router.registerProtectedRoutes)(contextKey, protectedScreens);
143
+ (0, import_router.registerProtectedRoutes)(contextKey, resolvedGuardedRedirects);
118
144
  return () => {
119
145
  (0, import_router.unregisterProtectedRoutes)(contextKey);
120
146
  };
121
- }, [contextKey, protectedScreens]);
147
+ }, [contextKey, resolvedGuardedRedirects]);
148
+ import_react.default.useEffect(() => {
149
+ if (currentPathname && protectedHref && protectedHref !== currentPathname) {
150
+ (0, import_router.replace)(protectedHref);
151
+ }
152
+ }, [currentPathname, protectedHref]);
122
153
  const processed = processor ? processor(screens ?? []) : screens;
123
154
  const sorted = (0, import_useScreens.useSortedScreens)(processed ?? [], {
124
155
  onlyMatching: true,
@@ -36,14 +36,17 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
36
36
  var withLayoutContext_exports = {};
37
37
  __export(withLayoutContext_exports, {
38
38
  useFilterScreenChildren: () => useFilterScreenChildren,
39
+ useResolvedGuardedRedirects: () => useResolvedGuardedRedirects,
39
40
  withLayoutContext: () => withLayoutContext
40
41
  });
41
42
  module.exports = __toCommonJS(withLayoutContext_exports);
42
43
  var import_jsx_runtime = require("react/jsx-runtime");
43
44
  var import_react = __toESM(require("react"), 1);
45
+ var import_matchers = require("../router/matchers.native.js");
44
46
  var import_Route = require("../router/Route.native.js");
45
47
  var import_router = require("../router/router.native.js");
46
48
  var import_useScreens = require("../router/useScreens.native.js");
49
+ var import_sortRoutes = require("../router/sortRoutes.native.js");
47
50
  var import_withStaticProperties = require("../utils/withStaticProperties.native.js");
48
51
  var import_Protected = require("../views/Protected.native.js");
49
52
  var import_Screen = require("../views/Screen.native.js");
@@ -63,8 +66,10 @@ function useFilterScreenChildren(children) {
63
66
  var customChildren = [];
64
67
  var screens = [];
65
68
  var protectedScreens = /* @__PURE__ */new Set();
69
+ var guardedRedirects = /* @__PURE__ */new Map();
66
70
  function flattenChild(child) {
67
- var exclude = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
71
+ var exclude = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false,
72
+ redirectTo = arguments.length > 2 ? arguments[2] : void 0;
68
73
  if (/* @__PURE__ */import_react.default.isValidElement(child) && (child.type === import_Screen.Screen || child.type === import_StackScreen.StackScreen)) {
69
74
  if (_type_of(child.props) === "object" && child.props && "name" in child.props && !child.props.name) {
70
75
  throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
@@ -79,15 +84,18 @@ function useFilterScreenChildren(children) {
79
84
  var screenProps = child.props;
80
85
  if (exclude && screenProps.name) {
81
86
  protectedScreens.add(screenProps.name);
87
+ guardedRedirects.set(screenProps.name, redirectTo);
82
88
  } else {
83
89
  screens.push(screenProps);
84
90
  }
85
91
  return;
86
92
  }
87
93
  if ((0, import_Protected.isProtectedElement)(child)) {
88
- var excludeChildren = exclude || !child.props.guard;
94
+ var guardFails = !child.props.guard;
95
+ var excludeChildren = exclude || guardFails;
96
+ var childRedirectTo = guardFails ? child.props.redirectTo : redirectTo;
89
97
  import_react.default.Children.forEach(child.props.children, function (nested) {
90
- flattenChild(nested, excludeChildren);
98
+ flattenChild(nested, excludeChildren, childRedirectTo);
91
99
  });
92
100
  return;
93
101
  }
@@ -111,10 +119,28 @@ function useFilterScreenChildren(children) {
111
119
  return {
112
120
  screens,
113
121
  children: customChildren,
114
- protectedScreens
122
+ protectedScreens,
123
+ guardedRedirects
115
124
  };
116
125
  }, [children, contextKey, isCustomNavigator]);
117
126
  }
127
+ function useResolvedGuardedRedirects(guardedRedirects) {
128
+ var node = (0, import_Route.useRouteNode)();
129
+ return import_react.default.useMemo(function () {
130
+ if (!node) {
131
+ return guardedRedirects;
132
+ }
133
+ var defaultRoute = [...node.children].sort((0, import_sortRoutes.sortRoutesWithInitial)(node.initialRouteName)).find(function (child) {
134
+ var normalized = child.route.replace(/\/index$/, "");
135
+ return !(guardedRedirects.has(child.route) || guardedRedirects.has(normalized));
136
+ });
137
+ var defaultHref = defaultRoute ? (0, import_matchers.stripInvisibleSegmentsFromPath)((0, import_matchers.getContextKey)(defaultRoute.contextKey)) || "/" : void 0;
138
+ return new Map(Array.from(guardedRedirects, function (param) {
139
+ var [name, redirectTo] = param;
140
+ return [name, redirectTo !== null && redirectTo !== void 0 ? redirectTo : defaultHref];
141
+ }));
142
+ }, [guardedRedirects, node]);
143
+ }
118
144
  function withLayoutContext(Nav, processor, options) {
119
145
  return (0, import_withStaticProperties.withStaticProperties)(/* @__PURE__ */import_react.default.forwardRef(function (propsIn, ref) {
120
146
  var {
@@ -124,17 +150,26 @@ function withLayoutContext(Nav, processor, options) {
124
150
  var contextKey = (0, import_Route.useContextKey)();
125
151
  var {
126
152
  screens,
127
- protectedScreens
153
+ protectedScreens,
154
+ guardedRedirects
128
155
  } = useFilterScreenChildren(children, {
129
156
  contextKey
130
157
  });
131
- (0, import_router.registerProtectedRoutes)(contextKey, protectedScreens);
158
+ var resolvedGuardedRedirects = useResolvedGuardedRedirects(guardedRedirects);
159
+ (0, import_router.registerProtectedRoutes)(contextKey, resolvedGuardedRedirects);
160
+ var currentPathname = import_router.routeInfo === null || import_router.routeInfo === void 0 ? void 0 : import_router.routeInfo.pathname;
161
+ var protectedHref = currentPathname ? (0, import_router.resolveProtectedHref)(currentPathname) : currentPathname;
132
162
  import_react.default.useEffect(function () {
133
- (0, import_router.registerProtectedRoutes)(contextKey, protectedScreens);
163
+ (0, import_router.registerProtectedRoutes)(contextKey, resolvedGuardedRedirects);
134
164
  return function () {
135
165
  (0, import_router.unregisterProtectedRoutes)(contextKey);
136
166
  };
137
- }, [contextKey, protectedScreens]);
167
+ }, [contextKey, resolvedGuardedRedirects]);
168
+ import_react.default.useEffect(function () {
169
+ if (currentPathname && protectedHref && protectedHref !== currentPathname) {
170
+ (0, import_router.replace)(protectedHref);
171
+ }
172
+ }, [currentPathname, protectedHref]);
138
173
  var processed = processor ? processor(screens !== null && screens !== void 0 ? screens : []) : screens;
139
174
  var sorted = (0, import_useScreens.useSortedScreens)(processed !== null && processed !== void 0 ? processed : [], {
140
175
  onlyMatching: true,
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","withLayoutContext_exports","__export","useFilterScreenChildren","withLayoutContext","module","exports","import_jsx_runtime","require","import_react","__toESM","import_Route","import_router","import_useScreens","import_withStaticProperties","import_Protected","import_Screen","import_StackScreen","_type_of","obj","Symbol","constructor","children","isCustomNavigator","contextKey","arguments","length","default","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","Screen","StackScreen","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","isProtectedElement","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","Nav","processor","options","withStaticProperties","forwardRef","propsIn","ref","useContextKey","registerProtectedRoutes","useEffect","unregisterProtectedRoutes","processed","sorted","useSortedScreens"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","withLayoutContext_exports","__export","useFilterScreenChildren","useResolvedGuardedRedirects","withLayoutContext","module","exports","import_jsx_runtime","require","import_react","__toESM","import_matchers","import_Route","import_router","import_useScreens","import_sortRoutes","import_withStaticProperties","import_Protected","import_Screen","import_StackScreen","_type_of","obj","Symbol","constructor","children","isCustomNavigator","contextKey","arguments","length","default","useMemo","customChildren","screens","protectedScreens","Set","guardedRedirects","Map","flattenChild","child","exclude","redirectTo","isValidElement","type","Screen","StackScreen","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","set","push","isProtectedElement","guardFails","guard","excludeChildren","childRedirectTo","Children","forEach","nested","console","warn","names","map","screen","size","node","useRouteNode","defaultRoute","sort","sortRoutesWithInitial","initialRouteName","find","normalized","route","replace","has","defaultHref","stripInvisibleSegmentsFromPath","getContextKey","Array","from","param","Nav","processor","options","withStaticProperties","forwardRef","propsIn","ref","useContextKey","resolvedGuardedRedirects","registerProtectedRoutes","currentPathname","routeInfo","pathname","protectedHref","resolveProtectedHref","useEffect","unregisterProtectedRoutes"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
10
+ get: () => from[key],
11
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
12
+ });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
22
+ value: mod,
23
+ enumerable: true
24
+ }) : target, mod));
25
+ var import_react_test_renderer = __toESM(require("react-test-renderer"), 1);
26
+ var import_vitest = require("vitest");
27
+ var import_Protected = require("../views/Protected.cjs");
28
+ var import_Screen = require("../views/Screen.cjs");
29
+ var import_withLayoutContext = require("./withLayoutContext.cjs");
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ function readGuardedRedirects(children) {
32
+ let result;
33
+ function Capture() {
34
+ result = (0, import_withLayoutContext.useFilterScreenChildren)(children);
35
+ return null;
36
+ }
37
+ (0, import_react_test_renderer.act)(() => {
38
+ import_react_test_renderer.default.create(/* @__PURE__ */(0, import_jsx_runtime.jsx)(Capture, {}));
39
+ });
40
+ return result.guardedRedirects;
41
+ }
42
+ (0, import_vitest.describe)("Protected redirectTo", () => {
43
+ (0, import_vitest.it)("associates a failed guard redirect with each protected screen", () => {
44
+ const redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_Protected.Protected, {
45
+ guard: false,
46
+ redirectTo: "/login",
47
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
48
+ name: "dashboard"
49
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
50
+ name: "settings"
51
+ })]
52
+ }));
53
+ (0, import_vitest.expect)(Array.from(redirects)).toEqual([["dashboard", "/login"], ["settings", "/login"]]);
54
+ });
55
+ (0, import_vitest.it)("uses the innermost failing guard redirect", () => {
56
+ const redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
57
+ guard: false,
58
+ redirectTo: "/login",
59
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
60
+ guard: false,
61
+ redirectTo: "/subscribe",
62
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
63
+ name: "premium"
64
+ })
65
+ })
66
+ }));
67
+ (0, import_vitest.expect)(redirects.get("premium")).toBe("/subscribe");
68
+ });
69
+ (0, import_vitest.it)("inherits a failed parent redirect through a passing child guard", () => {
70
+ const redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
71
+ guard: false,
72
+ redirectTo: "/login",
73
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
74
+ guard: true,
75
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
76
+ name: "account"
77
+ })
78
+ })
79
+ }));
80
+ (0, import_vitest.expect)(redirects.get("account")).toBe("/login");
81
+ });
82
+ (0, import_vitest.it)("ignores redirectTo on a passing parent guard", () => {
83
+ const redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
84
+ guard: true,
85
+ redirectTo: "/login",
86
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
87
+ guard: false,
88
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
89
+ name: "account"
90
+ })
91
+ })
92
+ }));
93
+ (0, import_vitest.expect)(redirects.has("account")).toBe(true);
94
+ (0, import_vitest.expect)(redirects.get("account")).toBeUndefined();
95
+ });
96
+ });
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: () => from[key],
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
24
+ value: mod,
25
+ enumerable: true
26
+ }) : target, mod));
27
+ var import_jsx_runtime = require("react/jsx-runtime");
28
+ var import_react = __toESM(require("react"), 1);
29
+ var import_react_test_renderer = __toESM(require("react-test-renderer"), 1);
30
+ var import_vitest = require("vitest");
31
+ var import_Protected = require("../views/Protected.native.js");
32
+ var import_Screen = require("../views/Screen.native.js");
33
+ var import_withLayoutContext = require("./withLayoutContext.native.js");
34
+ function readGuardedRedirects(children) {
35
+ var result;
36
+ function Capture() {
37
+ result = (0, import_withLayoutContext.useFilterScreenChildren)(children);
38
+ return null;
39
+ }
40
+ (0, import_react_test_renderer.act)(function () {
41
+ import_react_test_renderer.default.create(/* @__PURE__ */(0, import_jsx_runtime.jsx)(Capture, {}));
42
+ });
43
+ return result.guardedRedirects;
44
+ }
45
+ (0, import_vitest.describe)("Protected redirectTo", function () {
46
+ (0, import_vitest.it)("associates a failed guard redirect with each protected screen", function () {
47
+ var redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_Protected.Protected, {
48
+ guard: false,
49
+ redirectTo: "/login",
50
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
51
+ name: "dashboard"
52
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
53
+ name: "settings"
54
+ })]
55
+ }));
56
+ (0, import_vitest.expect)(Array.from(redirects)).toEqual([["dashboard", "/login"], ["settings", "/login"]]);
57
+ });
58
+ (0, import_vitest.it)("uses the innermost failing guard redirect", function () {
59
+ var redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
60
+ guard: false,
61
+ redirectTo: "/login",
62
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
63
+ guard: false,
64
+ redirectTo: "/subscribe",
65
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
66
+ name: "premium"
67
+ })
68
+ })
69
+ }));
70
+ (0, import_vitest.expect)(redirects.get("premium")).toBe("/subscribe");
71
+ });
72
+ (0, import_vitest.it)("inherits a failed parent redirect through a passing child guard", function () {
73
+ var redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
74
+ guard: false,
75
+ redirectTo: "/login",
76
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
77
+ guard: true,
78
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
79
+ name: "account"
80
+ })
81
+ })
82
+ }));
83
+ (0, import_vitest.expect)(redirects.get("account")).toBe("/login");
84
+ });
85
+ (0, import_vitest.it)("ignores redirectTo on a passing parent guard", function () {
86
+ var redirects = readGuardedRedirects(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
87
+ guard: true,
88
+ redirectTo: "/login",
89
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Protected.Protected, {
90
+ guard: false,
91
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Screen.Screen, {
92
+ name: "account"
93
+ })
94
+ })
95
+ }));
96
+ (0, import_vitest.expect)(redirects.has("account")).toBe(true);
97
+ (0, import_vitest.expect)(redirects.get("account")).toBeUndefined();
98
+ });
99
+ });
100
+ //# sourceMappingURL=withLayoutContext.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_jsx_runtime","require","import_react","__toESM","import_react_test_renderer","import_vitest","import_Protected","import_Screen","import_withLayoutContext","readGuardedRedirects","children","result","Capture","useFilterScreenChildren","act","default","create","jsx","guardedRedirects","describe","it","redirects","jsxs","Protected","guard","redirectTo","Screen","name","expect","Array","from","toEqual"],"sources":["../../../src/layouts/withLayoutContext.test.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;gBACA;AACA,IAAAA,kBAAqC,GAAAC,OAAA;AACrC,IAAAC,YAAA,GAAAC,OAA0B,CAAAF,OAAA;AAC1B,IAAAG,0BAAuB,GAAAD,OAAA,CAAAF,OAAA;AACvB,IAAAI,aAAA,GAAAJ,OAAA,SAAwC;AAWhB,IAAAK,gBAAA,GAAAL,OAAA;AATxB,IAAAM,aAAS,GAAAN,OAAA,4BAAgD;AACvD,IAAAO,wBAAI,GAAAP,OAAA;AAEJ,SAAAQ,oBAAmBA,CAAAC,QAAA;EACjB,IAAAC,MAAA;EACA,SAAOC,QAAA;IACTD,MAAA,OAAAH,wBAAA,CAAAK,uBAAA,EAAAH,QAAA;IAEA;EACE;EACF,CAAC,GAAAN,0BAAA,CAAAU,GAAA;IAEDV,0BAAe,CAAAW,OAAA,CAAAC,MAAA,oBAAAhB,kBAAA,CAAAiB,GAAA,EAAAL,OAAA;EACjB;EAAA,OAEAD,MAAA,CAAAO,gBAAS;AACP;AACE,IAAAb,aAAM,CAAAc,QAAY;EAAA,IAChBd,aAAA,CAAAe,EAAA,iEAAW,EAAO,YAAO;IACvB,IAAAC,SAAA,GAAAZ,oBAAA,gBAAC,IAAAT,kBAAO,CAAAsB,IAAK,EAAAhB,gBAAY,CAAAiB,SAAA;MAAAC,KACzB;MAAwBC,UAC1B;MACFf,QAAA,GAEA,mBAAAV,kBAAkB,CAAAiB,GAAS,EAACV,aAAU,CAAAmB,MAAA;QACnCC,IAAA;MACA,IACF,mBAAA3B,kBAAA,CAAAiB,GAAA,EAAAV,aAAA,CAAAmB,MAAA;QACFC,IAAA;MAED;IACoB,EAChB;IAKF,IAAAtB,aAAA,CAAAuB,MAAA,EAAAC,KAAA,CAAAC,IAAA,CAAAT,SAAA,GAAAU,OAAA,EAEA,CACD,aAED,SACE,EACE,CAKF,YAEA,SACD,CAED;EACE;EAAkB,IAChB1B,aAAA,CAAAe,EAAA,6CAAC,cAAU;IAKb,IAAAC,SAAA,GAAAZ,oBAAA,oBAAAT,kBAAA,CAAAiB,GAAA,EAAAX,gBAAA,CAAAiB,SAAA;MAEAC,KAAA;MACAC,UAAA;MACDf,QAAA,qBAAAV,kBAAA,CAAAiB,GAAA,EAAAX,gBAAA,CAAAiB,SAAA;QACFC,KAAA","ignoreList":[]}
@@ -35,6 +35,7 @@ var Route_exports = {};
35
35
  __export(Route_exports, {
36
36
  Route: () => Route,
37
37
  RouteParamsContext: () => RouteParamsContext,
38
+ SuspenseFallbackContext: () => SuspenseFallbackContext,
38
39
  useContextKey: () => useContextKey,
39
40
  useRouteNode: () => useRouteNode
40
41
  });
@@ -50,8 +51,10 @@ var import_RouteInfoContext = require("./RouteInfoContext.cjs");
50
51
  var import_jsx_runtime = require("react/jsx-runtime");
51
52
  const RouteParamsContext = (0, import_react.createContext)({});
52
53
  const CurrentRouteContext = import_react.default.createContext(null);
54
+ const SuspenseFallbackContext = (0, import_react.createContext)(void 0);
53
55
  if (process.env.NODE_ENV !== "production") {
54
56
  CurrentRouteContext.displayName = "RouteNode";
57
+ SuspenseFallbackContext.displayName = "SuspenseFallback";
55
58
  }
56
59
  function useRouteNode() {
57
60
  return (0, import_react.useContext)(CurrentRouteContext);
@@ -37,6 +37,7 @@ var Route_exports = {};
37
37
  __export(Route_exports, {
38
38
  Route: () => Route,
39
39
  RouteParamsContext: () => RouteParamsContext,
40
+ SuspenseFallbackContext: () => SuspenseFallbackContext,
40
41
  useContextKey: () => useContextKey,
41
42
  useRouteNode: () => useRouteNode
42
43
  });
@@ -52,8 +53,10 @@ var import_router = require("./router.native.js");
52
53
  var import_RouteInfoContext = require("./RouteInfoContext.native.js");
53
54
  var RouteParamsContext = /* @__PURE__ */(0, import_react.createContext)({});
54
55
  var CurrentRouteContext = /* @__PURE__ */import_react.default.createContext(null);
56
+ var SuspenseFallbackContext = /* @__PURE__ */(0, import_react.createContext)(void 0);
55
57
  if (process.env.NODE_ENV !== "production") {
56
58
  CurrentRouteContext.displayName = "RouteNode";
59
+ SuspenseFallbackContext.displayName = "SuspenseFallback";
57
60
  }
58
61
  function useRouteNode() {
59
62
  return (0, import_react.useContext)(CurrentRouteContext);
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Route_exports","__export","Route","RouteParamsContext","useContextKey","useRouteNode","module","exports","import_jsx_runtime","require","import_react","__toESM","import_findFocusedRoute","import_linkingConfig","import_matchers","import_params","import_path","import_router","import_RouteInfoContext","createContext","CurrentRouteContext","default","process","env","NODE_ENV","displayName","useContext","node","Error","getContextKey","contextKey","getParamsFromCurrentUrl","route","linking","getResolvedLinking","getStateFromPath","path","getPathWithRecoveredDynamicSegment","routeInfo","unstable_globalHref","state","config","focused","findFocusedRoute","params","param","children","parentParams","resolvedParams","useMemo","_node_dynamic","rp","ownParams","dynamic","length","mergeDynamicParams"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Route_exports","__export","Route","RouteParamsContext","SuspenseFallbackContext","useContextKey","useRouteNode","module","exports","import_jsx_runtime","require","import_react","__toESM","import_findFocusedRoute","import_linkingConfig","import_matchers","import_params","import_path","import_router","import_RouteInfoContext","createContext","CurrentRouteContext","default","process","env","NODE_ENV","displayName","useContext","node","Error","getContextKey","contextKey","getParamsFromCurrentUrl","route","linking","getResolvedLinking","getStateFromPath","path","getPathWithRecoveredDynamicSegment","routeInfo","unstable_globalHref","state","config","focused","findFocusedRoute","params","param","children","parentParams","resolvedParams","useMemo","_node_dynamic","rp","ownParams","dynamic","length","mergeDynamicParams"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ var import_vitest = require("vitest");
2
+ var import_router = require("./router.cjs");
3
+ const contextKey = "/account";
4
+ (0, import_vitest.afterEach)(() => {
5
+ (0, import_router.unregisterProtectedRoutes)(contextKey);
6
+ });
7
+ (0, import_vitest.describe)("protected route redirects", () => {
8
+ (0, import_vitest.it)("resolves a protected href to its redirect target", () => {
9
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", "/login"]]));
10
+ (0, import_vitest.expect)((0, import_router.isRouteProtected)("/account/settings?tab=billing")).toBe(true);
11
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/settings?tab=billing")).toBe("/login");
12
+ });
13
+ (0, import_vitest.it)("blocks a protected href without an explicit target", () => {
14
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", void 0]]));
15
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/settings")).toBeUndefined();
16
+ });
17
+ (0, import_vitest.it)("leaves allowed and similarly prefixed routes unchanged", () => {
18
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", "/login"]]));
19
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/profile")).toBe("/account/profile");
20
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/accounting/settings")).toBe("/accounting/settings");
21
+ });
22
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var import_vitest = require("vitest");
4
+ var import_router = require("./router.native.js");
5
+ var contextKey = "/account";
6
+ (0, import_vitest.afterEach)(function () {
7
+ (0, import_router.unregisterProtectedRoutes)(contextKey);
8
+ });
9
+ (0, import_vitest.describe)("protected route redirects", function () {
10
+ (0, import_vitest.it)("resolves a protected href to its redirect target", function () {
11
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", "/login"]]));
12
+ (0, import_vitest.expect)((0, import_router.isRouteProtected)("/account/settings?tab=billing")).toBe(true);
13
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/settings?tab=billing")).toBe("/login");
14
+ });
15
+ (0, import_vitest.it)("blocks a protected href without an explicit target", function () {
16
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", void 0]]));
17
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/settings")).toBeUndefined();
18
+ });
19
+ (0, import_vitest.it)("leaves allowed and similarly prefixed routes unchanged", function () {
20
+ (0, import_router.registerProtectedRoutes)(contextKey, /* @__PURE__ */new Map([["settings", "/login"]]));
21
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/account/profile")).toBe("/account/profile");
22
+ (0, import_vitest.expect)((0, import_router.resolveProtectedHref)("/accounting/settings")).toBe("/accounting/settings");
23
+ });
24
+ });
25
+ //# sourceMappingURL=protectedRoutes.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_vitest","require","import_router","contextKey","afterEach","unregisterProtectedRoutes","describe","it","registerProtectedRoutes","Map","expect","isRouteProtected","toBe","resolveProtectedHref"],"sources":["../../../src/router/protectedRoutes.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,aAAA,GAKOC,OAAA;AAEP,IAAAC,aAAM,GAAaD,OAAA;AAAA,IAEnBE,UAAA;AACE,IAAAH,aAAA,CAAAI,SAAA;EACD,IAAAF,aAAA,CAAAG,yBAAA,EAAAF,UAAA;AAAA;AAGC,IAAAH,aAAA,CAAAM,QAAG;EACD,IAAAN,aAAA,CAAAO,EAAA,oDAAoC,cAAU;IAE9C,IAAAL,aAAA,CAAAM,uBAAO,EAAAL,UAAA,iBAAiB,IAAAM,GAAA,EACxB,CACD,YAED,SACE,CAEA;IACD,IAAAT,aAAA,CAAAU,MAAA,MAAAR,aAAA,CAAAS,gBAAA,oCAAAC,IAAA;IAED,IAAAZ,aAAA,CAAAU,MAAG,MAAAR,aAAA,CAAAW,oBAAA,iCAAgE,GAAAD,IAAA;EACjE;EAEA,IAAAZ,aAAA,CAAAO,EAAA,sDAA4B,cAAmB;IAC/C,IAAAL,aAAA,CAAAM,uBAAO,EAAAL,UAAA,iBAAqB,IAAAM,GAAA,EAC7B,CACF,Y","ignoreList":[]}