netjes 0.0.0-stage → 0.0.2

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 (222) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -2
  3. package/bin/netjes.mjs +13 -0
  4. package/cli/agents.mjs +66 -0
  5. package/cli/commands.mjs +467 -0
  6. package/cli/help.mjs +89 -0
  7. package/cli/info.mjs +454 -0
  8. package/cli/main.mjs +167 -0
  9. package/cli/packages.mjs +19 -0
  10. package/cli/process-io.mjs +163 -0
  11. package/cli/routes.mjs +31 -0
  12. package/cli/scaffold.mjs +193 -0
  13. package/cli/suggest.mjs +50 -0
  14. package/cli/terminal.mjs +40 -0
  15. package/dist/actions.d.ts +98 -0
  16. package/dist/actions.d.ts.map +1 -0
  17. package/dist/actions.js +176 -0
  18. package/dist/actions.js.map +1 -0
  19. package/dist/client-entry.d.ts +2 -0
  20. package/dist/client-entry.d.ts.map +1 -0
  21. package/dist/client-entry.js +126 -0
  22. package/dist/client-entry.js.map +1 -0
  23. package/dist/deferred.d.ts +39 -0
  24. package/dist/deferred.d.ts.map +1 -0
  25. package/dist/deferred.js +123 -0
  26. package/dist/deferred.js.map +1 -0
  27. package/dist/define-page.d.ts +15 -0
  28. package/dist/define-page.d.ts.map +1 -0
  29. package/dist/define-page.js +27 -0
  30. package/dist/define-page.js.map +1 -0
  31. package/dist/document.d.ts +19 -0
  32. package/dist/document.d.ts.map +1 -0
  33. package/dist/document.js +17 -0
  34. package/dist/document.js.map +1 -0
  35. package/dist/draft-mode.d.ts +5 -0
  36. package/dist/draft-mode.d.ts.map +1 -0
  37. package/dist/draft-mode.js +6 -0
  38. package/dist/draft-mode.js.map +1 -0
  39. package/dist/dynamic.d.ts +20 -0
  40. package/dist/dynamic.d.ts.map +1 -0
  41. package/dist/dynamic.js +37 -0
  42. package/dist/dynamic.js.map +1 -0
  43. package/dist/form-data.d.ts +10 -0
  44. package/dist/form-data.d.ts.map +1 -0
  45. package/dist/form-data.js +10 -0
  46. package/dist/form-data.js.map +1 -0
  47. package/dist/form.d.ts +35 -0
  48. package/dist/form.d.ts.map +1 -0
  49. package/dist/form.js +80 -0
  50. package/dist/form.js.map +1 -0
  51. package/dist/href.d.ts +25 -0
  52. package/dist/href.d.ts.map +1 -0
  53. package/dist/href.js +71 -0
  54. package/dist/href.js.map +1 -0
  55. package/dist/image.d.ts +36 -0
  56. package/dist/image.d.ts.map +1 -0
  57. package/dist/image.js +60 -0
  58. package/dist/image.js.map +1 -0
  59. package/dist/index.d.ts +18 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +14 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/link.d.ts +17 -0
  64. package/dist/link.d.ts.map +1 -0
  65. package/dist/link.js +46 -0
  66. package/dist/link.js.map +1 -0
  67. package/dist/locale.d.ts +3 -0
  68. package/dist/locale.d.ts.map +1 -0
  69. package/dist/locale.js +6 -0
  70. package/dist/locale.js.map +1 -0
  71. package/dist/metadata.d.ts +83 -0
  72. package/dist/metadata.d.ts.map +1 -0
  73. package/dist/metadata.js +100 -0
  74. package/dist/metadata.js.map +1 -0
  75. package/dist/modules.d.ts +74 -0
  76. package/dist/modules.d.ts.map +1 -0
  77. package/dist/modules.js +85 -0
  78. package/dist/modules.js.map +1 -0
  79. package/dist/nonce.d.ts +8 -0
  80. package/dist/nonce.d.ts.map +1 -0
  81. package/dist/nonce.js +12 -0
  82. package/dist/nonce.js.map +1 -0
  83. package/dist/payload.d.ts +171 -0
  84. package/dist/payload.d.ts.map +1 -0
  85. package/dist/payload.js +273 -0
  86. package/dist/payload.js.map +1 -0
  87. package/dist/public-config.d.ts +11 -0
  88. package/dist/public-config.d.ts.map +1 -0
  89. package/dist/public-config.js +10 -0
  90. package/dist/public-config.js.map +1 -0
  91. package/dist/query.d.ts +22 -0
  92. package/dist/query.d.ts.map +1 -0
  93. package/dist/query.js +68 -0
  94. package/dist/query.js.map +1 -0
  95. package/dist/render-cleanup.d.ts +6 -0
  96. package/dist/render-cleanup.d.ts.map +1 -0
  97. package/dist/render-cleanup.js +7 -0
  98. package/dist/render-cleanup.js.map +1 -0
  99. package/dist/root.d.ts +12 -0
  100. package/dist/root.d.ts.map +1 -0
  101. package/dist/root.js +26 -0
  102. package/dist/root.js.map +1 -0
  103. package/dist/route-tree.d.ts +56 -0
  104. package/dist/route-tree.d.ts.map +1 -0
  105. package/dist/route-tree.js +86 -0
  106. package/dist/route-tree.js.map +1 -0
  107. package/dist/router.d.ts +118 -0
  108. package/dist/router.d.ts.map +1 -0
  109. package/dist/router.js +938 -0
  110. package/dist/router.js.map +1 -0
  111. package/dist/schema.d.ts +35 -0
  112. package/dist/schema.d.ts.map +1 -0
  113. package/dist/schema.js +74 -0
  114. package/dist/schema.js.map +1 -0
  115. package/dist/script.d.ts +23 -0
  116. package/dist/script.d.ts.map +1 -0
  117. package/dist/script.js +89 -0
  118. package/dist/script.js.map +1 -0
  119. package/dist/server-entry.d.ts +2 -0
  120. package/dist/server-entry.d.ts.map +1 -0
  121. package/dist/server-entry.js +4 -0
  122. package/dist/server-entry.js.map +1 -0
  123. package/dist/server-render.d.ts +19 -0
  124. package/dist/server-render.d.ts.map +1 -0
  125. package/dist/server-render.js +193 -0
  126. package/dist/server-render.js.map +1 -0
  127. package/dist/testing-setup.d.ts +2 -0
  128. package/dist/testing-setup.d.ts.map +1 -0
  129. package/dist/testing-setup.js +8 -0
  130. package/dist/testing-setup.js.map +1 -0
  131. package/dist/testing.d.ts +76 -0
  132. package/dist/testing.d.ts.map +1 -0
  133. package/dist/testing.js +106 -0
  134. package/dist/testing.js.map +1 -0
  135. package/dist/vitals-config.d.ts +4 -0
  136. package/dist/vitals-config.d.ts.map +1 -0
  137. package/dist/vitals-config.js +5 -0
  138. package/dist/vitals-config.js.map +1 -0
  139. package/dist/vitals.d.ts +13 -0
  140. package/dist/vitals.d.ts.map +1 -0
  141. package/dist/vitals.js +60 -0
  142. package/dist/vitals.js.map +1 -0
  143. package/dist/zod.d.ts +19 -0
  144. package/dist/zod.d.ts.map +1 -0
  145. package/dist/zod.js +65 -0
  146. package/dist/zod.js.map +1 -0
  147. package/package.json +147 -4
  148. package/sidecar/server.mjs +325 -0
  149. package/skills/netjes/SKILL.md +93 -0
  150. package/skills/netjes/references/caching-and-streaming.md +68 -0
  151. package/skills/netjes/references/data-and-actions.md +98 -0
  152. package/skills/netjes/references/deployment.md +57 -0
  153. package/skills/netjes/references/routing.md +65 -0
  154. package/skills/netjes/references/testing.md +57 -0
  155. package/src/actions.tsx +241 -0
  156. package/src/client-entry.tsx +126 -0
  157. package/src/deferred.ts +134 -0
  158. package/src/define-page.tsx +41 -0
  159. package/src/document.tsx +49 -0
  160. package/src/draft-mode.ts +6 -0
  161. package/src/dynamic.tsx +64 -0
  162. package/src/form-data.ts +10 -0
  163. package/src/form.tsx +122 -0
  164. package/src/href.ts +79 -0
  165. package/src/image.tsx +91 -0
  166. package/src/index.ts +40 -0
  167. package/src/link.tsx +73 -0
  168. package/src/locale.ts +6 -0
  169. package/src/metadata.tsx +181 -0
  170. package/src/modules.ts +133 -0
  171. package/src/nonce.tsx +14 -0
  172. package/src/payload.ts +405 -0
  173. package/src/public-config.tsx +19 -0
  174. package/src/query.tsx +82 -0
  175. package/src/render-cleanup.ts +7 -0
  176. package/src/root.tsx +39 -0
  177. package/src/route-tree.tsx +139 -0
  178. package/src/router.tsx +1188 -0
  179. package/src/schema.ts +98 -0
  180. package/src/script.tsx +103 -0
  181. package/src/server-entry.tsx +4 -0
  182. package/src/server-render.tsx +223 -0
  183. package/src/testing-setup.ts +8 -0
  184. package/src/testing.tsx +177 -0
  185. package/src/virtual.d.ts +12 -0
  186. package/src/vitals-config.ts +6 -0
  187. package/src/vitals.tsx +68 -0
  188. package/src/zod.ts +72 -0
  189. package/template/.dockerignore +11 -0
  190. package/template/Dockerfile +58 -0
  191. package/template/Features/Home/HomePage.cs +32 -0
  192. package/template/Program.cs +28 -0
  193. package/template/Properties/launchSettings.json +13 -0
  194. package/template/README.md +24 -0
  195. package/template/SiteProps.cs +4 -0
  196. package/template/_AGENTS.md +64 -0
  197. package/template/_CLAUDE.md +1 -0
  198. package/template/__NAME__.csproj +11 -0
  199. package/template/_gitattributes +2 -0
  200. package/template/_gitignore +11 -0
  201. package/template/app/about/page.tsx +17 -0
  202. package/template/app/error.tsx +15 -0
  203. package/template/app/layout.tsx +33 -0
  204. package/template/app/not-found.tsx +14 -0
  205. package/template/app/page.tsx +14 -0
  206. package/template/appsettings.Development.json +3 -0
  207. package/template/appsettings.json +9 -0
  208. package/template/components/Greeting.test.tsx +25 -0
  209. package/template/components/Greeting.tsx +26 -0
  210. package/template/components/HelloForm.test.tsx +27 -0
  211. package/template/components/HelloForm.tsx +34 -0
  212. package/template/docker-compose.override.yml +15 -0
  213. package/template/docker-compose.prod.yml +26 -0
  214. package/template/docker-compose.yml +16 -0
  215. package/template/generated/netjes.ts +73 -0
  216. package/template/package.json +36 -0
  217. package/template/public/favicon.svg +6 -0
  218. package/template/styles/global.css +7 -0
  219. package/template/tsconfig.json +19 -0
  220. package/template/vite.config.ts +7 -0
  221. package/vite/plugin.d.ts +29 -0
  222. package/vite/plugin.mjs +291 -0
package/dist/root.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { ModuleLoader, RouteModules } from './modules.ts';
2
+ import type { InitialPayload } from './payload.ts';
3
+ type RootProps = {
4
+ payload: InitialPayload;
5
+ modules: RouteModules;
6
+ loader: ModuleLoader;
7
+ dataJson: string;
8
+ };
9
+ /** The same tree on the server and in the browser, so hydration matches. */
10
+ export declare function Root({ payload, modules, loader, dataJson }: RootProps): import("react").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,cAAc,CAAC;AAIjE,KAAK,SAAS,GAAG;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAY5G,4EAA4E;AAC5E,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,SAAS,+BAcrE"}
package/dist/root.js ADDED
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { QueryShell } from 'virtual:netjes/query';
3
+ import { Document } from './document.js';
4
+ import { ImageConfigProvider } from './image.js';
5
+ import { NonceProvider } from './nonce.js';
6
+ import { PublicConfigProvider } from './public-config.js';
7
+ import { RouterProvider } from './router.js';
8
+ import { VitalsEndpointProvider } from './vitals-config.js';
9
+ /** App-wide configuration the server sends with the first document (it does not change between navigations). */
10
+ function RootProviders({ info, children }) {
11
+ let element = children;
12
+ if (info.images)
13
+ element = _jsx(ImageConfigProvider, { value: info.images, children: element });
14
+ if (info.publicConfig)
15
+ element = _jsx(PublicConfigProvider, { value: info.publicConfig, children: element });
16
+ if (info.nonce)
17
+ element = _jsx(NonceProvider, { value: info.nonce, children: element });
18
+ if (info.vitalsEndpoint)
19
+ element = _jsx(VitalsEndpointProvider, { value: info.vitalsEndpoint, children: element });
20
+ return element;
21
+ }
22
+ /** The same tree on the server and in the browser, so hydration matches. */
23
+ export function Root({ payload, modules, loader, dataJson }) {
24
+ return (_jsx(Document, { info: payload.document, dataJson: dataJson, children: _jsx(RootProviders, { info: payload.document, children: _jsx(RouterProvider, { initial: payload, initialModules: modules, loader: loader, errorPage: payload.document.errorPage, shell: QueryShell }) }) }));
25
+ }
26
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAqB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAc,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,gHAAgH;AAChH,SAAS,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAA+C;IACpF,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,KAAC,mBAAmB,IAAC,KAAK,EAAE,IAAI,CAAC,MAAM,YAAG,OAAO,GAAuB,CAAC;IACpG,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,GAAG,KAAC,oBAAoB,IAAC,KAAK,EAAE,IAAI,CAAC,YAAY,YAAG,OAAO,GAAwB,CAAC;IAClH,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,KAAC,aAAa,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YAAG,OAAO,GAAiB,CAAC;IACtF,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,GAAG,KAAC,sBAAsB,IAAC,KAAK,EAAE,IAAI,CAAC,cAAc,YAAG,OAAO,GAA0B,CAAC;IAC1H,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAa;IACpE,OAAO,CACL,KAAC,QAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,YAClD,KAAC,aAAa,IAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,YACnC,KAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,EACrC,KAAK,EAAE,UAAU,GACjB,GACY,GACP,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { Component, type ReactElement, type ReactNode } from 'react';
2
+ import { type Metadata } from './metadata.tsx';
3
+ import type { RouteModules } from './modules.ts';
4
+ import type { PageKind, Params, SegmentRef } from './payload.ts';
5
+ export type { ErrorPageProps } from './modules.ts';
6
+ type RouteTreeProps = {
7
+ modules: RouteModules;
8
+ /** The payload's segments, for their loader props; matched to `modules.segments` by position. */
9
+ segments?: readonly SegmentRef[];
10
+ props: Record<string, unknown>;
11
+ params: Params;
12
+ status: number;
13
+ pageKind?: PageKind | undefined;
14
+ /** Remounts the page and templates (not layouts) when it changes, so page state does not leak between URLs. */
15
+ pageKey: string;
16
+ /** What `reset` does on an error page the server chose: load the page again. */
17
+ retry?: () => void;
18
+ /** Metadata from the C# loader. */
19
+ metadata?: Metadata | undefined;
20
+ };
21
+ /** How many URL segments the layout rendering here covers: what useSelectedLayoutSegment(s) count from. */
22
+ export declare const LayoutDepthContext: import("react").Context<number>;
23
+ type BoundaryProps = {
24
+ resetKey: unknown;
25
+ fallback: (error: unknown, reset: () => void) => ReactNode;
26
+ children: ReactNode;
27
+ };
28
+ /** Catches render errors below it; resets when `resetKey` changes (a navigation) or `reset` is called. */
29
+ export declare class ErrorBoundary extends Component<BoundaryProps, {
30
+ error: unknown;
31
+ failed: boolean;
32
+ }> {
33
+ state: {
34
+ error: unknown;
35
+ failed: boolean;
36
+ };
37
+ static getDerivedStateFromError(error: unknown): {
38
+ error: unknown;
39
+ failed: boolean;
40
+ };
41
+ componentDidUpdate(previous: BoundaryProps): void;
42
+ private readonly reset;
43
+ render(): ReactNode;
44
+ }
45
+ /**
46
+ * The page wrapped in its segments, outermost first. Per segment, as in the Next.js App Router:
47
+ * layout > template > error boundary > Suspense (loading) > the next segment or the page. Layouts keep their state
48
+ * while the page underneath changes; templates remount.
49
+ */
50
+ export declare function RouteTree({ modules, segments, props, params, status, pageKind, pageKey, retry, metadata }: RouteTreeProps): ReactElement;
51
+ /** Shown for 404s and errors when the app has no not-found or error page of its own. */
52
+ export declare function BuiltInPage({ status, props }: {
53
+ status: number;
54
+ props: Record<string, unknown>;
55
+ }): import("react").JSX.Element;
56
+ //# sourceMappingURL=route-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-tree.d.ts","sourceRoot":"","sources":["../src/route-tree.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAC9F,OAAO,EAAE,KAAK,QAAQ,EAAiC,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAiC,YAAY,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEjE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,+GAA+G;IAC/G,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,iCAAmB,CAAC;AAUnD,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAE5H,0GAA0G;AAC1G,qBAAa,aAAc,SAAQ,SAAS,CAAC,aAAa,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;IACrF,KAAK;QAAK,KAAK,EAAU,OAAO;QAAE,MAAM;MAAU;IAE3D,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO;;;MAE7C;IAEQ,kBAAkB,CAAC,QAAQ,EAAE,aAAa,QAElD;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;IAEpE,MAAM,cAEd;CACF;AAcD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,QAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,GAAG,YAAY,CAoC7I;AAWD,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,+BAkBhG"}
@@ -0,0 +1,86 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Component, Suspense, createContext } from 'react';
3
+ import { MetadataTags, resolveMetadata } from './metadata.js';
4
+ /** How many URL segments the layout rendering here covers: what useSelectedLayoutSegment(s) count from. */
5
+ export const LayoutDepthContext = createContext(0);
6
+ /**
7
+ * URL depth of a segment folder when the server did not send it (special pages): its folders after the router root,
8
+ * route groups not counted.
9
+ */
10
+ function depthOf(segmentId) {
11
+ return segmentId.split('/').slice(1).filter((folder) => !(folder.startsWith('(') && folder.endsWith(')'))).length;
12
+ }
13
+ /** Catches render errors below it; resets when `resetKey` changes (a navigation) or `reset` is called. */
14
+ export class ErrorBoundary extends Component {
15
+ state = { error: null, failed: false };
16
+ static getDerivedStateFromError(error) {
17
+ return { error, failed: true };
18
+ }
19
+ componentDidUpdate(previous) {
20
+ if (previous.resetKey !== this.props.resetKey && this.state.failed)
21
+ this.setState({ error: null, failed: false });
22
+ }
23
+ reset = () => this.setState({ error: null, failed: false });
24
+ render() {
25
+ return this.state.failed ? this.props.fallback(this.state.error, this.reset) : this.props.children;
26
+ }
27
+ }
28
+ function asError(error) {
29
+ return error instanceof Error ? error : new Error(typeof error === 'string' ? error : 'Something went wrong');
30
+ }
31
+ /** The error the server reported (props of the error page it rendered), as an Error for `error.tsx`. */
32
+ function serverError(props) {
33
+ const error = new Error(typeof props.message === 'string' ? props.message : 'Something went wrong');
34
+ if (typeof props.status === 'number')
35
+ error.status = props.status;
36
+ if (typeof props.stack === 'string')
37
+ error.stack = props.stack;
38
+ return error;
39
+ }
40
+ /**
41
+ * The page wrapped in its segments, outermost first. Per segment, as in the Next.js App Router:
42
+ * layout > template > error boundary > Suspense (loading) > the next segment or the page. Layouts keep their state
43
+ * while the page underneath changes; templates remount.
44
+ */
45
+ export function RouteTree({ modules, segments = [], props, params, status, pageKind, pageKey, retry, metadata }) {
46
+ const Page = modules.page;
47
+ const pageProps = pageKind === 'error' ? { ...props, error: serverError(props), reset: retry ?? (() => { }) } : props;
48
+ let element = Page ? _jsx(Page, { ...pageProps }, pageKey) : _jsx(BuiltInPage, { status: status, props: props }, pageKey);
49
+ for (let i = modules.segments.length - 1; i >= 0; i--) {
50
+ const { Layout, Template, Loading, Error: SegmentError, slots } = modules.segments[i];
51
+ if (Loading)
52
+ element = _jsx(Suspense, { fallback: _jsx(Loading, {}), children: element });
53
+ if (SegmentError) {
54
+ const inner = element;
55
+ element = (_jsx(ErrorBoundary, { resetKey: pageKey, fallback: (error, reset) => _jsx(SegmentError, { error: asError(error), reset: reset }), children: inner }));
56
+ }
57
+ if (Template)
58
+ element = _jsx(Template, { children: element }, pageKey);
59
+ if (Layout) {
60
+ element = (_jsx(LayoutDepthContext, { value: segments[i]?.depth ?? depthOf(modules.segments[i].id), children: _jsx(Layout, { ...segments[i]?.props, ...slotElements(slots, params, segments[i]?.slotParams), params: params, children: element }) }));
61
+ }
62
+ }
63
+ const layoutsMetadata = modules.segments.map((segment) => segment.metadata);
64
+ const hasMetadata = layoutsMetadata.some(Boolean) || Boolean(modules.pageMetadata) || Boolean(metadata);
65
+ // One shape whether or not this page has metadata: the layouts stay at the same place in the tree, so React keeps
66
+ // them mounted when the user navigates between a page with metadata and one without.
67
+ return (_jsxs(_Fragment, { children: [hasMetadata ? _jsx(MetadataTags, { metadata: resolveMetadata(layoutsMetadata, modules.pageMetadata, metadata) }) : null, element] }));
68
+ }
69
+ /**
70
+ * Parallel routes: each slot as a prop of its layout, named like the folder without the @ (null renders nothing).
71
+ * Each slot's element gets the slot page's own params when the server sent them (else the page's).
72
+ */
73
+ function slotElements(slots, params, slotParams) {
74
+ if (!slots)
75
+ return {};
76
+ return Object.fromEntries(Object.entries(slots).map(([name, Slot]) => [name, Slot ? _jsx(Slot, { params: slotParams?.[name] ?? params }) : null]));
77
+ }
78
+ /** Shown for 404s and errors when the app has no not-found or error page of its own. */
79
+ export function BuiltInPage({ status, props }) {
80
+ const notFound = status === 404;
81
+ const title = notFound ? 'This page could not be found' : 'Something went wrong';
82
+ const message = !notFound && typeof props.message === 'string' ? props.message : null;
83
+ const stack = !notFound && typeof props.stack === 'string' ? props.stack : null;
84
+ return (_jsxs("main", { style: { fontFamily: 'system-ui, sans-serif', maxWidth: '42rem', margin: '12vh auto', padding: '0 1.5rem', lineHeight: 1.5 }, children: [_jsx("title", { children: `${status} · ${title}` }), _jsx("p", { style: { fontSize: '3.5rem', fontWeight: 700, margin: 0 }, children: status }), _jsx("h1", { style: { fontSize: '1.5rem', margin: '0.25rem 0 1rem' }, children: title }), message && _jsx("p", { style: { whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }, children: message }), stack && _jsx("pre", { style: { whiteSpace: 'pre-wrap', fontSize: '0.8rem', background: '#f4f4f5', padding: '1rem', borderRadius: 8 }, children: stack }), _jsx("p", { children: _jsx("a", { href: "/", children: "Go to the home page" }) })] }));
85
+ }
86
+ //# sourceMappingURL=route-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-tree.js","sourceRoot":"","sources":["../src/route-tree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { type ComponentType, type ReactNode } from 'react';
2
+ import type { EncodedForm } from './form-data.ts';
3
+ import type { Href } from './href.ts';
4
+ import { type ModuleLoader, type RouteModules } from './modules.ts';
5
+ import { type ActionResponse, type PagePayload, type Params, type SpecialPageRef } from './payload.ts';
6
+ import { type StandardSchemaV1 } from './schema.ts';
7
+ /** A form post that did not produce a page: a non-page error response (`status`), or no response at all (`null`). */
8
+ export type SubmitError = {
9
+ status: number | null;
10
+ action: string;
11
+ };
12
+ /** What the router is doing: idle, or on its way to `location` for a navigation (`loading`) or a form post (`submitting`). */
13
+ export type NavigationState = {
14
+ state: 'idle';
15
+ error?: SubmitError;
16
+ } | {
17
+ state: 'loading' | 'submitting';
18
+ location: string;
19
+ };
20
+ /** The client router that `useRouter()` returns. */
21
+ export type Router = {
22
+ push(href: Href, options?: {
23
+ scroll?: boolean;
24
+ }): Promise<void>;
25
+ replace(href: Href, options?: {
26
+ scroll?: boolean;
27
+ }): Promise<void>;
28
+ /** Fetches the page payload and modules ahead of a navigation. Links do this on hover and focus. */
29
+ prefetch(href: Href): void;
30
+ /** Re-runs the current page's loader and re-renders with the new props. */
31
+ refresh(): Promise<void>;
32
+ back(): void;
33
+ forward(): void;
34
+ };
35
+ export type SubmitBody = EncodedForm;
36
+ /** Called with every server action response, e.g. by the query shell to apply query updates. */
37
+ export type ActionListener = (response: ActionResponse) => void;
38
+ export type InternalRouter = Router & {
39
+ submit(action: URL, body: SubmitBody): Promise<void>;
40
+ onActionResponse(listener: ActionListener): () => void;
41
+ /**
42
+ * Called as soon as a server action call or form post says it set or deleted a cookie (signed someone in or out),
43
+ * e.g. by the query shell to drop the previous user's queries.
44
+ */
45
+ onCookiesChanged(listener: () => void): () => void;
46
+ };
47
+ /**
48
+ * Records how far the browser clock is from the server's, given a server time for "now": the `X-Netjes-Now` header
49
+ * of a data response, or for the initial document the payload's `renderedAt` (so the browser judges seeded data
50
+ * as fresh as the server did when it rendered, and hydration matches).
51
+ */
52
+ export declare function withClockOffset<T extends PagePayload>(payload: T, serverNow: number | undefined, now?: number): T;
53
+ /**
54
+ * Root-relative hrefs (`/about`, not `//host` or `https://…`) are written as if the app were mounted at the root.
55
+ * One that already starts with the base path (built from it on purpose) is left as it is.
56
+ */
57
+ export declare function withBasePath(href: string, basePath: string): string;
58
+ export type RouterProviderProps = {
59
+ initial: PagePayload;
60
+ initialModules: RouteModules;
61
+ loader: ModuleLoader;
62
+ errorPage: SpecialPageRef | null;
63
+ hardNavigate?: (href: string) => void;
64
+ showDocument?: (html: string, url: string) => void;
65
+ download?: (file: Blob, name: string) => void;
66
+ /** Wraps every page and the error page, inside the router: where app-wide providers such as the QueryClient go. */
67
+ shell?: ComponentType<{
68
+ children: ReactNode;
69
+ }> | undefined;
70
+ };
71
+ export declare function RouterProvider({ initial, initialModules, loader, errorPage, hardNavigate, showDocument, download, shell: Shell, }: RouterProviderProps): import("react").JSX.Element;
72
+ /** The router's contexts without the router: for the test harness (netjes/testing), which fakes navigation. */
73
+ export declare function RouterContexts({ router, payload, url, navigation, children, }: {
74
+ router: InternalRouter;
75
+ payload: PagePayload;
76
+ url: URL;
77
+ navigation: NavigationState;
78
+ children: ReactNode;
79
+ }): import("react").JSX.Element;
80
+ export declare function useInternalRouter(): InternalRouter;
81
+ /** The client router: `push`, `replace`, `prefetch`, `refresh`, `back` and `forward`. Throws outside a Netjes page. */
82
+ export declare function useRouter(): Router;
83
+ /** The path without the base path, as the app's routes see it (like Next.js's `usePathname` with `basePath`). */
84
+ export declare function usePathname(): string;
85
+ /** An href for a plain `<a>` or attribute, under the base path: what `<Link>` does for its own. */
86
+ export declare function useHref(href: string): string;
87
+ /** `UsePathBase`'s base path for this page, or '' when the app is mounted at the root. */
88
+ export declare function useBasePath(): string;
89
+ /**
90
+ * The query string; with a schema, parsed from `{ key: string | string[] }` (repeated keys become arrays).
91
+ * Visitors control the query string, so values the schema rejects are dropped (defaults then apply) rather than
92
+ * failing the page. Define the schema at module level: a new schema object each render parses again.
93
+ */
94
+ export declare function useSearchParams(): URLSearchParams;
95
+ export declare function useSearchParams<Schema extends StandardSchemaV1>(schema: Schema): StandardSchemaV1.InferOutput<Schema>;
96
+ /**
97
+ * The route parameters (catch-all parameters are arrays); with a schema, parsed by it. A rejected value throws to
98
+ * the error boundary, so prefer C# route constraints (or a loader returning NotFound) for URLs visitors can mistype.
99
+ */
100
+ export declare function useParams(): Params;
101
+ export declare function useParams<Schema extends StandardSchemaV1>(schema: Schema): StandardSchemaV1.InferOutput<Schema>;
102
+ /**
103
+ * The props configured with `NetjesOptions.SharedProps` on the server, available to every page and layout.
104
+ * Pass a schema to get them parsed and typed; without one they are `unknown`.
105
+ */
106
+ export declare function useSharedProps(): unknown;
107
+ export declare function useSharedProps<Schema extends StandardSchemaV1>(schema: Schema): StandardSchemaV1.InferOutput<Schema>;
108
+ /**
109
+ * In a layout: the URL segments below it, decoded (route groups do not appear in URLs). Next.js
110
+ * `useSelectedLayoutSegments`. Outside layouts, the whole path.
111
+ */
112
+ export declare function useSelectedLayoutSegments(): string[];
113
+ /** In a layout: the active segment one level below it (e.g. the selected tab), or null at the layout's own page. */
114
+ export declare function useSelectedLayoutSegment(): string | null;
115
+ export declare function usePagePayload(): PagePayload;
116
+ /** The router's state: `loading` during a navigation, `submitting` during a form post, else `idle` (with `error` after a post that produced no page). */
117
+ export declare function useNavigation(): NavigationState;
118
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.tsx"],"names":[],"mappings":"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"}