netjes 0.0.2 → 0.0.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 (160) hide show
  1. package/README.md +13 -11
  2. package/cli/agents.mjs +25 -2
  3. package/cli/commands.mjs +56 -6
  4. package/cli/help.mjs +7 -2
  5. package/cli/info.mjs +275 -33
  6. package/cli/routes.mjs +35 -8
  7. package/cli/scaffold.mjs +31 -4
  8. package/dist/actions.d.ts +7 -2
  9. package/dist/actions.d.ts.map +1 -1
  10. package/dist/actions.js +9 -3
  11. package/dist/actions.js.map +1 -1
  12. package/dist/client-entry.d.ts +1 -0
  13. package/dist/client-entry.d.ts.map +1 -1
  14. package/dist/client-entry.js +19 -2
  15. package/dist/client-entry.js.map +1 -1
  16. package/dist/deferred.d.ts +11 -0
  17. package/dist/deferred.d.ts.map +1 -1
  18. package/dist/deferred.js +15 -1
  19. package/dist/deferred.js.map +1 -1
  20. package/dist/document.d.ts.map +1 -1
  21. package/dist/document.js +10 -1
  22. package/dist/document.js.map +1 -1
  23. package/dist/errors.d.ts +7 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +11 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/form.d.ts +5 -5
  28. package/dist/form.d.ts.map +1 -1
  29. package/dist/form.js +5 -2
  30. package/dist/form.js.map +1 -1
  31. package/dist/href.d.ts +31 -3
  32. package/dist/href.d.ts.map +1 -1
  33. package/dist/href.js +131 -10
  34. package/dist/href.js.map +1 -1
  35. package/dist/image.d.ts +3 -3
  36. package/dist/image.d.ts.map +1 -1
  37. package/dist/image.js.map +1 -1
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/link.d.ts +15 -7
  43. package/dist/link.d.ts.map +1 -1
  44. package/dist/link.js +38 -7
  45. package/dist/link.js.map +1 -1
  46. package/dist/metadata.d.ts +8 -2
  47. package/dist/metadata.d.ts.map +1 -1
  48. package/dist/metadata.js +14 -5
  49. package/dist/metadata.js.map +1 -1
  50. package/dist/modules.d.ts +15 -1
  51. package/dist/modules.d.ts.map +1 -1
  52. package/dist/modules.js.map +1 -1
  53. package/dist/mounted.d.ts +55 -0
  54. package/dist/mounted.d.ts.map +1 -0
  55. package/dist/mounted.js +110 -0
  56. package/dist/mounted.js.map +1 -0
  57. package/dist/navigation-focus.d.ts +38 -0
  58. package/dist/navigation-focus.d.ts.map +1 -0
  59. package/dist/navigation-focus.js +71 -0
  60. package/dist/navigation-focus.js.map +1 -0
  61. package/dist/payload.d.ts +8 -0
  62. package/dist/payload.d.ts.map +1 -1
  63. package/dist/payload.js +28 -0
  64. package/dist/payload.js.map +1 -1
  65. package/dist/query.d.ts +5 -2
  66. package/dist/query.d.ts.map +1 -1
  67. package/dist/query.js +11 -8
  68. package/dist/query.js.map +1 -1
  69. package/dist/render-document.d.ts +74 -0
  70. package/dist/render-document.d.ts.map +1 -0
  71. package/dist/render-document.js +393 -0
  72. package/dist/render-document.js.map +1 -0
  73. package/dist/route-announcer.d.ts +18 -0
  74. package/dist/route-announcer.d.ts.map +1 -0
  75. package/dist/route-announcer.js +58 -0
  76. package/dist/route-announcer.js.map +1 -0
  77. package/dist/route-tree.d.ts +6 -2
  78. package/dist/route-tree.d.ts.map +1 -1
  79. package/dist/route-tree.js +17 -7
  80. package/dist/route-tree.js.map +1 -1
  81. package/dist/router.d.ts +28 -5
  82. package/dist/router.d.ts.map +1 -1
  83. package/dist/router.js +71 -26
  84. package/dist/router.js.map +1 -1
  85. package/dist/script.d.ts +28 -5
  86. package/dist/script.d.ts.map +1 -1
  87. package/dist/script.js +192 -21
  88. package/dist/script.js.map +1 -1
  89. package/dist/server-render.d.ts.map +1 -1
  90. package/dist/server-render.js +4 -1
  91. package/dist/server-render.js.map +1 -1
  92. package/dist/testing-vitest.d.ts +8 -0
  93. package/dist/testing-vitest.d.ts.map +1 -0
  94. package/dist/testing-vitest.js +26 -0
  95. package/dist/testing-vitest.js.map +1 -0
  96. package/dist/testing.d.ts +17 -1
  97. package/dist/testing.d.ts.map +1 -1
  98. package/dist/testing.js +18 -3
  99. package/dist/testing.js.map +1 -1
  100. package/dist/zod-jitless.d.ts +2 -0
  101. package/dist/zod-jitless.d.ts.map +1 -0
  102. package/dist/zod-jitless.js +4 -0
  103. package/dist/zod-jitless.js.map +1 -0
  104. package/package.json +1 -1
  105. package/sidecar/server.mjs +109 -15
  106. package/skills/netjes/SKILL.md +15 -7
  107. package/skills/netjes/references/caching-and-streaming.md +37 -4
  108. package/skills/netjes/references/data-and-actions.md +15 -7
  109. package/skills/netjes/references/deployment.md +7 -3
  110. package/skills/netjes/references/routing.md +32 -9
  111. package/skills/netjes/references/testing.md +23 -7
  112. package/src/actions.tsx +9 -3
  113. package/src/client-entry.tsx +20 -2
  114. package/src/deferred.ts +14 -1
  115. package/src/document.tsx +22 -3
  116. package/src/errors.ts +12 -0
  117. package/src/form.tsx +10 -7
  118. package/src/href.ts +137 -11
  119. package/src/image.tsx +3 -3
  120. package/src/index.ts +19 -1
  121. package/src/link.tsx +47 -13
  122. package/src/metadata.tsx +19 -6
  123. package/src/modules.ts +15 -2
  124. package/src/mounted.tsx +160 -0
  125. package/src/navigation-focus.ts +75 -0
  126. package/src/payload.ts +32 -0
  127. package/src/query.tsx +14 -8
  128. package/src/render-document.tsx +483 -0
  129. package/src/route-announcer.tsx +69 -0
  130. package/src/route-tree.tsx +17 -6
  131. package/src/router.tsx +116 -31
  132. package/src/script.tsx +214 -23
  133. package/src/server-render.tsx +4 -1
  134. package/src/testing-vitest.ts +37 -0
  135. package/src/testing.tsx +38 -5
  136. package/src/virtual.d.ts +8 -1
  137. package/src/zod-jitless.ts +15 -0
  138. package/template/.dockerignore +3 -0
  139. package/template/Dockerfile +11 -1
  140. package/template/README.md +11 -7
  141. package/template/_AGENTS.md +38 -9
  142. package/template/__NAME__.csproj +2 -0
  143. package/template/app/document.test.ts +29 -0
  144. package/template/app/error.tsx +3 -2
  145. package/template/app/layout.tsx +10 -1
  146. package/template/docker-compose.override.yml +4 -3
  147. package/template/docker-compose.prod.yml +2 -1
  148. package/template/e2e/home.spec.ts +32 -0
  149. package/template/generated/netjes.ts +43 -14
  150. package/template/package.json +4 -1
  151. package/template/playwright.config.ts +36 -0
  152. package/template/tests/__NAME__.Tests/AppFactory.cs +31 -0
  153. package/template/tests/__NAME__.Tests/HomePageTests.cs +55 -0
  154. package/template/tests/__NAME__.Tests/__NAME__.Tests.csproj +30 -0
  155. package/template/tsconfig.app.json +20 -0
  156. package/template/tsconfig.json +2 -17
  157. package/template/tsconfig.node.json +8 -0
  158. package/vite/packages.mjs +345 -0
  159. package/vite/plugin.d.ts +16 -1
  160. package/vite/plugin.mjs +224 -34
package/cli/routes.mjs CHANGED
@@ -1,8 +1,11 @@
1
1
  // @ts-check
2
2
 
3
3
  /**
4
- * @typedef {{ pattern: string; file: string; loader: boolean; action: boolean; props: string | null; cached: boolean; authorized: boolean }} RouteRow
5
- * @typedef {{ method: string; route: string }} EndpointRow
4
+ * `package` names the page package a route or an endpoint is of, and `overrides` the package's page that the app's file
5
+ * replaces; both are null for the app's own, and absent in the report of a Netjes before page packages.
6
+ * @typedef {{ pattern: string; file: string; package?: string | null; overrides?: string | null; loader: boolean; action: boolean; props: string | null; cached: boolean; authorized: boolean }} RouteRow
7
+ * @typedef {{ method: string; route: string; package?: string | null }} EndpointRow
8
+ * @typedef {{ name: string; version: string; nuget: string; nugetVersion: string; prefix: string; pattern: string; overrides: string[] }} PackageRow
6
9
  * @typedef {{ kind: string; message: string; files: string[] }} RouteWarning
7
10
  */
8
11
 
@@ -14,18 +17,42 @@ function table(rows) {
14
17
 
15
18
  const yes = (/** @type {boolean} */ value) => (value ? 'yes' : '');
16
19
 
20
+ /** The Package column of a route: its package, marked when the app's file replaces the package's page. */
21
+ const packageOf = (/** @type {RouteRow} */ r) => (r.package ? `${r.package}${r.overrides ? ' (override)' : ''}` : '');
22
+
17
23
  /**
18
- * The route table the app reported (`NETJES_COMMAND=routes`), as text, with the app's route warnings after it.
19
- * @param {{ routes: RouteRow[]; endpoints: EndpointRow[]; warnings?: RouteWarning[] }} report
24
+ * The route table the app reported (`NETJES_COMMAND=routes`), as text, with the app's route warnings after it. The
25
+ * Package column, and the list of page packages, show only when the app mounts one.
26
+ * @param {{ routes: RouteRow[]; endpoints: EndpointRow[]; packages?: PackageRow[]; warnings?: RouteWarning[] }} report
20
27
  */
21
28
  export function formatRoutes(report) {
29
+ const packages = report.packages ?? [];
30
+ const mounted = packages.length > 0;
31
+ /** @param {string[]} cells @param {string} cell */
32
+ const withPackage = (cells, cell) => (mounted ? [...cells.slice(0, 2), cell, ...cells.slice(2)] : cells);
22
33
  const pages = table([
23
- ['Pattern', 'File', 'Loader', 'Action', 'Props', 'Cached', 'Auth'],
24
- ...report.routes.map((r) => [r.pattern, r.file, yes(r.loader), yes(r.action), r.props ?? '', yes(r.cached), yes(r.authorized)]),
34
+ withPackage(['Pattern', 'File', 'Loader', 'Action', 'Props', 'Cached', 'Auth'], 'Package'),
35
+ ...report.routes.map((r) =>
36
+ withPackage([r.pattern, r.file, yes(r.loader), yes(r.action), r.props ?? '', yes(r.cached), yes(r.authorized)], packageOf(r)),
37
+ ),
25
38
  ]);
26
39
  const endpoints = report.endpoints.length
27
- ? ['', 'Endpoints', ...table(report.endpoints.map((e) => [e.method, e.route]))]
40
+ ? ['', 'Endpoints', ...table(report.endpoints.map((e) => (mounted ? [e.method, e.route, e.package ?? ''] : [e.method, e.route])))]
41
+ : [];
42
+ const listed = mounted
43
+ ? [
44
+ '',
45
+ 'Packages',
46
+ ...table(
47
+ packages.map((p) => [
48
+ `${p.name} ${p.version}`,
49
+ `${p.nuget} ${p.nugetVersion}`,
50
+ p.prefix,
51
+ p.overrides.length ? `overrides ${p.overrides.join(', ')}` : '',
52
+ ]),
53
+ ),
54
+ ]
28
55
  : [];
29
56
  const warnings = report.warnings?.length ? ['', 'Warnings', ...report.warnings.map((w) => ` ${w.message}`)] : [];
30
- return [...pages, ...endpoints, ...warnings].join('\n') + '\n';
57
+ return [...pages, ...endpoints, ...listed, ...warnings].join('\n') + '\n';
31
58
  }
package/cli/scaffold.mjs CHANGED
@@ -58,8 +58,9 @@ const CSHARP_KEYWORDS = new Set(
58
58
  'unsafe ushort using virtual void volatile while').split(' '),
59
59
  );
60
60
 
61
- // Types the template's C# uses by their simple names. A root namespace of the same name hides the type from that code,
62
- // and the build fails (CS0118, CS0234); Program is the class the top-level statements in Program.cs make (CS0101).
61
+ // Types the template's C# uses by their simple names, in the app and in its test project, whose namespace starts with
62
+ // the app's name. A root namespace of the same name hides the type from that code, and the build fails (CS0118, CS0234);
63
+ // Program is the class the top-level statements in Program.cs make (CS0101).
63
64
  const TEMPLATE_TYPES = new Set([
64
65
  'Program',
65
66
  'SiteProps',
@@ -71,6 +72,17 @@ const TEMPLATE_TYPES = new Set([
71
72
  'TimeProvider',
72
73
  'IEndpointRouteBuilder',
73
74
  'FromFormAttribute',
75
+ 'IWebHostBuilder',
76
+ 'NetjesOptions',
77
+ 'ISsrRenderer',
78
+ 'Task',
79
+ 'CancellationToken',
80
+ 'NetjesHeaders',
81
+ 'JsonNode',
82
+ 'TestContext',
83
+ 'Assert',
84
+ 'FormUrlEncodedContent',
85
+ 'HttpStatusCode',
74
86
  ]);
75
87
 
76
88
  /**
@@ -95,7 +107,7 @@ export async function namesFor(target, name) {
95
107
  }
96
108
  const names = name === undefined ? projectNames(path.basename(target)) : { ...projectNames(name), dotnet: name };
97
109
  if (TEMPLATE_TYPES.has(names.dotnet)) {
98
- return { problem: `'${names.dotnet}' is the name of a type the app's code uses; choose another name with --name` };
110
+ return { problem: `'${names.dotnet}' is the name of a type the app's code or its test project uses; choose another name with --name` };
99
111
  }
100
112
  const manifest = JSON.parse(await readFile(path.join(TEMPLATE, 'package.json'), 'utf8'));
101
113
  if (Object.hasOwn({ ...manifest.dependencies, ...manifest.devDependencies }, names.npm)) {
@@ -125,6 +137,21 @@ export function fillNames(text, names) {
125
137
  return text.replaceAll('__NAME__', names.dotnet).replaceAll('__name__', names.npm).replaceAll('__TITLE__', names.title);
126
138
  }
127
139
 
140
+ /**
141
+ * Keeps or drops the parts of a template file that apply only to some apps, and removes the markers around them, each
142
+ * on a line of its own: what is between `<!--netjes:if name-->` and `<!--netjes:else-->` or `<!--netjes:end-->` stays
143
+ * when the app has `name`, and what is between `<!--netjes:else-->` and `<!--netjes:end-->` stays when it does not.
144
+ * @param {string} text
145
+ * @param {{ tests: boolean; e2e: boolean }} has what the app has: a C# test project, a Playwright suite
146
+ */
147
+ export function keepSections(text, has) {
148
+ return text.replace(
149
+ /^<!--netjes:if (tests|e2e)-->\n([\s\S]*?)(?:^<!--netjes:else-->\n([\s\S]*?))?^<!--netjes:end-->\n/gm,
150
+ (_, /** @type {'tests' | 'e2e'} */ name, /** @type {string} */ kept, /** @type {string | undefined} */ otherwise) =>
151
+ has[name] ? kept : (otherwise ?? ''),
152
+ );
153
+ }
154
+
128
155
  /** @param {string} file a path in the template @returns {Promise<string>} */
129
156
  export const readTemplate = (file) => readFile(path.join(TEMPLATE, file), 'utf8');
130
157
 
@@ -165,7 +192,7 @@ export async function scaffold(target, options = {}) {
165
192
  const source = path.join(from, entry);
166
193
  const destination = path.join(to, fill(RENAMED.get(entry) ?? entry));
167
194
  if ((await stat(source)).isDirectory()) await copy(source, destination);
168
- else await writeFile(destination, fill(await readFile(source, 'utf8')));
195
+ else await writeFile(destination, fill(keepSections(await readFile(source, 'utf8'), { tests: true, e2e: true })));
169
196
  }
170
197
  }
171
198
 
package/dist/actions.d.ts CHANGED
@@ -23,11 +23,16 @@ export interface ServerAction<TInput, TResult> {
23
23
  readonly actionName: string;
24
24
  readonly url: string;
25
25
  }
26
- /** Thrown into the nearest error boundary when the server could not run the action (not for validation errors). */
26
+ /**
27
+ * Thrown into the nearest error boundary when the server could not run the action (not for validation errors).
28
+ * `status` is the status of the server's answer. `withheld` is true when the server sent no message, as for a 5xx
29
+ * with error details off: the message is then Netjes's own, which names the action and the status.
30
+ */
27
31
  export declare class ServerActionError extends Error {
28
32
  name: string;
29
33
  readonly status: number;
30
- constructor(message: string, status: number);
34
+ readonly withheld: boolean;
35
+ constructor(message: string, status: number, withheld?: boolean);
31
36
  }
32
37
  /** Runs action calls for the page: the router in the browser (fetch, then redirect/refresh/query updates), a fake in tests. */
33
38
  export type ActionClient = {
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
package/dist/actions.js CHANGED
@@ -3,13 +3,19 @@ import { encodeForm } from './form-data.js';
3
3
  import { ANTIFORGERY_HEADER, COOKIES_HEADER, DATA_HEADER, parseActionResponse } from './payload.js';
4
4
  import { usePagePayload } from './router.js';
5
5
  import { parseWith } from './schema.js';
6
- /** Thrown into the nearest error boundary when the server could not run the action (not for validation errors). */
6
+ /**
7
+ * Thrown into the nearest error boundary when the server could not run the action (not for validation errors).
8
+ * `status` is the status of the server's answer. `withheld` is true when the server sent no message, as for a 5xx
9
+ * with error details off: the message is then Netjes's own, which names the action and the status.
10
+ */
7
11
  export class ServerActionError extends Error {
8
12
  name = 'ServerActionError';
9
13
  status;
10
- constructor(message, status) {
14
+ withheld;
15
+ constructor(message, status, withheld = false) {
11
16
  super(message);
12
17
  this.status = status;
18
+ this.withheld = withheld;
13
19
  }
14
20
  }
15
21
  let client = null;
@@ -129,7 +135,7 @@ export function serverAction(name, options = {}) {
129
135
  const active = client ?? (await readyClient(name));
130
136
  const answer = await active.invoke(name, url, input);
131
137
  if (!answer.ok && answer.status !== 422) {
132
- throw new ServerActionError(answer.message ?? `Server action ${name} failed with status ${answer.status}`, answer.status);
138
+ throw new ServerActionError(answer.message ?? `Server action ${name} failed with status ${answer.status}`, answer.status, answer.message === undefined);
133
139
  }
134
140
  if (!answer.ok) {
135
141
  const values = submittedValues(input, active.tokenField?.(), answer.fields);
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ import './zod-jitless.ts';
1
2
  import '@vitejs/plugin-react/preamble';
2
3
  //# sourceMappingURL=client-entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-entry.d.ts","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":"AACA,OAAO,+BAA+B,CAAC"}
1
+ {"version":3,"file":"client-entry.d.ts","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,+BAA+B,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- // Must come first: installs the React Fast Refresh runtime before any component module runs (empty in builds).
2
+ // Must come first, ahead of anything that could make a zod schema: turns zod's compiled parsers off (ADR 0036).
3
+ import './zod-jitless.js';
4
+ // Must come before any component module: installs the React Fast Refresh runtime before one runs (empty in builds).
3
5
  import '@vitejs/plugin-react/preamble';
4
6
  import { createRoot, hydrateRoot } from 'react-dom/client';
5
7
  import { pages } from 'virtual:netjes/pages';
@@ -8,6 +10,7 @@ import { createModuleLoader } from './modules.js';
8
10
  import { DATA_ELEMENT_ID, SHELL_END_ID, parseInitialPayload } from './payload.js';
9
11
  import { Root } from './root.js';
10
12
  import { withClockOffset } from './router.js';
13
+ import { BEFORE_INTERACTIVE_MARKER, adoptServerScripts } from './script.js';
11
14
  /**
12
15
  * The payload is the body's first element, so it is normally parsed by the time this async script runs. If the
13
16
  * script won the race, wait for the element rather than for the whole (streaming) document.
@@ -110,6 +113,17 @@ async function firstPageModules() {
110
113
  return null;
111
114
  }
112
115
  }
116
+ /**
117
+ * A `<Script strategy="beforeInteractive">` in the server's document puts a marker in the head, which is complete by
118
+ * the time the payload is read. Such a page waits for the end of the shell, where the parser has run the inline ones,
119
+ * then runs the external ones in order and waits for them, before the page's modules run and hydrate (ADR 0044). A
120
+ * page without one loads its modules while the rest of the shell arrives (ADR 0022).
121
+ */
122
+ const beforeInteractive = document.head.querySelector(`meta[name="${BEFORE_INTERACTIVE_MARKER}"]`) !== null;
123
+ if (beforeInteractive) {
124
+ await shellParsed();
125
+ await adoptServerScripts(payload.document.nonce);
126
+ }
113
127
  const modules = await firstPageModules();
114
128
  if (modules) {
115
129
  const root = _jsx(Root, { payload: payload, modules: modules, loader: loader, dataJson: dataJson });
@@ -119,7 +133,10 @@ if (modules) {
119
133
  createRoot(document).render(root);
120
134
  }
121
135
  else {
122
- await shellParsed();
136
+ if (!beforeInteractive) {
137
+ await shellParsed();
138
+ await adoptServerScripts(payload.document.nonce);
139
+ }
123
140
  hydrateRoot(document, root);
124
141
  }
125
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client-entry.js","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-entry.js","sourceRoot":"","sources":["../src/client-entry.tsx"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export declare function revivePayload<T extends PagePayload>(payload: T, source:
21
21
  export declare function deferredRegistry(): {
22
22
  source: DeferredSource;
23
23
  resolve(id: string, value: unknown): void;
24
+ /** Fails a value with the server's message; an empty one is a message the server withheld (no error details). */
24
25
  reject(id: string, message: string): void;
25
26
  /** Rejects every value still pending, e.g. when the stream that was to deliver them ended. */
26
27
  rejectPending(message: (id: string) => string): void;
@@ -32,6 +33,16 @@ export declare function deferredRegistry(): {
32
33
  * then, page markup with `id="__netjes_v"` would be what that name reads (DOM clobbering).
33
34
  */
34
35
  export declare const DEFERRED_BOOTSTRAP = "self.__netjes_d=self.__netjes_d||function(i,v,e){self.__netjes_v[i]=[v,e]};Object.prototype.hasOwnProperty.call(self,'__netjes_v')||(self.__netjes_v={})";
36
+ /**
37
+ * The `script-src` sources that allow Netjes's fixed inline scripts by their hashes, for a policy without a nonce: each
38
+ * `'sha256-…'` in its quotes, separated by spaces, as in `` `script-src 'self' ${CSP_SCRIPT_HASHES}` ``. A fixed script
39
+ * has the same text in every document. In this version there is one, the bootstrap that collects streamed `Page.Defer`
40
+ * values, and a Netjes version that changes it or adds another changes the value. The scripts that deliver those
41
+ * values, and React's scripts that reveal Suspense boundaries, differ from render to render, so no hash covers them.
42
+ * React's script for form actions that are functions is left out too, since its text follows the React version. The
43
+ * same value as `NetjesContentSecurityPolicy.ScriptHashes` in C#.
44
+ */
45
+ export declare const CSP_SCRIPT_HASHES: string;
35
46
  /** JSON that can sit inside a <script> element. */
36
47
  export declare function htmlSafeJson(value: unknown): string;
37
48
  /** The script that hands one deferred value (or its error) to the browser. */
@@ -1 +1 @@
1
- {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../src/deferred.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAE5D,wHAAwH;AACxH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3G,wBAAgB,cAAc,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAuB/C;AAED,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;AAM/D,iHAAiH;AACjH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAoB9E;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,CAW1F;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB;IAa5B,MAAM,EAAiC,cAAc;IACrD,OAAO,KAAK,MAAM,SAAS,OAAO;IAGlC,MAAM,KAAK,MAAM,WAAW,MAAM;IAGlC,8FAA8F;IAC9F,aAAa,UAAU,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM;EAMhD;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,6JAC6H,CAAC;AAI7J,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQjG"}
1
+ {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../src/deferred.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAE5D,wHAAwH;AACxH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3G,wBAAgB,cAAc,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAuB/C;AAED,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;AAM/D,iHAAiH;AACjH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAoB9E;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,CAW1F;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB;IAa5B,MAAM,EAAiC,cAAc;IACrD,OAAO,KAAK,MAAM,SAAS,OAAO;IAGlC,iHAAiH;IACjH,MAAM,KAAK,MAAM,WAAW,MAAM;IAGlC,8FAA8F;IAC9F,aAAa,UAAU,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM;EAMhD;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,6JAC6H,CAAC;AAE7J;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAgE,CAAC;AAIjG,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQjG"}
package/dist/deferred.js CHANGED
@@ -1,3 +1,6 @@
1
+ // Deferred loader values (Page.Defer in C#): placeholders in the payload that become promises the page reads with
2
+ // React's use() inside a Suspense boundary.
3
+ import { withheldError } from './errors.js';
1
4
  export function createDeferred() {
2
5
  let resolve;
3
6
  let reject;
@@ -86,8 +89,9 @@ export function deferredRegistry() {
86
89
  resolve(id, value) {
87
90
  entry(id).resolve(value);
88
91
  },
92
+ /** Fails a value with the server's message; an empty one is a message the server withheld (no error details). */
89
93
  reject(id, message) {
90
- entry(id).reject(new Error(message));
94
+ entry(id).reject(message === '' ? withheldError() : new Error(message));
91
95
  },
92
96
  /** Rejects every value still pending, e.g. when the stream that was to deliver them ended. */
93
97
  rejectPending(message) {
@@ -105,6 +109,16 @@ export function deferredRegistry() {
105
109
  * then, page markup with `id="__netjes_v"` would be what that name reads (DOM clobbering).
106
110
  */
107
111
  export const DEFERRED_BOOTSTRAP = "self.__netjes_d=self.__netjes_d||function(i,v,e){self.__netjes_v[i]=[v,e]};Object.prototype.hasOwnProperty.call(self,'__netjes_v')||(self.__netjes_v={})";
112
+ /**
113
+ * The `script-src` sources that allow Netjes's fixed inline scripts by their hashes, for a policy without a nonce: each
114
+ * `'sha256-…'` in its quotes, separated by spaces, as in `` `script-src 'self' ${CSP_SCRIPT_HASHES}` ``. A fixed script
115
+ * has the same text in every document. In this version there is one, the bootstrap that collects streamed `Page.Defer`
116
+ * values, and a Netjes version that changes it or adds another changes the value. The scripts that deliver those
117
+ * values, and React's scripts that reveal Suspense boundaries, differ from render to render, so no hash covers them.
118
+ * React's script for form actions that are functions is left out too, since its text follows the React version. The
119
+ * same value as `NetjesContentSecurityPolicy.ScriptHashes` in C#.
120
+ */
121
+ export const CSP_SCRIPT_HASHES = "'sha256-FSjVV+FzmXP8KKrLKLdvst/5N/bEWSkde01XzpGKRgs='";
108
122
  const UNSAFE = /[<>&\u2028\u2029]/g;
109
123
  /** JSON that can sit inside a <script> element. */
110
124
  export function htmlSafeJson(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"deferred.js","sourceRoot":"","sources":["../src/deferred.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deferred.js","sourceRoot":"","sources":["../src/deferred.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,YAAY,EAAgB,MAAM,cAAc,CAAC;AAEhF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnF;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAiCnE"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,YAAY,EAAgB,MAAM,cAAc,CAAC;AAEhF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnF;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAoDnE"}
package/dist/document.js CHANGED
@@ -12,6 +12,15 @@ import { DATA_ELEMENT_ID, SHELL_END_ID } from './payload.js';
12
12
  */
13
13
  export function Document({ info, dataJson, children }) {
14
14
  const { nonce } = info;
15
- return (_jsxs("html", { lang: info.lang, children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), nonce && _jsx("meta", { property: "csp-nonce", nonce: nonce }), !info.clientRender && _jsx("script", { nonce: nonce, dangerouslySetInnerHTML: { __html: DEFERRED_BOOTSTRAP } }), info.assets.stylesheets.map((href) => (_jsx("link", { rel: "stylesheet", href: href, nonce: nonce }, href))), info.devStyles?.map((style) => (_jsx("style", { "data-vite-dev-id": style.id, nonce: nonce, dangerouslySetInnerHTML: { __html: style.css } }, style.id))), info.assets.modulePreloads.map((href) => (_jsx("link", { rel: "modulepreload", href: href, nonce: nonce }, href))), info.assets.scripts.map((src) => (_jsx("script", { type: "module", src: src, async: true, nonce: nonce }, src)))] }), _jsxs("body", { children: [_jsx("script", { id: DATA_ELEMENT_ID, type: "application/json", nonce: nonce, dangerouslySetInnerHTML: { __html: dataJson } }), children, _jsx("template", { id: SHELL_END_ID })] })] }));
15
+ // Netjes owns <html> and <body>: the app's layout renders inside the body, so its markup cannot give either one an
16
+ // attribute. A script that runs before hydration can (a theme, a browser extension, a translator), and in development
17
+ // React logs a mismatch for each attribute on an element that its props do not have. suppressHydrationWarning ends
18
+ // that check for the element's own attributes. It also makes React accept any text that is the element's own child,
19
+ // in production too: text that a layout or a page renders outside any element or Suspense boundary sits directly in
20
+ // the body, and a mismatch there is neither reported nor repaired. The elements in the body are checked as before,
21
+ // their attributes and their text. React does not write the prop into the markup, and production does not check
22
+ // attributes at all. The check is off for `lang` too: the server and the client read it from the same payload, so it
23
+ // differs only when a script changed it, or when Netjes has a bug.
24
+ return (_jsxs("html", { lang: info.lang, suppressHydrationWarning: true, children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), nonce && _jsx("meta", { property: "csp-nonce", nonce: nonce }), !info.clientRender && _jsx("script", { nonce: nonce, dangerouslySetInnerHTML: { __html: DEFERRED_BOOTSTRAP } }), info.assets.stylesheets.map((href) => (_jsx("link", { rel: "stylesheet", href: href, nonce: nonce }, href))), info.devStyles?.map((style) => (_jsx("style", { "data-vite-dev-id": style.id, nonce: nonce, suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: style.css } }, style.id))), info.assets.modulePreloads.map((href) => (_jsx("link", { rel: "modulepreload", href: href, nonce: nonce }, href))), info.assets.scripts.map((src) => (_jsx("script", { type: "module", src: src, async: true, nonce: nonce }, src)))] }), _jsxs("body", { suppressHydrationWarning: true, children: [_jsx("script", { id: DATA_ELEMENT_ID, type: "application/json", nonce: nonce, dangerouslySetInnerHTML: { __html: dataJson } }), children, _jsx("template", { id: SHELL_END_ID })] })] }));
16
25
  }
17
26
  //# sourceMappingURL=document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAqB,YAAY,EAAE,MAAM,cAAc,CAAC;AAIhF;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAiB;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,OAAO,CACL,gBAAM,IAAI,EAAE,IAAI,CAAC,IAAI,aACnB,2BACE,eAAM,OAAO,EAAC,OAAO,GAAG,EACxB,eAAM,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,qCAAqC,GAAG,EAErE,KAAK,IAAI,eAAM,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAE,KAAK,GAAI,EAGpD,CAAC,IAAI,CAAC,YAAY,IAAI,iBAAQ,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAI,EACvG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrC,eAAiB,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAA/C,IAAI,CAA+C,CAC/D,CAAC,EACD,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC9B,oCAAwC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAAlG,KAAK,CAAC,EAAE,CAA8F,CACnH,CAAC,EACD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxC,eAAiB,GAAG,EAAC,eAAe,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAlD,IAAI,CAAkD,CAClE,CAAC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAChC,iBAAkB,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,QAAC,KAAK,EAAE,KAAK,IAA/C,GAAG,CAAgD,CACjE,CAAC,IACG,EACP,2BAEE,iBAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAC,kBAAkB,EAAC,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAI,EACnH,QAAQ,EACT,mBAAU,EAAE,EAAE,YAAY,GAAI,IACzB,IACF,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAqB,YAAY,EAAE,MAAM,cAAc,CAAC;AAIhF;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAiB;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,mHAAmH;IACnH,sHAAsH;IACtH,mHAAmH;IACnH,oHAAoH;IACpH,oHAAoH;IACpH,mHAAmH;IACnH,gHAAgH;IAChH,qHAAqH;IACrH,mEAAmE;IACnE,OAAO,CACL,gBAAM,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,wBAAwB,mBAC7C,2BACE,eAAM,OAAO,EAAC,OAAO,GAAG,EACxB,eAAM,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,qCAAqC,GAAG,EAErE,KAAK,IAAI,eAAM,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAE,KAAK,GAAI,EAGpD,CAAC,IAAI,CAAC,YAAY,IAAI,iBAAQ,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAI,EACvG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrC,eAAiB,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAA/C,IAAI,CAA+C,CAC/D,CAAC,EAKD,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC9B,oCAEoB,KAAK,CAAC,EAAE,EAC1B,KAAK,EAAE,KAAK,EACZ,wBAAwB,QACxB,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAJzC,KAAK,CAAC,EAAE,CAKb,CACH,CAAC,EACD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxC,eAAiB,GAAG,EAAC,eAAe,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAlD,IAAI,CAAkD,CAClE,CAAC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAChC,iBAAkB,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,QAAC,KAAK,EAAE,KAAK,IAA/C,GAAG,CAAgD,CACjE,CAAC,IACG,EACP,gBAAM,wBAAwB,mBAE5B,iBAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAC,kBAAkB,EAAC,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAI,EACnH,QAAQ,EACT,mBAAU,EAAE,EAAE,YAAY,GAAI,IACzB,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** Netjes's stand-in for a message it does not show, marked as one. */
2
+ export declare function withheldError(): Error & {
3
+ withheld: true;
4
+ };
5
+ /** Whether `error` is marked as one whose message was withheld. */
6
+ export declare function isWithheld(error: unknown): boolean;
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,wBAAgB,aAAa,IAAI,KAAK,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAE1D;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD"}
package/dist/errors.js ADDED
@@ -0,0 +1,11 @@
1
+ // The mark on errors whose message Netjes withheld: `withheld` is true when the message is Netjes's stand-in for one it
2
+ // does not show (error details are off, or the thrown value had none), so `!error.withheld` means it is worth showing.
3
+ /** Netjes's stand-in for a message it does not show, marked as one. */
4
+ export function withheldError() {
5
+ return Object.assign(new Error('Something went wrong'), { withheld: true });
6
+ }
7
+ /** Whether `error` is marked as one whose message was withheld. */
8
+ export function isWithheld(error) {
9
+ return error instanceof Error && error.withheld === true;
10
+ }
11
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,uHAAuH;AAEvH,uEAAuE;AACvE,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,KAAK,IAAK,KAAgC,CAAC,QAAQ,KAAK,IAAI,CAAC;AACvF,CAAC"}
package/dist/form.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { ButtonHTMLAttributes, FormHTMLAttributes } from 'react';
1
+ import type { ComponentPropsWithRef } from 'react';
2
2
  /** A React form action, e.g. the `formAction` from `useAction(serverAction('name'))`. */
3
3
  export type FormAction = (formData: FormData) => void | Promise<void>;
4
- /** The props of `<Form>`: a form's own, with client navigation and server action support. */
5
- export type FormProps = Omit<FormHTMLAttributes<HTMLFormElement>, 'method' | 'action'> & {
4
+ /** The props of `<Form>`: a form's own and its ref, with client navigation and server action support. */
5
+ export type FormProps = Omit<ComponentPropsWithRef<'form'>, 'method' | 'action'> & {
6
6
  method?: 'get' | 'post';
7
7
  /**
8
8
  * Where to submit. Default: the current URL, which is where `MapPageAction` handlers for this page listen. Or a
@@ -25,8 +25,8 @@ export type FormProps = Omit<FormHTMLAttributes<HTMLFormElement>, 'method' | 'ac
25
25
  * `action`/`method`, the token and the return URL, so the same form also posts without JavaScript.
26
26
  */
27
27
  export declare function Form({ method, action, replace, reloadDocument, onSubmit, children, ...rest }: FormProps): import("react").JSX.Element;
28
- /** The props of `<SubmitButton>`: a button's own, except `type`. */
29
- export type SubmitButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'>;
28
+ /** The props of `<SubmitButton>`: a button's own and its ref, except `type`. */
29
+ export type SubmitButtonProps = Omit<ComponentPropsWithRef<'button'>, 'type'>;
30
30
  /**
31
31
  * A submit button whose `formAction` is rendered under the base path, so it posts to the right place with and
32
32
  * without JavaScript (a plain `<button formAction="/x">` would miss the base without JavaScript).
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAe,MAAM,OAAO,CAAC;AAMnF,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtE,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAAG;IACvF,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAYF;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EAAE,MAAc,EAAE,MAAM,EAAE,OAAe,EAAE,cAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,+BAiE/H;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAItE"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,OAAO,CAAC;AAMhE,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtE,yGAAyG;AACzG,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAAG;IACjF,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAYF;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EAAE,MAAc,EAAE,MAAM,EAAE,OAAe,EAAE,cAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,+BAoE/H;AAED,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAItE"}
package/dist/form.js CHANGED
@@ -37,6 +37,9 @@ export function Form({ method = 'get', action, replace = false, reloadDocument =
37
37
  return (_jsxs("form", { ...rest, action: onServer && serverAction ? withBasePath(serverAction.url, basePath) : action, method: onServer && serverAction ? 'post' : undefined, onSubmit: onSubmit, children: [hidden, children] }));
38
38
  }
39
39
  function handleSubmit(event) {
40
+ // Read before the app's own onSubmit, which runs as the form is submitted: where it moves the focus, the router
41
+ // leaves it, as after a link's onClick.
42
+ const focusedAtStart = document.activeElement;
40
43
  onSubmit?.(event);
41
44
  if (event.defaultPrevented || reloadDocument)
42
45
  return;
@@ -53,7 +56,7 @@ export function Form({ method = 'get', action, replace = false, reloadDocument =
53
56
  const data = formDataOf(form, submitter);
54
57
  const submitMethod = (submitter?.getAttribute('formmethod') ?? method).toLowerCase();
55
58
  if (submitMethod === 'post') {
56
- void router.submit(url, encodeForm(data, form.enctype === 'multipart/form-data'));
59
+ void router.submit(url, encodeForm(data, form.enctype === 'multipart/form-data'), { focusedAtStart });
57
60
  return;
58
61
  }
59
62
  const query = new URLSearchParams();
@@ -64,7 +67,7 @@ export function Form({ method = 'get', action, replace = false, reloadDocument =
64
67
  url.hash = '';
65
68
  // Built from the form's own action, which is not one of the app's typed routes.
66
69
  const href = url.href;
67
- void (replace ? router.replace(href) : router.push(href));
70
+ void (replace ? router.replace(href, { focusedAtStart }) : router.push(href, { focusedAtStart }));
68
71
  }
69
72
  return (_jsxs("form", { method: method, action: actionUrl, ...rest, onSubmit: handleSubmit, children: [hidden, children] }));
70
73
  }
package/dist/form.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"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"}