eddev 2.0.0-beta.2 → 2.0.0-beta.200

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 (522) hide show
  1. package/css/editor-styles.css +4 -0
  2. package/dist/app/entry/HydrationOverlay.d.ts +2 -0
  3. package/dist/app/entry/HydrationOverlay.d.ts.map +1 -0
  4. package/dist/app/entry/HydrationOverlay.js +2 -0
  5. package/dist/app/entry/MetaTags.d.ts +8 -0
  6. package/dist/app/entry/MetaTags.d.ts.map +1 -0
  7. package/dist/app/entry/MetaTags.js +30 -0
  8. package/dist/app/entry/boot-admin.d.ts +2 -0
  9. package/dist/app/entry/boot-admin.d.ts.map +1 -0
  10. package/dist/app/entry/boot-admin.js +12 -0
  11. package/dist/app/entry/hydration-script.d.ts +2 -0
  12. package/dist/app/entry/hydration-script.d.ts.map +1 -0
  13. package/dist/app/entry/hydration-script.js +18 -0
  14. package/dist/app/entry/spa-root.d.ts +2 -0
  15. package/dist/app/entry/spa-root.d.ts.map +1 -0
  16. package/dist/app/entry/spa-root.js +7 -0
  17. package/dist/app/entry/ssr-root-client.d.ts +7 -0
  18. package/dist/app/entry/ssr-root-client.d.ts.map +1 -0
  19. package/dist/app/entry/ssr-root-client.js +21 -0
  20. package/dist/app/entry/ssr-root.d.ts +11 -0
  21. package/dist/app/entry/ssr-root.d.ts.map +1 -0
  22. package/dist/app/entry/ssr-root.js +22 -0
  23. package/dist/app/lib/admin/defineField.d.ts +1 -0
  24. package/dist/app/lib/admin/defineField.d.ts.map +1 -0
  25. package/dist/app/lib/admin/defineWidget.d.ts +1 -0
  26. package/dist/app/lib/admin/defineWidget.d.ts.map +1 -0
  27. package/dist/app/lib/admin/index.d.ts +3 -2
  28. package/dist/app/lib/admin/index.d.ts.map +1 -0
  29. package/dist/app/lib/admin/index.js +2 -2
  30. package/dist/app/lib/admin/installFieldTypes.d.ts +1 -0
  31. package/dist/app/lib/admin/installFieldTypes.d.ts.map +1 -0
  32. package/dist/app/lib/admin/installFieldTypes.js +3 -1
  33. package/dist/app/lib/admin/runWidgets.d.ts +1 -0
  34. package/dist/app/lib/admin/runWidgets.d.ts.map +1 -0
  35. package/dist/app/lib/admin/runWidgets.js +8 -3
  36. package/dist/app/lib/blocks/ContentBlocks.d.ts +7 -4
  37. package/dist/app/lib/blocks/ContentBlocks.d.ts.map +1 -0
  38. package/dist/app/lib/blocks/ContentBlocks.js +19 -6
  39. package/dist/app/lib/blocks/EditableText.d.ts +31 -6
  40. package/dist/app/lib/blocks/EditableText.d.ts.map +1 -0
  41. package/dist/app/lib/blocks/EditableText.js +36 -7
  42. package/dist/app/lib/blocks/InnerBlocks.d.ts +23 -8
  43. package/dist/app/lib/blocks/InnerBlocks.d.ts.map +1 -0
  44. package/dist/app/lib/blocks/InnerBlocks.js +76 -28
  45. package/dist/app/lib/blocks/SlotBlocks.d.ts +8 -0
  46. package/dist/app/lib/blocks/SlotBlocks.d.ts.map +1 -0
  47. package/dist/app/lib/blocks/SlotBlocks.js +46 -0
  48. package/dist/app/lib/blocks/block-utils.d.ts +3 -2
  49. package/dist/app/lib/blocks/block-utils.d.ts.map +1 -0
  50. package/dist/app/lib/blocks/block-utils.js +4 -2
  51. package/dist/app/lib/blocks/builtin-blocks.d.ts +2 -0
  52. package/dist/app/lib/blocks/builtin-blocks.d.ts.map +1 -0
  53. package/dist/app/lib/blocks/builtin-blocks.js +55 -0
  54. package/dist/app/lib/blocks/defineBlock.d.ts +4 -0
  55. package/dist/app/lib/blocks/defineBlock.d.ts.map +1 -0
  56. package/dist/app/lib/blocks/defineBlock.js +9 -0
  57. package/dist/app/lib/blocks/editor/EditorHighlights.d.ts +8 -0
  58. package/dist/app/lib/blocks/editor/EditorHighlights.d.ts.map +1 -0
  59. package/dist/app/lib/blocks/editor/EditorHighlights.js +164 -0
  60. package/dist/app/lib/blocks/editor/EditorSupport.d.ts +1 -0
  61. package/dist/app/lib/blocks/editor/EditorSupport.d.ts.map +1 -0
  62. package/dist/app/lib/blocks/editor/EditorSupport.js +19 -12
  63. package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts +1 -0
  64. package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts.map +1 -0
  65. package/dist/app/lib/blocks/editor/block-templates.d.ts +8 -1
  66. package/dist/app/lib/blocks/editor/block-templates.d.ts.map +1 -0
  67. package/dist/app/lib/blocks/editor/block-templates.js +71 -2
  68. package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts +1 -0
  69. package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts.map +1 -0
  70. package/dist/app/lib/blocks/editor/controls.d.ts +1 -0
  71. package/dist/app/lib/blocks/editor/controls.d.ts.map +1 -0
  72. package/dist/app/lib/blocks/editor/create-block.d.ts +10 -0
  73. package/dist/app/lib/blocks/editor/create-block.d.ts.map +1 -0
  74. package/dist/app/lib/blocks/editor/create-block.js +13 -0
  75. package/dist/app/lib/blocks/editor/editor-config.d.ts +78 -9
  76. package/dist/app/lib/blocks/editor/editor-config.d.ts.map +1 -0
  77. package/dist/app/lib/blocks/editor/editor-config.js +29 -62
  78. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts +4 -0
  79. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts.map +1 -0
  80. package/dist/app/lib/blocks/editor/installGutenbergHooks.js +130 -25
  81. package/dist/app/lib/blocks/editor/root-blocks.d.ts +7 -0
  82. package/dist/app/lib/blocks/editor/root-blocks.d.ts.map +1 -0
  83. package/dist/app/lib/blocks/editor/root-blocks.js +30 -0
  84. package/dist/app/lib/blocks/editor/usePostEditor.d.ts +13 -2
  85. package/dist/app/lib/blocks/editor/usePostEditor.d.ts.map +1 -0
  86. package/dist/app/lib/blocks/editor/usePostEditor.js +28 -13
  87. package/dist/app/lib/blocks/index.d.ts +12 -9
  88. package/dist/app/lib/blocks/index.d.ts.map +1 -0
  89. package/dist/app/lib/blocks/index.js +11 -9
  90. package/dist/app/lib/blocks/inline-editing.d.ts +11 -1
  91. package/dist/app/lib/blocks/inline-editing.d.ts.map +1 -0
  92. package/dist/app/lib/blocks/inline-editing.js +15 -5
  93. package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts +1 -0
  94. package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts.map +1 -0
  95. package/dist/app/lib/devtools/components/BreakpointIndicator.js +7 -5
  96. package/dist/app/lib/devtools/components/DevUI.d.ts +1 -0
  97. package/dist/app/lib/devtools/components/DevUI.d.ts.map +1 -0
  98. package/dist/app/lib/devtools/components/DevUI.js +4 -3
  99. package/dist/app/lib/devtools/components/GridIndicator.d.ts +2 -0
  100. package/dist/app/lib/devtools/components/GridIndicator.d.ts.map +1 -0
  101. package/dist/app/lib/devtools/components/GridIndicator.js +29 -0
  102. package/dist/app/lib/devtools/dev-tools-store.d.ts +10 -0
  103. package/dist/app/lib/devtools/dev-tools-store.d.ts.map +1 -0
  104. package/dist/app/lib/devtools/dev-tools-store.js +8 -0
  105. package/dist/app/lib/devtools/hooks/usePersistState.d.ts +2 -1
  106. package/dist/app/lib/devtools/hooks/usePersistState.d.ts.map +1 -0
  107. package/dist/app/lib/devtools/hooks/usePersistState.js +11 -2
  108. package/dist/app/lib/devtools/hooks/useTailwind.d.ts +2311 -1267
  109. package/dist/app/lib/devtools/hooks/useTailwind.d.ts.map +1 -0
  110. package/dist/app/lib/devtools/hooks/useTailwind.js +6 -3
  111. package/dist/app/lib/devtools/index.d.ts +2 -0
  112. package/dist/app/lib/devtools/index.d.ts.map +1 -0
  113. package/dist/app/lib/devtools/index.js +1 -1
  114. package/dist/app/lib/devtools/loader.d.ts +1 -0
  115. package/dist/app/lib/devtools/loader.d.ts.map +1 -0
  116. package/dist/app/lib/devtools/loader.js +8 -7
  117. package/dist/app/lib/devtools/tailwind.config.d.ts +1 -0
  118. package/dist/app/lib/devtools/tailwind.config.d.ts.map +1 -0
  119. package/dist/app/lib/devtools/useQueryDebug.d.ts +8 -1
  120. package/dist/app/lib/devtools/useQueryDebug.d.ts.map +1 -0
  121. package/dist/app/lib/devtools/useQueryDebug.js +5 -8
  122. package/dist/app/lib/dynamic/dynamic.d.ts +2 -1
  123. package/dist/app/lib/dynamic/dynamic.d.ts.map +1 -0
  124. package/dist/app/lib/dynamic/dynamic.js +5 -1
  125. package/dist/app/lib/dynamic/index.d.ts +2 -1
  126. package/dist/app/lib/dynamic/index.d.ts.map +1 -0
  127. package/dist/app/lib/dynamic/index.js +1 -1
  128. package/dist/app/lib/hooks/index.d.ts +5 -5
  129. package/dist/app/lib/hooks/index.d.ts.map +1 -0
  130. package/dist/app/lib/hooks/index.js +4 -5
  131. package/dist/app/lib/hooks/{queryUtils.d.ts → query-hooks.d.ts} +46 -4
  132. package/dist/app/lib/hooks/query-hooks.d.ts.map +1 -0
  133. package/dist/app/lib/hooks/{queryUtils.js → query-hooks.js} +99 -40
  134. package/dist/app/lib/hooks/useAppData.d.ts +1 -0
  135. package/dist/app/lib/hooks/useAppData.d.ts.map +1 -0
  136. package/dist/app/lib/hooks/useAppData.js +12 -1
  137. package/dist/app/lib/hooks/useRPC.d.ts +1 -4
  138. package/dist/app/lib/hooks/useRPC.d.ts.map +1 -0
  139. package/dist/app/lib/hooks/useRPC.js +0 -8
  140. package/dist/app/lib/integrations/gravityforms/index.d.ts +3 -0
  141. package/dist/app/lib/integrations/gravityforms/index.d.ts.map +1 -0
  142. package/dist/app/lib/integrations/gravityforms/index.js +2 -0
  143. package/dist/app/lib/integrations/gravityforms/types.d.ts +145 -0
  144. package/dist/app/lib/integrations/gravityforms/types.d.ts.map +1 -0
  145. package/dist/app/lib/integrations/gravityforms/types.js +1 -0
  146. package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts +31 -0
  147. package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts.map +1 -0
  148. package/dist/app/lib/integrations/gravityforms/useGravityForm.js +295 -0
  149. package/dist/app/lib/internal/finalize-rpc.d.ts +18 -0
  150. package/dist/app/lib/internal/finalize-rpc.d.ts.map +1 -0
  151. package/dist/app/lib/internal/finalize-rpc.js +3 -0
  152. package/dist/app/lib/internal/index.d.ts +6 -4
  153. package/dist/app/lib/internal/index.d.ts.map +1 -0
  154. package/dist/app/lib/internal/index.js +5 -4
  155. package/dist/app/lib/internal/internal-store.d.ts +1 -2
  156. package/dist/app/lib/internal/internal-store.d.ts.map +1 -0
  157. package/dist/app/lib/internal/internal-store.js +1 -3
  158. package/dist/app/lib/internal/read-admin-manifest.d.ts +2 -1
  159. package/dist/app/lib/internal/read-admin-manifest.d.ts.map +1 -0
  160. package/dist/app/lib/internal/read-block-manifest.d.ts +1 -0
  161. package/dist/app/lib/internal/read-block-manifest.d.ts.map +1 -0
  162. package/dist/app/lib/internal/read-view-manifest.d.ts +1 -0
  163. package/dist/app/lib/internal/read-view-manifest.d.ts.map +1 -0
  164. package/dist/app/lib/legacy-stitches/createStitches.d.ts +22 -21
  165. package/dist/app/lib/legacy-stitches/createStitches.d.ts.map +1 -0
  166. package/dist/app/lib/legacy-stitches/createStitches.js +1 -1
  167. package/dist/app/lib/legacy-stitches/index.d.ts +2 -1
  168. package/dist/app/lib/legacy-stitches/index.d.ts.map +1 -0
  169. package/dist/app/lib/legacy-stitches/index.js +1 -1
  170. package/dist/app/lib/routing/components/BackButton.d.ts +50 -0
  171. package/dist/app/lib/routing/components/BackButton.d.ts.map +1 -0
  172. package/dist/app/lib/routing/components/BackButton.js +47 -0
  173. package/dist/app/lib/routing/components/BrowserRouter.d.ts +10 -1
  174. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -0
  175. package/dist/app/lib/routing/components/BrowserRouter.js +138 -23
  176. package/dist/app/lib/routing/components/ClientOnly.d.ts +1 -0
  177. package/dist/app/lib/routing/components/ClientOnly.d.ts.map +1 -0
  178. package/dist/app/lib/routing/components/ClientOnly.js +2 -2
  179. package/dist/app/lib/routing/components/Link.d.ts +19 -2
  180. package/dist/app/lib/routing/components/Link.d.ts.map +1 -0
  181. package/dist/app/lib/routing/components/Link.js +47 -27
  182. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts +10 -0
  183. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts.map +1 -0
  184. package/dist/app/lib/routing/components/NativeLinkHandler.js +23 -0
  185. package/dist/app/lib/routing/components/RouteRenderer.d.ts +2 -1
  186. package/dist/app/lib/routing/components/RouteRenderer.d.ts.map +1 -0
  187. package/dist/app/lib/routing/components/RouteRenderer.js +20 -6
  188. package/dist/app/lib/routing/components/SSRRouter.d.ts +5 -2
  189. package/dist/app/lib/routing/components/SSRRouter.d.ts.map +1 -0
  190. package/dist/app/lib/routing/components/SSRRouter.js +7 -6
  191. package/dist/app/lib/routing/components/ScrollRestoration.d.ts +1 -0
  192. package/dist/app/lib/routing/components/ScrollRestoration.d.ts.map +1 -0
  193. package/dist/app/lib/routing/components/ScrollRestoration.js +5 -2
  194. package/dist/app/lib/routing/context.d.ts +9 -5
  195. package/dist/app/lib/routing/context.d.ts.map +1 -0
  196. package/dist/app/lib/routing/context.js +13 -96
  197. package/dist/app/lib/routing/hooks/useIsSSR.d.ts +1 -0
  198. package/dist/app/lib/routing/hooks/useIsSSR.d.ts.map +1 -0
  199. package/dist/app/lib/routing/hooks/useRestorableState.d.ts +3 -1
  200. package/dist/app/lib/routing/hooks/useRestorableState.d.ts.map +1 -0
  201. package/dist/app/lib/routing/hooks/useRestorableState.js +2 -1
  202. package/dist/app/lib/routing/hooks/useRoute.d.ts +17 -1
  203. package/dist/app/lib/routing/hooks/useRoute.d.ts.map +1 -0
  204. package/dist/app/lib/routing/hooks/useRoute.js +22 -1
  205. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +6 -0
  206. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -0
  207. package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
  208. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +2 -1
  209. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts.map +1 -0
  210. package/dist/app/lib/routing/hooks/useRouteTransition.js +1 -1
  211. package/dist/app/lib/routing/hooks/useRouter.d.ts +2 -1
  212. package/dist/app/lib/routing/hooks/useRouter.d.ts.map +1 -0
  213. package/dist/app/lib/routing/hooks/useRouter.js +1 -1
  214. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +2 -1
  215. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts.map +1 -0
  216. package/dist/app/lib/routing/hooks/useRouterEvents.js +1 -1
  217. package/dist/app/lib/routing/hooks/useRouterState.d.ts +2 -1
  218. package/dist/app/lib/routing/hooks/useRouterState.d.ts.map +1 -0
  219. package/dist/app/lib/routing/hooks/useRouterState.js +1 -1
  220. package/dist/app/lib/routing/hooks/useSearchParams.d.ts +78 -6
  221. package/dist/app/lib/routing/hooks/useSearchParams.d.ts.map +1 -0
  222. package/dist/app/lib/routing/hooks/useSearchParams.js +77 -17
  223. package/dist/app/lib/routing/index.d.ts +16 -13
  224. package/dist/app/lib/routing/index.d.ts.map +1 -0
  225. package/dist/app/lib/routing/index.js +15 -13
  226. package/dist/app/lib/routing/loader.d.ts +3 -2
  227. package/dist/app/lib/routing/loader.d.ts.map +1 -0
  228. package/dist/app/lib/routing/loader.js +26 -15
  229. package/dist/app/lib/routing/types.d.ts +62 -14
  230. package/dist/app/lib/routing/types.d.ts.map +1 -0
  231. package/dist/app/lib/routing/utils.d.ts +7 -2
  232. package/dist/app/lib/routing/utils.d.ts.map +1 -0
  233. package/dist/app/lib/routing/utils.js +41 -4
  234. package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +11 -2
  235. package/dist/app/lib/runtime/apiConfig.d.ts.map +1 -0
  236. package/dist/app/lib/runtime/apiConfig.js +6 -0
  237. package/dist/app/lib/runtime/errorHandling.d.ts +40 -0
  238. package/dist/app/lib/runtime/errorHandling.d.ts.map +1 -0
  239. package/dist/app/lib/runtime/errorHandling.js +6 -0
  240. package/dist/app/lib/runtime/index.d.ts +3 -0
  241. package/dist/app/lib/runtime/index.d.ts.map +1 -0
  242. package/dist/app/lib/runtime/index.js +2 -0
  243. package/dist/app/lib/views/defineView.d.ts +2 -1
  244. package/dist/app/lib/views/defineView.d.ts.map +1 -0
  245. package/dist/app/lib/views/index.d.ts +2 -1
  246. package/dist/app/lib/views/index.d.ts.map +1 -0
  247. package/dist/app/lib/views/index.js +1 -1
  248. package/dist/app/server/index.d.ts +6 -0
  249. package/dist/app/server/index.d.ts.map +1 -0
  250. package/dist/app/server/index.js +5 -0
  251. package/dist/app/server/proxy-wp-admin.d.ts +3 -0
  252. package/dist/app/server/proxy-wp-admin.d.ts.map +1 -0
  253. package/dist/app/server/proxy-wp-admin.js +138 -0
  254. package/dist/app/server/render-ai-page.d.ts +13 -0
  255. package/dist/app/server/render-ai-page.d.ts.map +1 -0
  256. package/dist/app/server/render-ai-page.js +100 -0
  257. package/dist/app/server/render-ssr-page.d.ts +31 -0
  258. package/dist/app/server/render-ssr-page.d.ts.map +1 -0
  259. package/dist/app/server/render-ssr-page.js +237 -0
  260. package/dist/app/server/rpc.d.ts +52 -0
  261. package/dist/app/server/rpc.d.ts.map +1 -0
  262. package/dist/app/server/rpc.js +18 -0
  263. package/dist/app/server/server-context.d.ts +75 -0
  264. package/dist/app/server/server-context.d.ts.map +1 -0
  265. package/dist/app/server/server-context.js +417 -0
  266. package/dist/app/server/server-custom-config.d.ts +3 -0
  267. package/dist/app/server/server-custom-config.d.ts.map +1 -0
  268. package/dist/app/server/server-custom-config.js +1 -0
  269. package/dist/app/server/utils/content-security.d.ts +26 -0
  270. package/dist/app/server/utils/content-security.d.ts.map +1 -0
  271. package/dist/app/server/utils/content-security.js +124 -0
  272. package/dist/app/server/utils/headers.d.ts +2 -0
  273. package/dist/app/server/utils/headers.d.ts.map +1 -0
  274. package/dist/app/server/utils/headers.js +17 -0
  275. package/dist/app/server/utils/replace-host.d.ts +7 -4
  276. package/dist/app/server/utils/replace-host.d.ts.map +1 -0
  277. package/dist/app/server/utils/replace-host.js +66 -11
  278. package/dist/app/server/utils/swr-cache.d.ts +5 -0
  279. package/dist/app/server/utils/swr-cache.d.ts.map +1 -0
  280. package/dist/app/server/utils/swr-cache.js +31 -0
  281. package/dist/app/utils/APIProvider.d.ts +3 -0
  282. package/dist/app/utils/APIProvider.d.ts.map +1 -0
  283. package/dist/app/utils/APIProvider.js +5 -0
  284. package/dist/app/utils/BlockErrorBoundary.d.ts +20 -0
  285. package/dist/app/utils/BlockErrorBoundary.d.ts.map +1 -0
  286. package/dist/app/utils/BlockErrorBoundary.js +38 -0
  287. package/dist/app/utils/ErrorMessage.d.ts +6 -0
  288. package/dist/app/utils/ErrorMessage.d.ts.map +1 -0
  289. package/dist/app/utils/ErrorMessage.js +14 -0
  290. package/dist/app/utils/RouteErrorBoundary.d.ts +20 -0
  291. package/dist/app/utils/RouteErrorBoundary.d.ts.map +1 -0
  292. package/dist/app/utils/RouteErrorBoundary.js +41 -0
  293. package/dist/app/utils/asset-capture.d.ts +3 -0
  294. package/dist/app/utils/asset-capture.d.ts.map +1 -0
  295. package/dist/app/utils/asset-capture.js +5 -0
  296. package/dist/app/utils/hydration-debugger.d.ts +14 -0
  297. package/dist/app/utils/hydration-debugger.d.ts.map +1 -0
  298. package/dist/app/utils/hydration-debugger.js +11 -0
  299. package/dist/app/utils/query-client.d.ts +3 -0
  300. package/dist/app/utils/query-client.d.ts.map +1 -0
  301. package/dist/app/utils/query-client.js +5 -1
  302. package/dist/app/utils/query-monitor.d.ts +27 -0
  303. package/dist/app/utils/query-monitor.d.ts.map +1 -0
  304. package/dist/app/utils/query-monitor.js +7 -0
  305. package/dist/app/utils/trpc-client.d.ts +3 -0
  306. package/dist/app/utils/trpc-client.d.ts.map +1 -0
  307. package/dist/app/utils/trpc-client.js +39 -0
  308. package/dist/app/utils/wp.d.ts +11 -10
  309. package/dist/app/utils/wp.d.ts.map +1 -0
  310. package/dist/node/cli/cli-mode.d.ts +1 -0
  311. package/dist/node/cli/cli-mode.d.ts.map +1 -0
  312. package/dist/node/cli/cli-worker.d.ts +2 -1
  313. package/dist/node/cli/cli-worker.d.ts.map +1 -0
  314. package/dist/node/cli/cli-worker.js +12 -3
  315. package/dist/node/cli/cli.d.ts +1 -0
  316. package/dist/node/cli/cli.d.ts.map +1 -0
  317. package/dist/node/cli/cli.js +195 -11
  318. package/dist/node/cli/display/CLIApp.d.ts +2 -1
  319. package/dist/node/cli/display/CLIApp.d.ts.map +1 -0
  320. package/dist/node/cli/display/CLIApp.js +4 -7
  321. package/dist/node/cli/display/boot-cli-app.d.ts +1 -0
  322. package/dist/node/cli/display/boot-cli-app.d.ts.map +1 -0
  323. package/dist/node/cli/display/boot-cli-app.js +1 -1
  324. package/dist/node/cli/display/components/Fullscreen.d.ts +1 -0
  325. package/dist/node/cli/display/components/Fullscreen.d.ts.map +1 -0
  326. package/dist/node/cli/display/components/LogEntries.d.ts +2 -1
  327. package/dist/node/cli/display/components/LogEntries.d.ts.map +1 -0
  328. package/dist/node/cli/display/components/MenuItem.d.ts +1 -0
  329. package/dist/node/cli/display/components/MenuItem.d.ts.map +1 -0
  330. package/dist/node/cli/display/components/TextInput.d.ts +1 -0
  331. package/dist/node/cli/display/components/TextInput.d.ts.map +1 -0
  332. package/dist/node/cli/display/hooks/useManifest.d.ts +1 -0
  333. package/dist/node/cli/display/hooks/useManifest.d.ts.map +1 -0
  334. package/dist/node/cli/display/hooks/useStatefulLog.d.ts +2 -1
  335. package/dist/node/cli/display/hooks/useStatefulLog.d.ts.map +1 -0
  336. package/dist/node/cli/display/tools/BlockList.d.ts +1 -0
  337. package/dist/node/cli/display/tools/BlockList.d.ts.map +1 -0
  338. package/dist/node/cli/display/tools/CreateBlock.d.ts +2 -1
  339. package/dist/node/cli/display/tools/CreateBlock.d.ts.map +1 -0
  340. package/dist/node/cli/display/tools/cli-tool-list.d.ts +1 -0
  341. package/dist/node/cli/display/tools/cli-tool-list.d.ts.map +1 -0
  342. package/dist/node/cli/display/tools/cli-tools.d.ts +2 -11
  343. package/dist/node/cli/display/tools/cli-tools.d.ts.map +1 -0
  344. package/dist/node/cli/display/tools/cli-tools.js +9 -9
  345. package/dist/node/cli/display/util/colors.d.ts +3 -2
  346. package/dist/node/cli/display/util/colors.d.ts.map +1 -0
  347. package/dist/node/cli/version.d.ts +2 -1
  348. package/dist/node/cli/version.d.ts.map +1 -0
  349. package/dist/node/cli/version.js +1 -1
  350. package/dist/node/compiler/build-vinxi.d.ts +9 -0
  351. package/dist/node/compiler/build-vinxi.d.ts.map +1 -0
  352. package/dist/node/compiler/build-vinxi.js +38 -0
  353. package/dist/node/compiler/bundler.admin.d.ts +3 -2
  354. package/dist/node/compiler/bundler.admin.d.ts.map +1 -0
  355. package/dist/node/compiler/bundler.admin.js +4 -4
  356. package/dist/node/compiler/bundler.frontend.d.ts +3 -1
  357. package/dist/node/compiler/bundler.frontend.d.ts.map +1 -0
  358. package/dist/node/compiler/bundler.frontend.js +29 -15
  359. package/dist/node/compiler/dev-server.d.ts +19 -0
  360. package/dist/node/compiler/dev-server.d.ts.map +1 -0
  361. package/dist/node/compiler/dev-server.js +113 -0
  362. package/dist/node/compiler/get-vite-config.d.ts +30 -0
  363. package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
  364. package/dist/node/compiler/get-vite-config.js +332 -0
  365. package/dist/node/compiler/vinxi-app.d.ts +23 -0
  366. package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
  367. package/dist/node/compiler/vinxi-app.js +230 -0
  368. package/dist/node/compiler/vinxi-codegen.d.ts +13 -0
  369. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
  370. package/dist/node/compiler/vinxi-codegen.js +731 -0
  371. package/dist/node/graphql/graphql-codegen.d.ts +13 -2
  372. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
  373. package/dist/node/graphql/graphql-codegen.js +242 -40
  374. package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
  375. package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
  376. package/dist/node/graphql/graphql-schema-loader.js +5 -19
  377. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +3 -1
  378. package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
  379. package/dist/node/graphql/plugins/gql-plugin-files.js +3 -2
  380. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
  381. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
  382. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
  383. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
  384. package/dist/node/graphql/plugins/gql-plugin-queries.js +2 -2
  385. package/dist/node/graphql/query-files-loader.d.ts +4 -0
  386. package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
  387. package/dist/node/graphql/query-files-loader.js +5 -0
  388. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  389. package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
  390. package/dist/node/project/config.d.ts +207 -73
  391. package/dist/node/project/config.d.ts.map +1 -0
  392. package/dist/node/project/config.js +95 -21
  393. package/dist/node/project/eddev-build-file.d.ts +1 -0
  394. package/dist/node/project/eddev-build-file.d.ts.map +1 -0
  395. package/dist/node/project/eddev-build-file.js +4 -2
  396. package/dist/node/project/env.d.ts +6 -1
  397. package/dist/node/project/env.d.ts.map +1 -0
  398. package/dist/node/project/env.js +2 -1
  399. package/dist/node/project/favicons.d.ts +1 -0
  400. package/dist/node/project/favicons.d.ts.map +1 -0
  401. package/dist/node/project/manifest/block-manifest.d.ts +1 -0
  402. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
  403. package/dist/node/project/manifest/block-manifest.js +8 -4
  404. package/dist/node/project/manifest/field-manifest.d.ts +1 -0
  405. package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
  406. package/dist/node/project/manifest/manifest.d.ts +3 -1
  407. package/dist/node/project/manifest/manifest.d.ts.map +1 -0
  408. package/dist/node/project/manifest/manifest.js +15 -11
  409. package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
  410. package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
  411. package/dist/node/project/manifest/routes-manifest.js +74 -0
  412. package/dist/node/project/manifest/view-manifest.d.ts +1 -0
  413. package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
  414. package/dist/node/project/manifest/view-manifest.js +2 -2
  415. package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
  416. package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
  417. package/dist/node/project/project.d.ts +15 -2
  418. package/dist/node/project/project.d.ts.map +1 -0
  419. package/dist/node/project/project.js +73 -21
  420. package/dist/node/project/wp-info.d.ts +3 -0
  421. package/dist/node/project/wp-info.d.ts.map +1 -0
  422. package/dist/node/project/wp-info.js +13 -3
  423. package/dist/node/storybook/index.d.ts +3 -0
  424. package/dist/node/storybook/index.d.ts.map +1 -0
  425. package/dist/node/storybook/index.js +13 -0
  426. package/dist/node/types/block-type.d.ts +57 -25
  427. package/dist/node/types/block-type.d.ts.map +1 -0
  428. package/dist/node/types/block-type.js +4 -1
  429. package/dist/node/types/view-type.d.ts +8 -7
  430. package/dist/node/types/view-type.d.ts.map +1 -0
  431. package/dist/node/types/view-type.js +3 -4
  432. package/dist/node/utils/fetch-wp.d.ts +2 -0
  433. package/dist/node/utils/fetch-wp.d.ts.map +1 -0
  434. package/dist/node/utils/fetch-wp.js +28 -0
  435. package/dist/node/utils/{formatZodError.d.ts → format-zod-error.d.ts} +1 -0
  436. package/dist/node/utils/format-zod-error.d.ts.map +1 -0
  437. package/dist/node/utils/fs-codegen.d.ts +44 -0
  438. package/dist/node/utils/fs-codegen.d.ts.map +1 -0
  439. package/dist/node/utils/fs-codegen.js +105 -0
  440. package/dist/node/utils/fs.d.ts +5 -0
  441. package/dist/node/utils/fs.d.ts.map +1 -0
  442. package/dist/node/utils/fs.js +2 -0
  443. package/dist/node/utils/{getRepoInfo.d.ts → get-repo-info.d.ts} +1 -0
  444. package/dist/node/utils/get-repo-info.d.ts.map +1 -0
  445. package/dist/node/utils/helpers.d.ts +1 -0
  446. package/dist/node/utils/helpers.d.ts.map +1 -0
  447. package/dist/node/utils/{highlightCode.d.ts → highlight-code.d.ts} +1 -0
  448. package/dist/node/utils/highlight-code.d.ts.map +1 -0
  449. package/dist/node/utils/{isDeploying.d.ts → is-deploying.d.ts} +1 -0
  450. package/dist/node/utils/is-deploying.d.ts.map +1 -0
  451. package/dist/node/utils/{isDeploying.js → is-deploying.js} +1 -1
  452. package/dist/node/utils/report-builder.d.ts +7 -6
  453. package/dist/node/utils/report-builder.d.ts.map +1 -0
  454. package/dist/node/utils/self-signed-cert.d.ts +9 -0
  455. package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
  456. package/dist/node/utils/{selfSignedCert.js → self-signed-cert.js} +29 -5
  457. package/dist/node/utils/{statefulLog.d.ts → stateful-log.d.ts} +1 -0
  458. package/dist/node/utils/stateful-log.d.ts.map +1 -0
  459. package/dist/node/utils/{statefulLog.js → stateful-log.js} +3 -1
  460. package/dist/node/utils/{export-extractor.d.ts → ts-export-extractor.d.ts} +1 -0
  461. package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
  462. package/dist/node/utils/watch-file-tree.d.ts +26 -0
  463. package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
  464. package/dist/node/utils/{watchFileTree.js → watch-file-tree.js} +12 -5
  465. package/package.json +62 -47
  466. package/tsconfig.app.json +8 -3
  467. package/tsconfig.node.json +1 -0
  468. package/types.app.d.ts +4 -2
  469. package/types.app.internal.d.ts +2 -2
  470. package/types.meta.d.ts +449 -136
  471. package/types.node.d.ts +3 -3
  472. package/dist/app/entry/Root.d.ts +0 -1
  473. package/dist/app/entry/Root.js +0 -9
  474. package/dist/app/entry/main.admin.d.ts +0 -3
  475. package/dist/app/entry/main.admin.js +0 -10
  476. package/dist/app/entry/main.frontend.spa.d.ts +0 -3
  477. package/dist/app/entry/main.frontend.spa.js +0 -13
  478. package/dist/app/entry/main.frontend.ssr.d.ts +0 -21
  479. package/dist/app/entry/main.frontend.ssr.js +0 -79
  480. package/dist/app/entry/main.serverless.dev.d.ts +0 -4
  481. package/dist/app/entry/main.serverless.dev.js +0 -21
  482. package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
  483. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
  484. package/dist/app/lib/hooks/apiConfig.js +0 -4
  485. package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
  486. package/dist/app/lib/hooks/usePageLoad.js +0 -5
  487. package/dist/app/server/create-api-builtin-hono.d.ts +0 -8
  488. package/dist/app/server/create-api-builtin-hono.js +0 -80
  489. package/dist/app/server/create-ssr-hono.d.ts +0 -18
  490. package/dist/app/server/create-ssr-hono.js +0 -104
  491. package/dist/app/server/utils/index.html.d.ts +0 -2
  492. package/dist/app/server/utils/index.html.js +0 -14
  493. package/dist/node/compiler/index.html.d.ts +0 -2
  494. package/dist/node/compiler/index.html.js +0 -15
  495. package/dist/node/compiler/serverless.dev.d.ts +0 -16
  496. package/dist/node/compiler/serverless.dev.js +0 -215
  497. package/dist/node/compiler/vite/get-vite-config.d.ts +0 -13
  498. package/dist/node/compiler/vite/get-vite-config.js +0 -315
  499. package/dist/node/compiler/vite/plugin-admin.d.ts +0 -4
  500. package/dist/node/compiler/vite/plugin-admin.js +0 -67
  501. package/dist/node/compiler/vite/plugin-blocks.d.ts +0 -4
  502. package/dist/node/compiler/vite/plugin-blocks.js +0 -73
  503. package/dist/node/compiler/vite/plugin-entry.d.ts +0 -6
  504. package/dist/node/compiler/vite/plugin-entry.js +0 -16
  505. package/dist/node/compiler/vite/plugin-resolved-tailwind.d.ts +0 -4
  506. package/dist/node/compiler/vite/plugin-resolved-tailwind.js +0 -29
  507. package/dist/node/compiler/vite/plugin-theme.d.ts +0 -4
  508. package/dist/node/compiler/vite/plugin-theme.js +0 -40
  509. package/dist/node/compiler/vite/plugin-views.d.ts +0 -4
  510. package/dist/node/compiler/vite/plugin-views.js +0 -51
  511. package/dist/node/utils/console.d.ts +0 -21
  512. package/dist/node/utils/console.js +0 -28
  513. package/dist/node/utils/selfSignedCert.d.ts +0 -4
  514. package/dist/node/utils/unsafe-fetch.d.ts +0 -2
  515. package/dist/node/utils/unsafe-fetch.js +0 -19
  516. package/dist/node/utils/watchFileTree.d.ts +0 -11
  517. package/tsup.config.ts +0 -40
  518. package/types.manifests.d.ts +0 -22
  519. /package/dist/node/utils/{formatZodError.js → format-zod-error.js} +0 -0
  520. /package/dist/node/utils/{getRepoInfo.js → get-repo-info.js} +0 -0
  521. /package/dist/node/utils/{highlightCode.js → highlight-code.js} +0 -0
  522. /package/dist/node/utils/{export-extractor.js → ts-export-extractor.js} +0 -0
@@ -1,10 +1,82 @@
1
+ /**
2
+ * Search param API object.
3
+ */
1
4
  export type SearchParamAPI<T> = {
2
- set<K extends keyof T>(key: K, value: T[K]): void;
3
- setAll: (value: T) => void;
4
- setter<K extends keyof T>(key: K): (value: T[K]) => void;
5
+ /**
6
+ * Set an individual parameter value by key.
7
+ *
8
+ * If the value is an array, then one or more `key[]` parameters will be set. Otherwise, a single `key` parameter will be set.
9
+ *
10
+ * If the value is `null` or `undefined`, the parameter will be removed from the query string.
11
+ *
12
+ * @param key The search parameter name
13
+ * @param value The value to set
14
+ */
15
+ set<K extends keyof T>(key: K, value: T[K] | null | undefined): void;
16
+ /**
17
+ * Set all parameters at once, replacing the entire query string. Any parameters not present will be replaced with their default value. Passing an empty object is equivalent to calling `reset()`.
18
+ *
19
+ * @param value
20
+ * @returns
21
+ */
22
+ setAll: (value: Partial<T>) => void;
23
+ /**
24
+ * Returns a memoized setter function for a specific key.
25
+ *
26
+ * This is useful when you want to pass a setter function to a child component, without needing to pass the entire API object.
27
+ *
28
+ * For example:
29
+ * ```tsx
30
+ * <SearchInput value={params.q} onSearch={api.setter("q")} />
31
+ * ```
32
+ *
33
+ * @param key The search parameter name
34
+ * @returns (value: T) => void
35
+ */
36
+ setter<K extends keyof T>(key: K): (value: T[K] | null | undefined) => void;
37
+ /**
38
+ * Reset all parameters to their default values.
39
+ */
5
40
  reset(): void;
41
+ /**
42
+ * Gets the current value of a parameter. In most cases, you should use the `params` object returned from `useSearchParams` instead of this method.
43
+ */
6
44
  get<K extends keyof T>(key: K): T[K];
7
45
  };
8
- export declare function useSearchParams<T extends {
9
- [K: string]: any;
10
- }>(defaultValue: T): [T, SearchParamAPI<T>];
46
+ /**
47
+ * Provides type-safe read/write access to query string parameters, integrating with the routing system.
48
+ *
49
+ * - Call `useSearchParams` with a default value object, which defines the expected shape of the query string parameters.
50
+ * - Only keys that are present in the default value object will be handled, and all others will be ignored.
51
+ * - Arrays of values are supported, and you should use a default value of `[]` for that key. You may want to cast the default parameter as an array of the expected type (eg. `myValue: [] as string[]`) to ensure that the parameter type is correct.
52
+ * - This hook returns a tuple with the current query string parameters object, and an API object with methods to interact with the query string. See {@link SearchParamAPI} for more details.
53
+ *
54
+ * For example:
55
+ * ```tsx
56
+ * const [params, api] = useSearchParams({
57
+ * mode: "list" as "list" | "grid",
58
+ * page: 1,
59
+ * tags: [] as string[],
60
+ * })
61
+ *
62
+ * api.set("mode", "grid")
63
+ * api.set("tags", ["tag1", "tag2"])
64
+ * ```
65
+ *
66
+ * Note that if a parameter is set back to it's default value, it'll actually be _removed_ from the updated query string, keeping the URL clean when only the default values are set.
67
+ *
68
+ * ```tsx
69
+ * api.set("mode", "grid")
70
+ * // url becomes: "/?mode=grid"
71
+ * // params.mode === 'grid'
72
+ *
73
+ * api.set("mode", "list")
74
+ * // url becomes: "/"
75
+ * // params.mode === 'list'
76
+ * ```
77
+ *
78
+ * @param defaultValue - The default value object, defining the expected shape of the query string parameters.
79
+ * @returns A tuple of the resolve parameter object, and a {@link SearchParamAPI} object with methods to interact with the query string.
80
+ */
81
+ export declare function useSearchParams<T extends object>(defaultValue: T): [T, SearchParamAPI<T>];
82
+ //# sourceMappingURL=useSearchParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSearchParams.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/hooks/useSearchParams.tsx"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B;;;;;;;;;OASG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAA;IACpE;;;;;OAKG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IACnC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAC3E;;OAEG;IACH,KAAK,IAAI,IAAI,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;CACrC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CA2DzF"}
@@ -1,30 +1,90 @@
1
- import { useMemo } from "react";
2
- import { useRoute } from "./useRoute";
3
- import { useRouter } from "./useRouter";
1
+ import { useMemo, useRef, useState } from "react";
2
+ import { useRoute } from "./useRoute.js";
3
+ import { useRouter } from "./useRouter.js";
4
+ import { parseQuery } from "../utils.js";
5
+ import { hash } from "object-code";
6
+ /**
7
+ * Provides type-safe read/write access to query string parameters, integrating with the routing system.
8
+ *
9
+ * - Call `useSearchParams` with a default value object, which defines the expected shape of the query string parameters.
10
+ * - Only keys that are present in the default value object will be handled, and all others will be ignored.
11
+ * - Arrays of values are supported, and you should use a default value of `[]` for that key. You may want to cast the default parameter as an array of the expected type (eg. `myValue: [] as string[]`) to ensure that the parameter type is correct.
12
+ * - This hook returns a tuple with the current query string parameters object, and an API object with methods to interact with the query string. See {@link SearchParamAPI} for more details.
13
+ *
14
+ * For example:
15
+ * ```tsx
16
+ * const [params, api] = useSearchParams({
17
+ * mode: "list" as "list" | "grid",
18
+ * page: 1,
19
+ * tags: [] as string[],
20
+ * })
21
+ *
22
+ * api.set("mode", "grid")
23
+ * api.set("tags", ["tag1", "tag2"])
24
+ * ```
25
+ *
26
+ * Note that if a parameter is set back to it's default value, it'll actually be _removed_ from the updated query string, keeping the URL clean when only the default values are set.
27
+ *
28
+ * ```tsx
29
+ * api.set("mode", "grid")
30
+ * // url becomes: "/?mode=grid"
31
+ * // params.mode === 'grid'
32
+ *
33
+ * api.set("mode", "list")
34
+ * // url becomes: "/"
35
+ * // params.mode === 'list'
36
+ * ```
37
+ *
38
+ * @param defaultValue - The default value object, defining the expected shape of the query string parameters.
39
+ * @returns A tuple of the resolve parameter object, and a {@link SearchParamAPI} object with methods to interact with the query string.
40
+ */
4
41
  export function useSearchParams(defaultValue) {
5
- const route = useRoute();
6
- const replaceQuery = useRouter((r) => r.replaceQuery);
7
- const result = useMemo(() => ({
42
+ const [currentQuery, replaceQuery] = env.admin
43
+ ? useState({})
44
+ : [useRoute().query, useRouter((r) => r.replaceQuery)];
45
+ const merged = useMemo(() => ({
8
46
  ...defaultValue,
9
- ...route.query,
10
- }), [route.query]);
47
+ ...currentQuery,
48
+ }), [currentQuery]);
49
+ const values = useRef(merged);
50
+ values.current = merged;
51
+ // Memoized setters
52
+ const setters = useMemo(() => ({}), []);
53
+ // Gets the current value, directly from the source.
54
+ function get() {
55
+ if (env.client) {
56
+ return { ...defaultValue, ...parseQuery(document.location.search) };
57
+ }
58
+ else {
59
+ return merged;
60
+ }
61
+ }
62
+ // Main update function
11
63
  const update = (patch) => {
12
- const value = { ...result, ...patch };
64
+ const value = { ...get(), ...patch };
13
65
  for (let key in defaultValue) {
14
- if (defaultValue[key] === value[key] || [null, undefined].includes(value[key])) {
66
+ if (hash(defaultValue[key]) === hash(value[key]) || [null, undefined].includes(value[key])) {
15
67
  delete value[key];
16
68
  }
17
69
  }
70
+ values.current = value;
18
71
  replaceQuery(value);
19
72
  };
20
73
  return [
21
- result,
22
- {
23
- set: (key, value) => update({ ...result, [key]: value }),
24
- setAll: (value) => update(value),
25
- setter: (key) => (value) => update({ ...result, [key]: value }),
74
+ values.current,
75
+ useMemo(() => ({
76
+ set: (key, value) => update({ [key]: value }),
77
+ setAll: (value) => update({
78
+ ...defaultValue,
79
+ ...value,
80
+ }),
81
+ setter: (key) => {
82
+ if (!setters[key])
83
+ setters[key] = (value) => update({ [key]: value });
84
+ return setters[key];
85
+ },
26
86
  reset: () => update({}),
27
- get: (key) => result[key],
28
- },
87
+ get: (key) => values.current[key],
88
+ }), []),
29
89
  ];
30
90
  }
@@ -1,13 +1,16 @@
1
- export * from "./types";
2
- export * from "./components/Link";
3
- export * from "./components/ScrollRestoration";
4
- export * from "./components/RouteRenderer";
5
- export * from "./components/ClientOnly";
6
- export * from "./hooks/useRoute";
7
- export * from "./hooks/useRouteTransition";
8
- export * from "./hooks/useRouter";
9
- export * from "./hooks/useRouterEvents";
10
- export * from "./hooks/useRouterState";
11
- export * from "./hooks/useRestorableState";
12
- export * from "./hooks/useIsSSR";
13
- export * from "./hooks/useSearchParams";
1
+ export * from "./types.js";
2
+ export * from "./components/Link.js";
3
+ export * from "./components/ScrollRestoration.js";
4
+ export * from "./components/RouteRenderer.js";
5
+ export * from "./components/ClientOnly.js";
6
+ export * from "./components/BackButton.js";
7
+ export * from "./components/NativeLinkHandler.js";
8
+ export * from "./hooks/useRoute.js";
9
+ export * from "./hooks/useRouteTransition.js";
10
+ export * from "./hooks/useRouter.js";
11
+ export * from "./hooks/useRouterEvents.js";
12
+ export * from "./hooks/useRouterState.js";
13
+ export * from "./hooks/useRestorableState.js";
14
+ export * from "./hooks/useIsSSR.js";
15
+ export * from "./hooks/useSearchParams.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AAEjD,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA"}
@@ -1,13 +1,15 @@
1
- export * from "./types";
2
- export * from "./components/Link";
3
- export * from "./components/ScrollRestoration";
4
- export * from "./components/RouteRenderer";
5
- export * from "./components/ClientOnly";
6
- export * from "./hooks/useRoute";
7
- export * from "./hooks/useRouteTransition";
8
- export * from "./hooks/useRouter";
9
- export * from "./hooks/useRouterEvents";
10
- export * from "./hooks/useRouterState";
11
- export * from "./hooks/useRestorableState";
12
- export * from "./hooks/useIsSSR";
13
- export * from "./hooks/useSearchParams";
1
+ export * from "./types.js";
2
+ export * from "./components/Link.js";
3
+ export * from "./components/ScrollRestoration.js";
4
+ export * from "./components/RouteRenderer.js";
5
+ export * from "./components/ClientOnly.js";
6
+ export * from "./components/BackButton.js";
7
+ export * from "./components/NativeLinkHandler.js";
8
+ export * from "./hooks/useRoute.js";
9
+ export * from "./hooks/useRouteTransition.js";
10
+ export * from "./hooks/useRouter.js";
11
+ export * from "./hooks/useRouterEvents.js";
12
+ export * from "./hooks/useRouterState.js";
13
+ export * from "./hooks/useRestorableState.js";
14
+ export * from "./hooks/useIsSSR.js";
15
+ export * from "./hooks/useSearchParams.js";
@@ -1,6 +1,6 @@
1
1
  import { FunctionComponent, PropsWithChildren } from "react";
2
- import { DynamicComponent } from "../dynamic/dynamic";
3
- import { RouteData } from "./types";
2
+ import { DynamicComponent } from "../dynamic/dynamic.js";
3
+ import { RouteData } from "./types.js";
4
4
  export type RouteCacheEntry = {
5
5
  data: RouteData;
6
6
  component: FunctionComponent;
@@ -28,3 +28,4 @@ export declare class RouteLoader {
28
28
  getRouteComponent<K extends keyof ViewProps>(view: K): DynamicComponent<FunctionComponent<ViewProps[K]>>;
29
29
  get appComponent(): DynamicComponent<FunctionComponent<PropsWithChildren<AppData>>>;
30
30
  }
31
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;CAC7B,CAAA;AAED,qBAAa,UAAW,SAAQ,KAAK;IAE1B,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;gBADlB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAW;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAY;IACpD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAY;IAC1D,OAAO,EAAE,OAAO,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,YAAY,CAA2C;IAE/D,EAAE,SAAgB;IAElB,YAAY,CAAC,IAAI,EAAE,OAAO,KAAK;IAI/B,oBAAoB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM;IAI5D,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,WAAW;IAyBnB,YAAY,CAAC,QAAQ,EAAE,MAAM;IAKvB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAiD9E,UAAU,CAAC,OAAO,EAAE,OAAO;IAI3B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAKnD,iBAAiB,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,IAAI,EAAE,CAAC,GACT,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAG5F,IAAI,YAAY,IAC6B,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAC3G;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { parseURL, stringifyParsedURL, stringifyQuery, withTrailingSlash } from "ufo";
2
- import { viewManifestReader } from "../internal";
2
+ import { viewManifestReader } from "../internal/read-view-manifest.js";
3
3
  export class RouteError extends Error {
4
4
  message;
5
5
  statusCode;
@@ -31,10 +31,12 @@ export class RouteLoader {
31
31
  const origin = parseURL(sampleUrl);
32
32
  let propsPath = withTrailingSlash(pathname);
33
33
  let query = {};
34
- if (opts.serverless) {
35
- query["_debug"] = opts.debug ? "1" : "0";
36
- query["_props"] = opts.appData ? "all" : "1";
37
- query["_ssr"] = "1";
34
+ if (env.serverless && env.client) {
35
+ propsPath = "/_data/route" + propsPath;
36
+ query = {};
37
+ // query["_debug"] = opts.debug ? "1" : "0"
38
+ // query["_props"] = opts.appData ? "all" : "1"
39
+ // query["_ssr"] = "1"
38
40
  }
39
41
  else {
40
42
  query["_debug"] = opts.debug ? "1" : "0";
@@ -54,6 +56,7 @@ export class RouteLoader {
54
56
  return this.entries.has(cacheKey);
55
57
  }
56
58
  async loadRouteData(pathname, withAppData = false) {
59
+ pathname = withTrailingSlash(pathname);
57
60
  const cacheKey = this.getKey(pathname);
58
61
  // Cached value?
59
62
  if (this.entries.has(cacheKey))
@@ -63,27 +66,35 @@ export class RouteLoader {
63
66
  serverless: env.serverless,
64
67
  debug: env.dev,
65
68
  });
66
- const promise = this.fetchImpl(requestUrl, {})
67
- .then((response) => response.text())
68
- .then((text) => {
69
+ const promise = this.fetchImpl(requestUrl)
70
+ .then(async (response) => {
71
+ if (response.redirected) {
72
+ return { redirect: response.url };
73
+ }
74
+ let text = await response.text();
69
75
  if (this.processProps) {
70
76
  text = this.processProps(text);
71
77
  }
72
78
  try {
73
- return JSON.parse(text);
79
+ const payload = JSON.parse(text);
80
+ if (!payload.view && !payload.redirect) {
81
+ throw new RouteError(`Invalid route data for '${pathname}'`, 500);
82
+ }
83
+ return payload;
74
84
  }
75
85
  catch (err) {
76
86
  throw new RouteError(`JSON parse error for route '${pathname}':\n${err?.message}`, 500);
77
87
  }
78
88
  })
79
- .then((data) => {
89
+ .then(async (data) => {
80
90
  if (data.redirect) {
81
- const redirect = data.redirect;
82
- data = this.loadRouteData(redirect).then((data) => {
83
- data.canonical = redirect;
84
- return data;
85
- });
91
+ const redirect = parseURL(data.redirect).pathname;
92
+ data = await this.loadRouteData(redirect);
93
+ data.canonical = redirect;
86
94
  }
95
+ return data;
96
+ })
97
+ .then((data) => {
87
98
  this.entries.set(cacheKey, new Promise((resolve) => resolve(data)));
88
99
  return data;
89
100
  });
@@ -1,9 +1,16 @@
1
1
  import { FunctionComponent } from "react";
2
- import type { RouteLoader } from "./loader";
3
- import { LinkHandlerMode, PointerOrMouseEvent } from "./utils";
4
- export type ParsedRouteTags = Record<"title" | "meta" | "script" | "style" | "link", {
5
- [key: string]: string;
6
- }[]>;
2
+ import type { RouteLoader } from "./loader.js";
3
+ import { LinkHandlerMode, PointerOrMouseEvent } from "./utils.js";
4
+ export type RouteMetaTag = {
5
+ tagName: string;
6
+ attributes: Record<string, string>;
7
+ inner?: string;
8
+ };
9
+ export type TrackerTags = {
10
+ head?: string;
11
+ body?: string;
12
+ footer?: string;
13
+ };
7
14
  export interface RouteData {
8
15
  view: string;
9
16
  editLink?: string;
@@ -13,10 +20,13 @@ export interface RouteData {
13
20
  redirect?: string;
14
21
  canonical?: string;
15
22
  meta?: {
16
- head: ParsedRouteTags;
17
- footer: ParsedRouteTags;
23
+ head: RouteMetaTag[];
24
+ footer: RouteMetaTag[];
18
25
  };
19
26
  }
27
+ export interface RouteDataWithTrackers extends RouteData {
28
+ trackers?: TrackerTags;
29
+ }
20
30
  export type RouteReturnState<T = {}> = {
21
31
  scrollTop: number;
22
32
  scrollLeft: number;
@@ -26,13 +36,12 @@ export type RouteLink = {
26
36
  query: Record<string, string | string[]>;
27
37
  hash: string;
28
38
  };
29
- export type RouterEvent = {
39
+ export type RouterEvent = ({
30
40
  type: "clicked";
31
41
  link: RouteLink;
32
42
  currentRoute: RouteState;
33
- href: string;
34
- mode: LinkHandlerMode;
35
- } | {
43
+ cancel: () => void;
44
+ } & LinkHandlerMode) | {
36
45
  type: "capture-restorable-state";
37
46
  state: RouteReturnState<Record<string, any>>;
38
47
  } | {
@@ -73,7 +82,12 @@ export type RouterEvent = {
73
82
  data: RouteData;
74
83
  } | {
75
84
  type: "error";
76
- critical: false;
85
+ critical: boolean;
86
+ url?: string;
87
+ shouldReload?: boolean;
88
+ error: Error;
89
+ } | {
90
+ type: "error:component-load-failed";
77
91
  error: Error;
78
92
  };
79
93
  export type RouterSubscriber = (event: RouterEvent) => void;
@@ -89,6 +103,7 @@ export type RouterAPIState = {
89
103
  blockers: Promise<void>[];
90
104
  };
91
105
  export type RouterAPI = {
106
+ hostname?: string;
92
107
  /** Preload a page and it's components */
93
108
  preload: (url: string) => Promise<void>;
94
109
  /** Prefetch the data for a page, but not it's components. */
@@ -99,14 +114,26 @@ export type RouterAPI = {
99
114
  replaceQuery: (search: Record<string, string | string[]>) => void;
100
115
  /** Replace the hash */
101
116
  replaceHash: (hash: string) => void;
102
- /** Handle link clicking events */
103
- handleClickEvent(e: PointerOrMouseEvent, href?: string): void;
117
+ /**
118
+ * Handle a click event, potentially triggering a route change.
119
+ *
120
+ * @param e A pointer or mouse event.
121
+ * @param href An optional URL. This must be provided if no `href` property exists on the clicked element
122
+ * @param preferBack If set, clicking this link will send the user 'back', when clicking a link to the previous history item.
123
+ */
124
+ handleClickEvent(e: PointerOrMouseEvent, href?: string, preferBack?: boolean | "exact"): void;
104
125
  /** A reference to the route loader (mostly for internal use) */
105
126
  loader: RouteLoader;
106
127
  /** Subscribe to events */
107
128
  subscribe: (subscribe: RouterSubscriber) => () => void;
108
129
  /** This function is used by the routing system automatically */
109
130
  emitEvent: (event: RouterEvent) => void;
131
+ /** Returns the current RouterAPIState */
132
+ getState: () => RouterAPIState | null;
133
+ /** Go back to a previous route in the history stack, or push it onto the stack if it isn't currently on the stack. */
134
+ restoreRoute: (route: RouteState) => void;
135
+ /** Indicates that this page render is for consumption by an LLM */
136
+ isAI?: boolean;
110
137
  };
111
138
  export type TypedRouteState<T, TProps> = {
112
139
  /** A unique ID, representing this history item. */
@@ -131,8 +158,29 @@ export type TypedRouteState<T, TProps> = {
131
158
  component: FunctionComponent<TProps>;
132
159
  /** The props for this route, to be passed to the component. */
133
160
  props: TProps;
161
+ /** Loaded metadata for this route */
162
+ meta: RouteMeta;
163
+ };
164
+ export type RouteMeta = {
165
+ title?: string;
166
+ tags?: RouteMetaTag[];
167
+ editLink?: string;
134
168
  };
135
169
  export type RouteState = {
136
170
  [K in keyof ViewProps]: TypedRouteState<K, ViewProps[K]>;
137
171
  }[keyof ViewProps];
138
172
  export type AnyRouteState = TypedRouteState<string, any>;
173
+ export type ErrorRouteProps = {
174
+ /** The HTTP status code for this error */
175
+ statusCode: number;
176
+ /** The title of the message (eg. Not Found) */
177
+ title?: string;
178
+ /** A message which can be shown to the user, specific to this error */
179
+ userMessage?: string;
180
+ /** Detailed error information, which can be displayed to developers or passed to monitoring services */
181
+ report?: {
182
+ message: string;
183
+ details: any;
184
+ };
185
+ };
186
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/types.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,20 @@
1
1
  import { MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from "react";
2
- import { RouteLink, RouteState } from "./types";
2
+ import { RouteData, RouteLink, RouteMeta, RouteState } from "./types.js";
3
3
  export declare function isSameOrigin(url: string): boolean;
4
+ export declare function isSamePathname(a: string, b: string): boolean;
4
5
  export type PointerOrMouseEvent = MouseEvent | PointerEvent | ReactMouseEvent | ReactPointerEvent;
5
6
  export type LinkHandlerMode = {
6
7
  mode: "ignore" | "navigate" | "native";
7
8
  href?: string;
9
+ isSameUrl?: boolean;
8
10
  };
9
- export declare function getLinkHandlerMode(e?: PointerOrMouseEvent, href?: string): LinkHandlerMode;
11
+ export declare function getLinkHandlerMode(e?: PointerOrMouseEvent, href?: string, currentRoute?: RouteState): LinkHandlerMode;
10
12
  type Partialize<T, TKeys extends keyof T> = Partial<Pick<T, TKeys>> & Omit<T, TKeys>;
11
13
  export declare function normalizeRoute(route: Partialize<RouteState, "uri" | "returnState" | "key">): RouteState;
12
14
  export declare function stringifyRouteLink(route: RouteLink): string;
13
15
  export declare function parseQuery(query: string): Record<string, string | string[]>;
14
16
  export declare function stringifyQuery(query: any): string;
17
+ export declare function getRouteMeta(data: RouteData): RouteMeta;
18
+ export declare function addTrailingSlash(path?: string | null): string;
15
19
  export {};
20
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAExF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAExE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,WAQvC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAIlD;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,iBAAiB,CAAA;AAEjG,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5G,wBAAgB,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,eAAe,CAmErH;AAED,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAEpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,GAAG,aAAa,GAAG,KAAK,CAAC,GAAG,UAAU,CAavG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,UAMlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAI3E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,UAOxC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,UAKpD"}
@@ -1,5 +1,5 @@
1
- import { parseURL, resolveURL, stringifyParsedURL, withoutTrailingSlash } from "ufo";
2
- import { stringify as qsStringify, parse as qsParse } from "qs";
1
+ import { parse as qsParse, stringify as qsStringify } from "qs";
2
+ import { parseURL, resolveURL, stringifyParsedURL, withoutTrailingSlash, withTrailingSlash } from "ufo";
3
3
  export function isSameOrigin(url) {
4
4
  if (typeof document === "undefined") {
5
5
  return url.startsWith("/");
@@ -10,7 +10,12 @@ export function isSameOrigin(url) {
10
10
  return parsed.protocol === document.location.protocol && parsed.host === document.location.host;
11
11
  }
12
12
  }
13
- export function getLinkHandlerMode(e, href) {
13
+ export function isSamePathname(a, b) {
14
+ const left = parseURL(a).pathname.replace(/\/$/, "").toLocaleLowerCase();
15
+ const right = parseURL(b).pathname.replace(/\/$/, "").toLocaleLowerCase();
16
+ return left === right;
17
+ }
18
+ export function getLinkHandlerMode(e, href, currentRoute) {
14
19
  try {
15
20
  // Attempt to get the link element, if there is one
16
21
  let eventTarget = null;
@@ -30,8 +35,15 @@ export function getLinkHandlerMode(e, href) {
30
35
  href = eventTarget.href;
31
36
  if (!href)
32
37
  return { mode: "native", href };
38
+ if (href.match(/^(mailto|tel|callto|sms|maps):/)) {
39
+ return { mode: "native", href };
40
+ }
33
41
  // Resolve the URL and check if it's the same origin
34
- const resolved = href.startsWith("http") ? href : resolveURL(document.location.href, href);
42
+ const resolved = href.startsWith("http")
43
+ ? href
44
+ : href.startsWith("/")
45
+ ? resolveURL(document.location.origin, href)
46
+ : resolveURL(document.location.href, href);
35
47
  const parsed = parseURL(resolved);
36
48
  const isSameOrigin = parsed.host?.replace(/:.+/, "") === document.location.host.replace(/:.+/, "");
37
49
  // External links should be handled natively
@@ -52,6 +64,17 @@ export function getLinkHandlerMode(e, href) {
52
64
  // Starts with /wp-, use native (wp-content, wp-admin etc)
53
65
  if (parsed.pathname.startsWith("/wp-"))
54
66
  return { mode: "native", href };
67
+ // If pathname+query are identical, but the hash is different, then allow the browser to handle it
68
+ if (currentRoute &&
69
+ isSamePathname(currentRoute.pathname, parsed.pathname) &&
70
+ currentRoute.search === parsed.search) {
71
+ if (currentRoute.hash !== parsed.hash) {
72
+ return { mode: "native", href };
73
+ }
74
+ else {
75
+ return { mode: "ignore", href, isSameUrl: true };
76
+ }
77
+ }
55
78
  return { mode: "navigate", href };
56
79
  }
57
80
  catch (err) {
@@ -76,6 +99,7 @@ export function normalizeRoute(route) {
76
99
  export function stringifyRouteLink(route) {
77
100
  return stringifyParsedURL({
78
101
  ...route,
102
+ pathname: withTrailingSlash(route.pathname),
79
103
  search: stringifyQuery(route.query),
80
104
  });
81
105
  }
@@ -92,3 +116,16 @@ export function stringifyQuery(query) {
92
116
  arrayFormat: "brackets",
93
117
  });
94
118
  }
119
+ export function getRouteMeta(data) {
120
+ return {
121
+ title: data.meta?.head.find((tag) => tag.tagName === "title")?.inner,
122
+ tags: data.meta?.head ?? [],
123
+ editLink: data.editLink,
124
+ };
125
+ }
126
+ export function addTrailingSlash(path) {
127
+ if (path?.match(/\./)) {
128
+ return path;
129
+ }
130
+ return withTrailingSlash(path ?? undefined, true);
131
+ }
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Configuration options for manipulating how the client interacts with the GraphQL API
3
+ */
1
4
  export type APIConfigStore = {
2
5
  /**
3
6
  * Any value, which will be used as part of the cache key for each query.
@@ -11,8 +14,14 @@ export type APIConfigStore = {
11
14
  */
12
15
  customQueryFetchOptions?: (type: "query" | "mutation", queryName: string, queryArgs: any, url: string, opts: RequestInit) => RequestInit | Promise<RequestInit>;
13
16
  /**
14
- * Update aspects of the API client
17
+ * Allows you to hook into the response of a query or mutation.
15
18
  */
19
+ onResponse?: (response: Response, type: "query" | "mutation", queryName: string, queryArgs: any, url: string, opts: RequestInit) => void;
16
20
  set: (config: Partial<APIConfigStore>) => void;
21
+ /**
22
+ * WordPress API key, for use on the server only
23
+ **/
24
+ apiKey?: string;
17
25
  };
18
- export declare const useAPIConfig: import("zustand").UseBoundStore<import("zustand").StoreApi<APIConfigStore>>;
26
+ export declare const apiConfig: APIConfigStore;
27
+ //# sourceMappingURL=apiConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiConfig.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/runtime/apiConfig.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;QAII;IACJ,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CACxB,IAAI,EAAE,OAAO,GAAG,UAAU,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACd,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACvC;;OAEG;IACH,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,GAAG,UAAU,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACd,IAAI,CAAA;IACT,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAE9C;;QAEI;IACJ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,SAAS,gBAIpB,CAAA"}