@alepha/react 0.14.2 → 0.14.4

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 (57) hide show
  1. package/dist/auth/index.browser.js +29 -14
  2. package/dist/auth/index.browser.js.map +1 -1
  3. package/dist/auth/index.js +960 -195
  4. package/dist/auth/index.js.map +1 -1
  5. package/dist/core/index.d.ts +4 -0
  6. package/dist/core/index.d.ts.map +1 -1
  7. package/dist/core/index.js +7 -4
  8. package/dist/core/index.js.map +1 -1
  9. package/dist/head/index.browser.js +59 -19
  10. package/dist/head/index.browser.js.map +1 -1
  11. package/dist/head/index.d.ts +99 -560
  12. package/dist/head/index.d.ts.map +1 -1
  13. package/dist/head/index.js +92 -87
  14. package/dist/head/index.js.map +1 -1
  15. package/dist/router/index.browser.js +30 -15
  16. package/dist/router/index.browser.js.map +1 -1
  17. package/dist/router/index.d.ts +616 -192
  18. package/dist/router/index.d.ts.map +1 -1
  19. package/dist/router/index.js +961 -196
  20. package/dist/router/index.js.map +1 -1
  21. package/package.json +4 -4
  22. package/src/auth/__tests__/$auth.spec.ts +188 -0
  23. package/src/core/__tests__/Router.spec.tsx +169 -0
  24. package/src/core/hooks/useAction.browser.spec.tsx +569 -0
  25. package/src/core/hooks/useAction.ts +11 -0
  26. package/src/form/hooks/useForm.browser.spec.tsx +366 -0
  27. package/src/head/helpers/SeoExpander.spec.ts +203 -0
  28. package/src/head/hooks/useHead.spec.tsx +288 -0
  29. package/src/head/index.ts +11 -28
  30. package/src/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
  31. package/src/head/providers/BrowserHeadProvider.ts +25 -19
  32. package/src/head/providers/HeadProvider.ts +76 -10
  33. package/src/head/providers/ServerHeadProvider.ts +22 -138
  34. package/src/i18n/__tests__/integration.spec.tsx +239 -0
  35. package/src/i18n/components/Localize.spec.tsx +357 -0
  36. package/src/i18n/hooks/useI18n.browser.spec.tsx +438 -0
  37. package/src/i18n/providers/I18nProvider.spec.ts +389 -0
  38. package/src/router/__tests__/page-head-browser.browser.spec.ts +91 -0
  39. package/src/router/__tests__/page-head.spec.ts +44 -0
  40. package/src/router/__tests__/seo-head.spec.ts +121 -0
  41. package/src/router/atoms/ssrManifestAtom.ts +60 -0
  42. package/src/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
  43. package/src/router/errors/Redirection.ts +1 -1
  44. package/src/router/index.shared.ts +1 -0
  45. package/src/router/index.ts +16 -2
  46. package/src/router/primitives/$page.browser.spec.tsx +702 -0
  47. package/src/router/primitives/$page.spec.tsx +702 -0
  48. package/src/router/primitives/$page.ts +46 -10
  49. package/src/router/providers/ReactBrowserProvider.ts +14 -29
  50. package/src/router/providers/ReactBrowserRouterProvider.ts +5 -0
  51. package/src/router/providers/ReactPageProvider.ts +11 -4
  52. package/src/router/providers/ReactServerProvider.spec.tsx +316 -0
  53. package/src/router/providers/ReactServerProvider.ts +331 -315
  54. package/src/router/providers/ReactServerTemplateProvider.ts +775 -0
  55. package/src/router/providers/SSRManifestProvider.ts +365 -0
  56. package/src/router/services/ReactPageServerService.ts +5 -3
  57. package/src/router/services/ReactRouter.ts +3 -3
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Symbol key for SSR module preloading path.
3
+ * Using Symbol.for() allows the Vite plugin to inject this at build time.
4
+ * @internal
5
+ */
6
+ export const PAGE_PRELOAD_KEY = Symbol.for("alepha.page.preload");
@@ -10,7 +10,7 @@ import { AlephaError } from "alepha";
10
10
  * import { Redirection } from "@alepha/react";
11
11
  *
12
12
  * const MyPage = $page({
13
- * resolve: async () => {
13
+ * loader: async () => {
14
14
  * if (needRedirect) {
15
15
  * throw new Redirection("/new-path");
16
16
  * }
@@ -6,6 +6,7 @@ export { default as NestedView } from "./components/NestedView.tsx";
6
6
  export type * from "./components/NestedView.tsx";
7
7
  export { default as NotFound } from "./components/NotFound.tsx";
8
8
  export type * from "./components/NotFound.tsx";
9
+ export * from "./constants/PAGE_PRELOAD_KEY.ts";
9
10
  export * from "./contexts/RouterLayerContext.ts";
10
11
  export * from "./primitives/$page.ts";
11
12
  export * from "./errors/Redirection.ts";
@@ -7,6 +7,8 @@ import { AlephaServer, type ServerRequest } from "alepha/server";
7
7
  import type { ReactNode } from "react";
8
8
  import type { ReactHydrationState } from "./providers/ReactBrowserProvider.ts";
9
9
  import { ReactServerProvider } from "./providers/ReactServerProvider.ts";
10
+ import { ReactServerTemplateProvider } from "./providers/ReactServerTemplateProvider.ts";
11
+ import { SSRManifestProvider } from "./providers/SSRManifestProvider.ts";
10
12
  import { ReactPageServerService } from "./services/ReactPageServerService.ts";
11
13
  import { AlephaServerCache } from "alepha/server/cache";
12
14
  import { AlephaServerLinks } from "alepha/server/links";
@@ -19,6 +21,8 @@ export * from "./index.shared.ts";
19
21
  export * from "./providers/ReactPageProvider.ts";
20
22
  export * from "./providers/ReactBrowserProvider.ts";
21
23
  export * from "./providers/ReactServerProvider.ts";
24
+ export * from "./providers/ReactServerTemplateProvider.ts";
25
+ export * from "./providers/SSRManifestProvider.ts";
22
26
 
23
27
  // ---------------------------------------------------------------------------------------------------------------------
24
28
 
@@ -46,6 +50,9 @@ declare module "alepha" {
46
50
  // -----------------------------------------------------------------------------------------------------------------
47
51
  /**
48
52
  * Fires when the React application is being rendered on the browser.
53
+ *
54
+ * Note: this one is not really necessary, it's a hack because we need to isolate renderer from server code in order
55
+ * to avoid including react-dom/client in server bundles.
49
56
  */
50
57
  "react:browser:render": {
51
58
  root: HTMLElement;
@@ -94,7 +101,7 @@ declare module "alepha" {
94
101
  * - URL pattern matching with parameters (e.g., `/users/:id`)
95
102
  * - Nested routing with parent-child relationships
96
103
  * - Type-safe URL parameter and query string validation
97
- * - Server-side data fetching with the `resolve` function
104
+ * - Server-side data fetching with the `loader` function
98
105
  * - Lazy loading and code splitting
99
106
  * - Page animations and error handling
100
107
  *
@@ -107,7 +114,12 @@ export const AlephaReactRouter = $module({
107
114
  services: [
108
115
  ReactPageProvider,
109
116
  ReactPageService,
110
- ReactRouter, ReactServerProvider, ReactPageServerService],
117
+ ReactRouter,
118
+ ReactServerProvider,
119
+ ReactServerTemplateProvider,
120
+ SSRManifestProvider,
121
+ ReactPageServerService,
122
+ ],
111
123
  register: (alepha) =>
112
124
  alepha
113
125
  .with(AlephaReact)
@@ -119,6 +131,8 @@ export const AlephaReactRouter = $module({
119
131
  provide: ReactPageService,
120
132
  use: ReactPageServerService,
121
133
  })
134
+ .with(SSRManifestProvider)
135
+ .with(ReactServerTemplateProvider)
122
136
  .with(ReactServerProvider)
123
137
  .with(ReactPageProvider)
124
138
  .with(ReactRouter),