@alepha/react 0.11.11 → 0.12.0

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 (128) hide show
  1. package/README.md +1 -183
  2. package/dist/auth/index.browser.js +1460 -0
  3. package/dist/auth/index.browser.js.map +1 -0
  4. package/dist/auth/index.cjs +3647 -0
  5. package/dist/auth/index.cjs.map +1 -0
  6. package/dist/auth/index.d.cts +564 -0
  7. package/dist/auth/index.d.cts.map +1 -0
  8. package/dist/auth/index.d.ts +564 -0
  9. package/dist/auth/index.d.ts.map +1 -0
  10. package/dist/auth/index.js +3615 -0
  11. package/dist/auth/index.js.map +1 -0
  12. package/dist/{index.browser.js → core/index.browser.js} +36 -35
  13. package/dist/core/index.browser.js.map +1 -0
  14. package/dist/{index.cjs → core/index.cjs} +141 -140
  15. package/dist/core/index.cjs.map +1 -0
  16. package/dist/{index.d.cts → core/index.d.cts} +68 -68
  17. package/dist/core/index.d.cts.map +1 -0
  18. package/dist/{index.d.ts → core/index.d.ts} +68 -68
  19. package/dist/core/index.d.ts.map +1 -0
  20. package/dist/{index.js → core/index.js} +39 -38
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/form/index.cjs +2054 -0
  23. package/dist/form/index.cjs.map +1 -0
  24. package/dist/form/index.d.cts +211 -0
  25. package/dist/form/index.d.cts.map +1 -0
  26. package/dist/form/index.d.ts +211 -0
  27. package/dist/form/index.d.ts.map +1 -0
  28. package/dist/form/index.js +2026 -0
  29. package/dist/form/index.js.map +1 -0
  30. package/dist/head/index.browser.js +1503 -0
  31. package/dist/head/index.browser.js.map +1 -0
  32. package/dist/head/index.cjs +1908 -0
  33. package/dist/head/index.cjs.map +1 -0
  34. package/dist/head/index.d.cts +595 -0
  35. package/dist/head/index.d.cts.map +1 -0
  36. package/dist/head/index.d.ts +601 -0
  37. package/dist/head/index.d.ts.map +1 -0
  38. package/dist/head/index.js +1880 -0
  39. package/dist/head/index.js.map +1 -0
  40. package/dist/i18n/index.cjs +1886 -0
  41. package/dist/i18n/index.cjs.map +1 -0
  42. package/dist/i18n/index.d.cts +168 -0
  43. package/dist/i18n/index.d.cts.map +1 -0
  44. package/dist/i18n/index.d.ts +168 -0
  45. package/dist/i18n/index.d.ts.map +1 -0
  46. package/dist/i18n/index.js +1857 -0
  47. package/dist/i18n/index.js.map +1 -0
  48. package/dist/websocket/index.cjs +1774 -0
  49. package/dist/websocket/index.cjs.map +1 -0
  50. package/dist/websocket/index.d.cts +118 -0
  51. package/dist/websocket/index.d.cts.map +1 -0
  52. package/dist/websocket/index.d.ts +118 -0
  53. package/dist/websocket/index.d.ts.map +1 -0
  54. package/dist/websocket/index.js +1750 -0
  55. package/dist/websocket/index.js.map +1 -0
  56. package/package.json +89 -67
  57. package/src/auth/descriptors/$auth.ts +436 -0
  58. package/src/auth/descriptors/$authApple.ts +8 -0
  59. package/src/auth/descriptors/$authGithub.ts +81 -0
  60. package/src/auth/descriptors/$authGoogle.ts +38 -0
  61. package/src/auth/errors/SessionExpiredError.ts +6 -0
  62. package/src/auth/hooks/useAuth.ts +31 -0
  63. package/src/auth/index.browser.ts +16 -0
  64. package/src/auth/index.shared.ts +3 -0
  65. package/src/auth/index.ts +47 -0
  66. package/src/auth/providers/ReactAuthProvider.ts +629 -0
  67. package/src/auth/schemas/tokenResponseSchema.ts +11 -0
  68. package/src/auth/schemas/tokensSchema.ts +21 -0
  69. package/src/auth/schemas/userinfoResponseSchema.ts +10 -0
  70. package/src/auth/services/ReactAuth.ts +124 -0
  71. package/src/{components → core/components}/ErrorViewer.tsx +3 -2
  72. package/src/{components → core/components}/NestedView.tsx +1 -1
  73. package/src/{contexts → core/contexts}/AlephaContext.ts +1 -1
  74. package/src/{descriptors → core/descriptors}/$page.ts +4 -4
  75. package/src/{hooks → core/hooks}/useAction.ts +1 -1
  76. package/src/{hooks → core/hooks}/useAlepha.ts +1 -1
  77. package/src/{hooks → core/hooks}/useClient.ts +1 -1
  78. package/src/{hooks → core/hooks}/useEvents.ts +1 -1
  79. package/src/{hooks → core/hooks}/useInject.ts +1 -1
  80. package/src/{hooks → core/hooks}/useQueryParams.ts +1 -1
  81. package/src/{hooks → core/hooks}/useRouterState.ts +1 -1
  82. package/src/{hooks → core/hooks}/useSchema.ts +3 -3
  83. package/src/{hooks → core/hooks}/useStore.ts +2 -2
  84. package/src/{index.browser.ts → core/index.browser.ts} +4 -4
  85. package/src/{index.ts → core/index.ts} +6 -6
  86. package/src/{providers → core/providers}/ReactBrowserProvider.ts +6 -6
  87. package/src/{providers → core/providers}/ReactBrowserRendererProvider.ts +2 -2
  88. package/src/{providers → core/providers}/ReactBrowserRouterProvider.ts +3 -3
  89. package/src/{providers → core/providers}/ReactPageProvider.ts +3 -3
  90. package/src/{providers → core/providers}/ReactServerProvider.ts +7 -7
  91. package/src/{services → core/services}/ReactPageServerService.ts +2 -2
  92. package/src/{services → core/services}/ReactPageService.ts +1 -1
  93. package/src/{services → core/services}/ReactRouter.ts +1 -1
  94. package/src/form/components/FormState.tsx +17 -0
  95. package/src/form/hooks/useForm.ts +47 -0
  96. package/src/form/hooks/useFormState.ts +130 -0
  97. package/src/form/index.ts +38 -0
  98. package/src/form/services/FormModel.ts +548 -0
  99. package/src/head/descriptors/$head.ts +25 -0
  100. package/src/head/hooks/useHead.ts +62 -0
  101. package/src/head/index.browser.ts +25 -0
  102. package/src/head/index.ts +47 -0
  103. package/src/head/interfaces/Head.ts +46 -0
  104. package/src/head/providers/BrowserHeadProvider.ts +105 -0
  105. package/src/head/providers/HeadProvider.ts +73 -0
  106. package/src/head/providers/ServerHeadProvider.ts +109 -0
  107. package/src/i18n/README.md +76 -0
  108. package/src/i18n/components/Localize.tsx +35 -0
  109. package/src/i18n/descriptors/$dictionary.ts +65 -0
  110. package/src/i18n/hooks/useI18n.ts +18 -0
  111. package/src/i18n/index.ts +34 -0
  112. package/src/i18n/providers/I18nProvider.ts +277 -0
  113. package/src/websocket/hooks/useRoom.tsx +223 -0
  114. package/src/websocket/index.ts +7 -0
  115. package/dist/index.browser.js.map +0 -1
  116. package/dist/index.cjs.map +0 -1
  117. package/dist/index.d.cts.map +0 -1
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/index.js.map +0 -1
  120. /package/src/{components → core/components}/ClientOnly.tsx +0 -0
  121. /package/src/{components → core/components}/ErrorBoundary.tsx +0 -0
  122. /package/src/{components → core/components}/Link.tsx +0 -0
  123. /package/src/{components → core/components}/NotFound.tsx +0 -0
  124. /package/src/{contexts → core/contexts}/RouterLayerContext.ts +0 -0
  125. /package/src/{errors → core/errors}/Redirection.ts +0 -0
  126. /package/src/{hooks → core/hooks}/useActive.ts +0 -0
  127. /package/src/{hooks → core/hooks}/useRouter.ts +0 -0
  128. /package/src/{index.shared.ts → core/index.shared.ts} +0 -0
@@ -1,18 +1,18 @@
1
- import { $atom, $env, $hook, $inject, $module, $use, Alepha, AlephaError, Atom, Descriptor, KIND, createDescriptor, t } from "@alepha/core";
2
- import { AlephaDateTime, DateTimeProvider } from "@alepha/datetime";
3
- import { AlephaServer, HttpClient, ServerProvider, ServerRouterProvider, ServerTimingProvider } from "@alepha/server";
4
- import { AlephaServerCache } from "@alepha/server-cache";
5
- import { AlephaServerLinks, LinkProvider, ServerLinksProvider } from "@alepha/server-links";
6
- import { $logger } from "@alepha/logger";
1
+ import { $atom, $env, $hook, $inject, $module, $use, Alepha, AlephaError, Atom, Descriptor, KIND, createDescriptor, t } from "alepha";
2
+ import { AlephaDateTime, DateTimeProvider } from "alepha/datetime";
3
+ import { AlephaServer, HttpClient, ServerProvider, ServerRouterProvider, ServerTimingProvider } from "alepha/server";
4
+ import { AlephaServerCache } from "alepha/server/cache";
5
+ import { AlephaServerLinks, LinkProvider, ServerLinksProvider } from "alepha/server/links";
6
+ import { $logger } from "alepha/logger";
7
7
  import React, { StrictMode, createContext, createElement, memo, use, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import { existsSync } from "node:fs";
10
10
  import { join } from "node:path";
11
- import { ServerStaticProvider } from "@alepha/server-static";
11
+ import { ServerStaticProvider } from "alepha/server/static";
12
12
  import { renderToString } from "react-dom/server";
13
- import { RouterProvider } from "@alepha/router";
13
+ import { RouterProvider } from "alepha/router";
14
14
 
15
- //#region src/services/ReactPageService.ts
15
+ //#region src/core/services/ReactPageService.ts
16
16
  var ReactPageService = class {
17
17
  fetch(pathname, options = {}) {
18
18
  throw new AlephaError("Fetch is not available for this environment.");
@@ -23,7 +23,7 @@ var ReactPageService = class {
23
23
  };
24
24
 
25
25
  //#endregion
26
- //#region src/descriptors/$page.ts
26
+ //#region src/core/descriptors/$page.ts
27
27
  /**
28
28
  * Main descriptor for defining a React route in the application.
29
29
  *
@@ -148,7 +148,7 @@ var PageDescriptor = class extends Descriptor {
148
148
  $page[KIND] = PageDescriptor;
149
149
 
150
150
  //#endregion
151
- //#region src/components/ClientOnly.tsx
151
+ //#region src/core/components/ClientOnly.tsx
152
152
  /**
153
153
  * A small utility component that renders its children only on the client side.
154
154
  *
@@ -168,7 +168,7 @@ const ClientOnly = (props) => {
168
168
  var ClientOnly_default = ClientOnly;
169
169
 
170
170
  //#endregion
171
- //#region src/components/ErrorViewer.tsx
171
+ //#region src/core/components/ErrorViewer.tsx
172
172
  const ErrorViewer = ({ error, alepha }) => {
173
173
  const [expanded, setExpanded] = useState(false);
174
174
  if (alepha.isProduction()) return /* @__PURE__ */ jsx(ErrorViewerProduction, {});
@@ -254,6 +254,7 @@ const ErrorViewer = ({ error, alepha }) => {
254
254
  ] }), stackLines.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
255
255
  style: styles.sectionHeader,
256
256
  children: [/* @__PURE__ */ jsx("span", { children: "Stack trace" }), /* @__PURE__ */ jsx("button", {
257
+ type: "button",
257
258
  onClick: () => copyToClipboard(error.stack),
258
259
  style: styles.copyButton,
259
260
  children: "Copy all"
@@ -315,11 +316,11 @@ const ErrorViewerProduction = () => {
315
316
  };
316
317
 
317
318
  //#endregion
318
- //#region src/contexts/RouterLayerContext.ts
319
+ //#region src/core/contexts/RouterLayerContext.ts
319
320
  const RouterLayerContext = createContext(void 0);
320
321
 
321
322
  //#endregion
322
- //#region src/errors/Redirection.ts
323
+ //#region src/core/errors/Redirection.ts
323
324
  /**
324
325
  * Used for Redirection during the page loading.
325
326
  *
@@ -334,11 +335,11 @@ var Redirection = class extends Error {
334
335
  };
335
336
 
336
337
  //#endregion
337
- //#region src/contexts/AlephaContext.ts
338
+ //#region src/core/contexts/AlephaContext.ts
338
339
  const AlephaContext = createContext(void 0);
339
340
 
340
341
  //#endregion
341
- //#region src/hooks/useAlepha.ts
342
+ //#region src/core/hooks/useAlepha.ts
342
343
  /**
343
344
  * Main Alepha hook.
344
345
  *
@@ -358,7 +359,7 @@ const useAlepha = () => {
358
359
  };
359
360
 
360
361
  //#endregion
361
- //#region src/hooks/useEvents.ts
362
+ //#region src/core/hooks/useEvents.ts
362
363
  /**
363
364
  * Allow subscribing to multiple Alepha events. See {@link Hooks} for available events.
364
365
  *
@@ -395,7 +396,7 @@ const useEvents = (opts, deps) => {
395
396
  };
396
397
 
397
398
  //#endregion
398
- //#region src/hooks/useStore.ts
399
+ //#region src/core/hooks/useStore.ts
399
400
  function useStore(target, defaultValue) {
400
401
  const alepha = useAlepha();
401
402
  useMemo(() => {
@@ -415,7 +416,7 @@ function useStore(target, defaultValue) {
415
416
  }
416
417
 
417
418
  //#endregion
418
- //#region src/hooks/useRouterState.ts
419
+ //#region src/core/hooks/useRouterState.ts
419
420
  const useRouterState = () => {
420
421
  const [state] = useStore("alepha.react.router.state");
421
422
  if (!state) throw new AlephaError("Missing react router state");
@@ -423,7 +424,7 @@ const useRouterState = () => {
423
424
  };
424
425
 
425
426
  //#endregion
426
- //#region src/components/ErrorBoundary.tsx
427
+ //#region src/core/components/ErrorBoundary.tsx
427
428
  /**
428
429
  * A reusable error boundary for catching rendering errors
429
430
  * in any part of the React component tree.
@@ -454,7 +455,7 @@ var ErrorBoundary = class extends React.Component {
454
455
  var ErrorBoundary_default = ErrorBoundary;
455
456
 
456
457
  //#endregion
457
- //#region src/components/NestedView.tsx
458
+ //#region src/core/components/NestedView.tsx
458
459
  /**
459
460
  * A component that renders the current view of the nested router layer.
460
461
  *
@@ -462,7 +463,7 @@ var ErrorBoundary_default = ErrorBoundary;
462
463
  *
463
464
  * @example
464
465
  * ```tsx
465
- * import { NestedView } from "alepha/react";
466
+ * import { NestedView } from "@alepha/react";
466
467
  *
467
468
  * class App {
468
469
  * parent = $page({
@@ -576,7 +577,7 @@ function parseAnimation(animationLike, state, type = "enter") {
576
577
  }
577
578
 
578
579
  //#endregion
579
- //#region src/components/NotFound.tsx
580
+ //#region src/core/components/NotFound.tsx
580
581
  function NotFoundPage(props) {
581
582
  return /* @__PURE__ */ jsx("div", {
582
583
  style: {
@@ -601,7 +602,7 @@ function NotFoundPage(props) {
601
602
  }
602
603
 
603
604
  //#endregion
604
- //#region src/providers/ReactPageProvider.ts
605
+ //#region src/core/providers/ReactPageProvider.ts
605
606
  const envSchema$2 = t.object({ REACT_STRICT_MODE: t.boolean({ default: true }) });
606
607
  var ReactPageProvider = class {
607
608
  log = $logger();
@@ -924,7 +925,7 @@ const isPageRoute = (it) => {
924
925
  };
925
926
 
926
927
  //#endregion
927
- //#region src/providers/ReactServerProvider.ts
928
+ //#region src/core/providers/ReactServerProvider.ts
928
929
  const envSchema$1 = t.object({
929
930
  REACT_SSR_ENABLED: t.optional(t.boolean()),
930
931
  REACT_ROOT_ID: t.text({ default: "root" }),
@@ -1230,7 +1231,7 @@ var ReactServerProvider = class {
1230
1231
  };
1231
1232
 
1232
1233
  //#endregion
1233
- //#region src/services/ReactPageServerService.ts
1234
+ //#region src/core/services/ReactPageServerService.ts
1234
1235
  var ReactPageServerService = class extends ReactPageService {
1235
1236
  reactServerProvider = $inject(ReactServerProvider);
1236
1237
  serverProvider = $inject(ServerProvider);
@@ -1254,7 +1255,7 @@ var ReactPageServerService = class extends ReactPageService {
1254
1255
  };
1255
1256
 
1256
1257
  //#endregion
1257
- //#region src/providers/ReactBrowserRouterProvider.ts
1258
+ //#region src/core/providers/ReactBrowserRouterProvider.ts
1258
1259
  var ReactBrowserRouterProvider = class extends RouterProvider {
1259
1260
  log = $logger();
1260
1261
  alepha = $inject(Alepha);
@@ -1335,7 +1336,7 @@ var ReactBrowserRouterProvider = class extends RouterProvider {
1335
1336
  };
1336
1337
 
1337
1338
  //#endregion
1338
- //#region src/providers/ReactBrowserProvider.ts
1339
+ //#region src/core/providers/ReactBrowserProvider.ts
1339
1340
  const envSchema = t.object({ REACT_ROOT_ID: t.text({ default: "root" }) });
1340
1341
  /**
1341
1342
  * React browser renderer configuration atom
@@ -1500,7 +1501,7 @@ var ReactBrowserProvider = class {
1500
1501
  };
1501
1502
 
1502
1503
  //#endregion
1503
- //#region src/services/ReactRouter.ts
1504
+ //#region src/core/services/ReactRouter.ts
1504
1505
  var ReactRouter = class {
1505
1506
  alepha = $inject(Alepha);
1506
1507
  pageApi = $inject(ReactPageProvider);
@@ -1613,7 +1614,7 @@ var ReactRouter = class {
1613
1614
  };
1614
1615
 
1615
1616
  //#endregion
1616
- //#region src/hooks/useInject.ts
1617
+ //#region src/core/hooks/useInject.ts
1617
1618
  /**
1618
1619
  * Hook to inject a service instance.
1619
1620
  * It's a wrapper of `useAlepha().inject(service)` with a memoization.
@@ -1624,7 +1625,7 @@ const useInject = (service) => {
1624
1625
  };
1625
1626
 
1626
1627
  //#endregion
1627
- //#region src/hooks/useRouter.ts
1628
+ //#region src/core/hooks/useRouter.ts
1628
1629
  /**
1629
1630
  * Use this hook to access the React Router instance.
1630
1631
  *
@@ -1644,7 +1645,7 @@ const useRouter = () => {
1644
1645
  };
1645
1646
 
1646
1647
  //#endregion
1647
- //#region src/components/Link.tsx
1648
+ //#region src/core/components/Link.tsx
1648
1649
  const Link = (props) => {
1649
1650
  const router = useRouter();
1650
1651
  return /* @__PURE__ */ jsx("a", {
@@ -1656,7 +1657,7 @@ const Link = (props) => {
1656
1657
  var Link_default = Link;
1657
1658
 
1658
1659
  //#endregion
1659
- //#region src/hooks/useAction.ts
1660
+ //#region src/core/hooks/useAction.ts
1660
1661
  /**
1661
1662
  * Hook for handling async actions with automatic error handling and event emission.
1662
1663
  *
@@ -1883,7 +1884,7 @@ function useAction(options, deps) {
1883
1884
  }
1884
1885
 
1885
1886
  //#endregion
1886
- //#region src/hooks/useActive.ts
1887
+ //#region src/core/hooks/useActive.ts
1887
1888
  const useActive = (args) => {
1888
1889
  const router = useRouter();
1889
1890
  const [isPending, setPending] = useState(false);
@@ -1916,7 +1917,7 @@ const useActive = (args) => {
1916
1917
  };
1917
1918
 
1918
1919
  //#endregion
1919
- //#region src/hooks/useClient.ts
1920
+ //#region src/core/hooks/useClient.ts
1920
1921
  /**
1921
1922
  * Hook to get a virtual client for the specified scope.
1922
1923
  *
@@ -1927,7 +1928,7 @@ const useClient = (scope) => {
1927
1928
  };
1928
1929
 
1929
1930
  //#endregion
1930
- //#region src/hooks/useQueryParams.ts
1931
+ //#region src/core/hooks/useQueryParams.ts
1931
1932
  /**
1932
1933
  * Not well tested. Use with caution.
1933
1934
  */
@@ -1962,7 +1963,7 @@ const decode = (alepha, schema, data) => {
1962
1963
  };
1963
1964
 
1964
1965
  //#endregion
1965
- //#region src/hooks/useSchema.ts
1966
+ //#region src/core/hooks/useSchema.ts
1966
1967
  const useSchema = (action) => {
1967
1968
  const name = action.name;
1968
1969
  const alepha = useAlepha();
@@ -1996,7 +1997,7 @@ const ssrSchemaLoading = (alepha, name) => {
1996
1997
  };
1997
1998
 
1998
1999
  //#endregion
1999
- //#region src/index.ts
2000
+ //#region src/core/index.ts
2000
2001
  /**
2001
2002
  * Provides full-stack React development with declarative routing, server-side rendering, and client-side hydration.
2002
2003
  *