netjes 0.0.1 → 0.0.3

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 (154) hide show
  1. package/README.md +11 -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 +7 -2
  6. package/cli/scaffold.mjs +31 -4
  7. package/dist/actions.d.ts +7 -2
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +9 -3
  10. package/dist/actions.js.map +1 -1
  11. package/dist/client-entry.d.ts +1 -0
  12. package/dist/client-entry.d.ts.map +1 -1
  13. package/dist/client-entry.js +43 -2
  14. package/dist/client-entry.js.map +1 -1
  15. package/dist/deferred.d.ts +11 -0
  16. package/dist/deferred.d.ts.map +1 -1
  17. package/dist/deferred.js +15 -1
  18. package/dist/deferred.js.map +1 -1
  19. package/dist/document.d.ts +4 -3
  20. package/dist/document.d.ts.map +1 -1
  21. package/dist/document.js +15 -5
  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 +24 -3
  32. package/dist/href.d.ts.map +1 -1
  33. package/dist/href.js +117 -7
  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 +2 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -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/navigation-focus.d.ts +38 -0
  54. package/dist/navigation-focus.d.ts.map +1 -0
  55. package/dist/navigation-focus.js +71 -0
  56. package/dist/navigation-focus.js.map +1 -0
  57. package/dist/payload.d.ts +2 -0
  58. package/dist/payload.d.ts.map +1 -1
  59. package/dist/payload.js +2 -0
  60. package/dist/payload.js.map +1 -1
  61. package/dist/query.d.ts +5 -2
  62. package/dist/query.d.ts.map +1 -1
  63. package/dist/query.js +11 -8
  64. package/dist/query.js.map +1 -1
  65. package/dist/render-document.d.ts +60 -0
  66. package/dist/render-document.d.ts.map +1 -0
  67. package/dist/render-document.js +330 -0
  68. package/dist/render-document.js.map +1 -0
  69. package/dist/route-announcer.d.ts +18 -0
  70. package/dist/route-announcer.d.ts.map +1 -0
  71. package/dist/route-announcer.js +58 -0
  72. package/dist/route-announcer.js.map +1 -0
  73. package/dist/route-tree.d.ts +6 -2
  74. package/dist/route-tree.d.ts.map +1 -1
  75. package/dist/route-tree.js +17 -7
  76. package/dist/route-tree.js.map +1 -1
  77. package/dist/router.d.ts +28 -5
  78. package/dist/router.d.ts.map +1 -1
  79. package/dist/router.js +71 -26
  80. package/dist/router.js.map +1 -1
  81. package/dist/script.d.ts +28 -5
  82. package/dist/script.d.ts.map +1 -1
  83. package/dist/script.js +192 -21
  84. package/dist/script.js.map +1 -1
  85. package/dist/server-render.d.ts.map +1 -1
  86. package/dist/server-render.js +4 -1
  87. package/dist/server-render.js.map +1 -1
  88. package/dist/testing-vitest.d.ts +8 -0
  89. package/dist/testing-vitest.d.ts.map +1 -0
  90. package/dist/testing-vitest.js +26 -0
  91. package/dist/testing-vitest.js.map +1 -0
  92. package/dist/testing.d.ts +11 -1
  93. package/dist/testing.d.ts.map +1 -1
  94. package/dist/testing.js +17 -3
  95. package/dist/testing.js.map +1 -1
  96. package/dist/zod-jitless.d.ts +2 -0
  97. package/dist/zod-jitless.d.ts.map +1 -0
  98. package/dist/zod-jitless.js +4 -0
  99. package/dist/zod-jitless.js.map +1 -0
  100. package/package.json +1 -1
  101. package/sidecar/server.mjs +73 -6
  102. package/skills/netjes/SKILL.md +13 -6
  103. package/skills/netjes/references/caching-and-streaming.md +37 -4
  104. package/skills/netjes/references/data-and-actions.md +9 -5
  105. package/skills/netjes/references/deployment.md +7 -3
  106. package/skills/netjes/references/routing.md +18 -6
  107. package/skills/netjes/references/testing.md +23 -7
  108. package/src/actions.tsx +9 -3
  109. package/src/client-entry.tsx +43 -2
  110. package/src/deferred.ts +14 -1
  111. package/src/document.tsx +28 -7
  112. package/src/errors.ts +12 -0
  113. package/src/form.tsx +10 -7
  114. package/src/href.ts +123 -8
  115. package/src/image.tsx +3 -3
  116. package/src/index.ts +2 -1
  117. package/src/link.tsx +47 -13
  118. package/src/metadata.tsx +19 -6
  119. package/src/modules.ts +15 -2
  120. package/src/navigation-focus.ts +75 -0
  121. package/src/payload.ts +2 -0
  122. package/src/query.tsx +14 -8
  123. package/src/render-document.tsx +386 -0
  124. package/src/route-announcer.tsx +69 -0
  125. package/src/route-tree.tsx +17 -6
  126. package/src/router.tsx +116 -31
  127. package/src/script.tsx +214 -23
  128. package/src/server-render.tsx +4 -1
  129. package/src/testing-vitest.ts +37 -0
  130. package/src/testing.tsx +31 -5
  131. package/src/virtual.d.ts +2 -0
  132. package/src/zod-jitless.ts +15 -0
  133. package/template/.dockerignore +3 -0
  134. package/template/Dockerfile +11 -1
  135. package/template/README.md +11 -7
  136. package/template/_AGENTS.md +36 -8
  137. package/template/__NAME__.csproj +2 -0
  138. package/template/app/document.test.ts +29 -0
  139. package/template/app/error.tsx +3 -2
  140. package/template/app/layout.tsx +10 -1
  141. package/template/docker-compose.override.yml +4 -3
  142. package/template/docker-compose.prod.yml +2 -1
  143. package/template/e2e/home.spec.ts +32 -0
  144. package/template/generated/netjes.ts +43 -14
  145. package/template/package.json +4 -1
  146. package/template/playwright.config.ts +36 -0
  147. package/template/tests/__NAME__.Tests/AppFactory.cs +31 -0
  148. package/template/tests/__NAME__.Tests/HomePageTests.cs +55 -0
  149. package/template/tests/__NAME__.Tests/__NAME__.Tests.csproj +30 -0
  150. package/template/tsconfig.app.json +20 -0
  151. package/template/tsconfig.json +2 -17
  152. package/template/tsconfig.node.json +8 -0
  153. package/vite/plugin.d.ts +9 -1
  154. package/vite/plugin.mjs +17 -5
package/dist/script.js CHANGED
@@ -1,7 +1,16 @@
1
- import { useEffect, useRef } from 'react';
2
- import { preinit } from 'react-dom';
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useSyncExternalStore } from 'react';
3
+ import { preload } from 'react-dom';
4
+ import { htmlSafeJson } from './deferred.js';
3
5
  import { useNonce } from './nonce.js';
4
- /** Scripts already added to this document, by id or src. */
6
+ /**
7
+ * The name of the `<meta>` a server-rendered `beforeInteractive` script puts in the head, which tells the client entry
8
+ * to run the external ones before it imports the page's modules.
9
+ */
10
+ export const BEFORE_INTERACTIVE_MARKER = 'netjes-before-interactive';
11
+ /** The attribute that marks a server-rendered `beforeInteractive` script, inline or inert, with its id or src. */
12
+ const ENTRY = 'data-netjes-script';
13
+ /** Scripts already added to this document, or run by its parser, by id or src. */
5
14
  const added = new Map();
6
15
  function whenIdle(run) {
7
16
  const schedule = () => typeof window.requestIdleCallback === 'function' ? window.requestIdleCallback(run) : window.setTimeout(run, 1);
@@ -10,55 +19,199 @@ function whenIdle(run) {
10
19
  else
11
20
  window.addEventListener('load', schedule, { once: true });
12
21
  }
13
- function add(key, { src, children, strategy: _strategy, id, onLoad: _onLoad, onError: _onError, ...attributes }) {
14
- const element = document.createElement('script');
15
- for (const [name, value] of Object.entries(attributes)) {
16
- if (value === undefined || value === false || typeof value === 'function' || typeof value === 'object')
22
+ /** A name `setAttribute` takes, other than an event handler's, which React never renders from a string either. */
23
+ const isAttributeName = (name) => /^[A-Za-z_:][-\w.:]*$/.test(name) && !/^on/i.test(name);
24
+ function attributesOf(props) {
25
+ const attributes = {};
26
+ for (const [name, value] of Object.entries(props)) {
27
+ if (value === undefined || value === null || value === false || typeof value === 'function' || typeof value === 'object')
17
28
  continue;
18
- element.setAttribute(name === 'className' ? 'class' : name === 'crossOrigin' ? 'crossorigin' : name, value === true ? '' : String(value));
29
+ const html = name === 'className' ? 'class' : name === 'crossOrigin' ? 'crossorigin' : name;
30
+ if (isAttributeName(html))
31
+ attributes[html] = value === true ? true : String(value);
19
32
  }
33
+ return attributes;
34
+ }
35
+ /** Adds a script element to the document and records it, with its outcome once it has one. */
36
+ function insert(key, { src, code, id, nonce, attributes, async, parent }) {
37
+ const element = document.createElement('script');
38
+ for (const [name, value] of Object.entries(attributes))
39
+ element.setAttribute(name, value === true ? '' : value);
20
40
  if (id)
21
41
  element.id = id;
22
42
  // The property, not the attribute: browsers hide nonce attributes once a policy applies.
23
- if (attributes.nonce)
24
- element.nonce = attributes.nonce;
43
+ if (nonce)
44
+ element.nonce = nonce;
25
45
  const entry = { element, state: 'loading' };
26
46
  element.addEventListener('load', (event) => Object.assign(entry, { state: 'loaded', event }));
27
47
  element.addEventListener('error', (event) => Object.assign(entry, { state: 'failed', event }));
28
48
  if (src) {
29
49
  element.src = src;
30
- element.async = true;
50
+ element.async = async;
31
51
  }
32
52
  else {
33
- element.textContent = children ?? '';
53
+ element.textContent = code ?? '';
34
54
  // Inline scripts run as they are appended; there is no load event to wait for.
35
55
  entry.state = 'loaded';
36
56
  }
37
57
  added.set(key, entry);
38
- document.body.append(element);
58
+ parent.append(element);
39
59
  return entry;
40
60
  }
61
+ function add(key, { src, children, strategy, id, onLoad: _onLoad, onError: _onError, ...rest }) {
62
+ // Inline beforeInteractive code as the server's document carries it, so that one hash allows it on either path.
63
+ const code = strategy === 'beforeInteractive' ? escapeScriptText(children ?? '') : (children ?? '');
64
+ return insert(key, {
65
+ ...(src ? { src } : { code }),
66
+ ...(id ? { id } : {}),
67
+ ...(rest.nonce ? { nonce: rest.nonce } : {}),
68
+ attributes: attributesOf(rest),
69
+ async: true,
70
+ parent: document.body,
71
+ });
72
+ }
73
+ /** What an inert entry holds, the script's src and its attributes, or null when it holds anything else. */
74
+ function externalEntry(text) {
75
+ let value;
76
+ try {
77
+ value = JSON.parse(text ?? '');
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ if (typeof value !== 'object' || value === null)
83
+ return null;
84
+ const { src, attributes } = value;
85
+ if (typeof src !== 'string' || src === '')
86
+ return null;
87
+ const checked = {};
88
+ if (typeof attributes === 'object' && attributes !== null) {
89
+ for (const [name, attribute] of Object.entries(attributes)) {
90
+ if ((typeof attribute === 'string' || attribute === true) && isAttributeName(name) && name.toLowerCase() !== 'nonce')
91
+ checked[name] = attribute;
92
+ }
93
+ }
94
+ return { src, attributes: checked };
95
+ }
96
+ /** The types besides none that browsers run as JavaScript: the HTML standard's JavaScript MIME types. */
97
+ const JAVASCRIPT_TYPES = new Set([
98
+ 'application/ecmascript',
99
+ 'application/javascript',
100
+ 'application/x-ecmascript',
101
+ 'application/x-javascript',
102
+ 'text/ecmascript',
103
+ 'text/javascript',
104
+ 'text/javascript1.0',
105
+ 'text/javascript1.1',
106
+ 'text/javascript1.2',
107
+ 'text/javascript1.3',
108
+ 'text/javascript1.4',
109
+ 'text/javascript1.5',
110
+ 'text/jscript',
111
+ 'text/livescript',
112
+ 'text/x-ecmascript',
113
+ 'text/x-javascript',
114
+ ]);
41
115
  /**
42
- * Like `next/script`: third-party scripts that should not block the page. Renders nothing in place; scripts are
43
- * added to the document once, whichever component renders them first.
116
+ * Whether a browser runs a script with these attributes, by the HTML standard's rules, and so fires its load or error
117
+ * event. One that runs the client entry, a module, skips a script with `nomodule` and one whose type is neither
118
+ * JavaScript nor `module`, such as the `text/plain` of a script a consent manager turns on once the visitor agrees, and
119
+ * fires neither event for it.
120
+ */
121
+ function runs(attributes) {
122
+ const named = {};
123
+ for (const [name, value] of Object.entries(attributes))
124
+ named[name.toLowerCase()] = value === true ? '' : value;
125
+ const type = named.type ?? (named.language ? `text/${named.language}` : '');
126
+ if (type === '')
127
+ return named.nomodule === undefined;
128
+ const essence = type.replace(/^[\t\n\f\r ]+|[\t\n\f\r ]+$/g, '').toLowerCase();
129
+ return essence === 'module' || (JAVASCRIPT_TYPES.has(essence) && named.nomodule === undefined);
130
+ }
131
+ /** Resolves once the script has loaded or failed. */
132
+ function outcome(entry) {
133
+ if (entry.state !== 'loading')
134
+ return Promise.resolve();
135
+ return new Promise((resolve) => {
136
+ entry.element.addEventListener('load', () => resolve(), { once: true });
137
+ entry.element.addEventListener('error', () => resolve(), { once: true });
138
+ });
139
+ }
140
+ /**
141
+ * Takes over the `beforeInteractive` scripts the server rendered into the document, in document order, those not yet
142
+ * taken over. Inline code has run where it stands: it is recorded, so that a component that mounts again (after a
143
+ * hydration error) does not add it once more. Each external script's inert entry becomes a script at the end of the
144
+ * head, not async, so the browser runs them in this order as they arrive, with the page's nonce. Under a nonce, only
145
+ * entries with that nonce count: markup that reached the page some other way does not know it. Resolves once every
146
+ * external script it added has loaded or failed.
147
+ */
148
+ export function adoptServerScripts(nonce) {
149
+ const waits = [];
150
+ for (const element of document.querySelectorAll(`script[${ENTRY}]`)) {
151
+ const key = element.getAttribute(ENTRY);
152
+ if (!key || added.has(key) || (nonce && element.nonce !== nonce))
153
+ continue;
154
+ const external = element.type === 'application/json' ? externalEntry(element.textContent) : null;
155
+ if (external) {
156
+ const entry = insert(key, { ...external, ...(nonce ? { nonce } : {}), async: false, parent: document.head });
157
+ if (runs(external.attributes))
158
+ waits.push(outcome(entry));
159
+ }
160
+ else {
161
+ added.set(key, { element, state: 'loaded' });
162
+ }
163
+ }
164
+ return Promise.all(waits).then(() => undefined);
165
+ }
166
+ /**
167
+ * React's own rule for the text of an inline script: `</script` would close the element and `<script` would make the
168
+ * parser look for a second closing tag, so their `s` is written `\u0073` (or `S` as `\u0053`), which JavaScript reads as the
169
+ * same letter in strings, template literals, regular expressions and names.
170
+ */
171
+ const SCRIPT_TAG = /(<\/|<)(s)(cript)/gi;
172
+ const escapeScriptText = (code) => code.replace(SCRIPT_TAG, (_match, open, s, rest) => `${open}${s === 's' ? '\\u0073' : '\\u0053'}${rest}`);
173
+ const subscribeToNothing = () => () => { };
174
+ /** Scripts warned about already: each is warned about once. */
175
+ const warned = new Set();
176
+ function warnAboutTiming(key, { async, defer, type }) {
177
+ if (process.env.NODE_ENV === 'production' || warned.has(key))
178
+ return;
179
+ const found = [async && 'async', defer && 'defer', type === 'module' && 'type="module"'].filter(Boolean);
180
+ if (found.length === 0)
181
+ return;
182
+ warned.add(key);
183
+ console.warn(`netjes: <Script strategy="beforeInteractive"> "${key}" has ${found.join(', ')}. A beforeInteractive script runs ` +
184
+ "in order, before the page's code, whatever async and defer say, and type=\"module\" makes inline code wait until " +
185
+ 'the whole document is parsed. Leave them out, or use strategy="afterInteractive".');
186
+ }
187
+ /**
188
+ * A script loaded by strategy, like `next/script`: `afterInteractive` and `lazyOnload` do not block the page. Scripts
189
+ * are added to the document once, whichever component renders them first, except inline `beforeInteractive` code, which
190
+ * the server writes wherever a component renders it. Only `beforeInteractive` renders anything where it stands, and
191
+ * only into a server-rendered document: the inline script, or an inert entry for an external one, and a marker in the
192
+ * head.
44
193
  */
45
194
  export function Script(given) {
46
195
  const pageNonce = useNonce();
47
196
  const props = given.nonce || !pageNonce ? given : { ...given, nonce: pageNonce };
48
- const { src, id, strategy = 'afterInteractive', onLoad, onError, nonce, crossOrigin, integrity } = props;
197
+ const { src, id, strategy = 'afterInteractive', onLoad, onError, nonce, crossOrigin, integrity, children } = props;
49
198
  const callbacks = useRef({ onLoad, onError });
50
199
  callbacks.current = { onLoad, onError };
51
200
  const key = id ?? src;
52
- if (strategy === 'beforeInteractive' && src) {
53
- preinit(src, { as: 'script', ...(nonce ? { nonce } : {}), ...(integrity ? { integrity } : {}), ...(crossOrigin ? { crossOrigin } : {}) });
54
- }
201
+ // True on the server and while this component hydrates, and for as long as it stays mounted after that, so that it
202
+ // keeps the markup it hydrated. False when it mounts in the browser.
203
+ const fromServer = useRef(useSyncExternalStore(subscribeToNothing, () => false, () => true)).current;
204
+ const inDocument = strategy === 'beforeInteractive' && fromServer && key !== undefined;
55
205
  useEffect(() => {
56
- if (!key || (strategy === 'beforeInteractive' && src))
206
+ if (!key)
57
207
  return;
58
208
  let cancelled = false;
59
209
  const attach = () => {
60
210
  if (cancelled)
61
211
  return;
212
+ // An entry that streamed in after the client entry took the others over is taken over now.
213
+ if (inDocument && !added.has(key))
214
+ void adoptServerScripts(pageNonce);
62
215
  const entry = added.get(key) ?? add(key, props);
63
216
  const notify = () => {
64
217
  if (cancelled)
@@ -84,6 +237,24 @@ export function Script(given) {
84
237
  };
85
238
  // The script is identified by its key; changing other props does not add it again.
86
239
  }, [key, strategy]);
87
- return null;
240
+ if (!inDocument)
241
+ return null;
242
+ warnAboutTiming(key, props);
243
+ const { strategy: _strategy, onLoad: _onLoad, onError: _onError, children: _children, src: _src, id: _id, nonce: _nonce, ...rest } = props;
244
+ // In the head, where the client entry looks for it once it has the payload.
245
+ const marker = _jsx("meta", { name: BEFORE_INTERACTIVE_MARKER });
246
+ if (!src) {
247
+ // Written as it is (React would escape text children, and they would not match the server's); escaped as React
248
+ // escapes its own scripts, so the text cannot end the element. A hash-based policy lists the hash of that text.
249
+ return (_jsxs(_Fragment, { children: [marker, _jsx("script", { ...rest, id: id, nonce: nonce, "data-netjes-script": key, dangerouslySetInnerHTML: { __html: escapeScriptText(children ?? '') } })] }));
250
+ }
251
+ // The id goes to the script the entry becomes, not to the entry.
252
+ const attributes = attributesOf(id ? { ...rest, id } : rest);
253
+ // The browser fetches it while it parses; adoptServerScripts runs it from the entry. A script the browser will not run
254
+ // is not fetched: a consent manager's would reach its host before the visitor agreed.
255
+ if (runs(attributes)) {
256
+ preload(src, { as: 'script', ...(nonce ? { nonce } : {}), ...(integrity ? { integrity } : {}), ...(crossOrigin !== undefined ? { crossOrigin } : {}) });
257
+ }
258
+ return (_jsxs(_Fragment, { children: [marker, _jsx("script", { type: "application/json", nonce: nonce, "data-netjes-script": key, dangerouslySetInnerHTML: { __html: htmlSafeJson({ src, attributes }) } })] }));
88
259
  }
89
260
  //# sourceMappingURL=script.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,aAAa,CAAC;AAIjE,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,cAAc,CAAC;AAKlE,MAAM,MAAM,aAAa,GAAG;IAC1B,+GAA+G;IAC/G,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kHAAkH;IAClH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C,mHAAmH;IACnH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAmKF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS;IAGnD,8FAA8F;IACxF,MAAM,WAAW,MAAM,YAAW,aAAa,GAAQ,OAAO,CAAC,MAAM,CAAC;IAc5E,gEAAgE;IAC1D,cAAc,WAAW,MAAM,YAAW,aAAa,GAAQ,OAAO,CAAC,QAAQ,CAAC;EAqBzF"}
1
+ {"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,aAAa,CAAC;AAKjE,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,cAAc,CAAC;AAKlE,MAAM,MAAM,aAAa,GAAG;IAC1B,+GAA+G;IAC/G,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kHAAkH;IAClH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C,mHAAmH;IACnH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAqKF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS;IAGnD,8FAA8F;IACxF,MAAM,WAAW,MAAM,YAAW,aAAa,GAAQ,OAAO,CAAC,MAAM,CAAC;IAc5E,gEAAgE;IAC1D,cAAc,WAAW,MAAM,YAAW,aAAa,GAAQ,OAAO,CAAC,QAAQ,CAAC;EAqBzF"}
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Transform, Writable } from 'node:stream';
3
3
  import { renderToPipeableStream } from 'react-dom/server';
4
4
  import { deferredScript, revivePayload } from './deferred.js';
5
+ import { isWithheld } from './errors.js';
5
6
  import { createModuleLoader } from './modules.js';
6
7
  import { parseInitialPayload } from './payload.js';
7
8
  import { RenderCleanupContext } from './render-cleanup.js';
@@ -58,7 +59,9 @@ function renderToStream(element, options, deferredIds, source, nonce) {
58
59
  queued.push(script);
59
60
  };
60
61
  for (const id of deferredIds) {
61
- source(id).then((value) => send(deferredScript(id, value, undefined, nonce)), (error) => send(deferredScript(id, null, error instanceof Error ? error.message : String(error), nonce)));
62
+ source(id).then((value) => send(deferredScript(id, value, undefined, nonce)),
63
+ // A withheld message goes on as an empty one, which the browser replaces with its own stand-in.
64
+ (error) => send(deferredScript(id, null, isWithheld(error) ? '' : error instanceof Error ? error.message : String(error), nonce)));
62
65
  }
63
66
  let started = false;
64
67
  const start = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"server-render.js","sourceRoot":"","sources":["../src/server-render.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-render.js","sourceRoot":"","sources":["../src/server-render.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DefaultOptions } from '@tanstack/react-query';
2
+ declare module 'vitest' {
3
+ interface ProvidedContext {
4
+ /** The app's `netjes({ query: { defaultOptions } })`, which netjes() provides to its tests. */
5
+ 'netjes:query': DefaultOptions;
6
+ }
7
+ }
8
+ //# sourceMappingURL=testing-vitest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-vitest.d.ts","sourceRoot":"","sources":["../src/testing-vitest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,eAAe;QACvB,+FAA+F;QAC/F,cAAc,EAAE,cAAc,CAAC;KAChC;CACF"}
@@ -0,0 +1,26 @@
1
+ import { inject, vi } from 'vitest';
2
+ // The app's query defaults, for createTestApp. They wait under a global symbol rather than in a module: the app's
3
+ // imports of netjes/testing need not share module instances with this file, which Vitest loads by its path.
4
+ const appQueryDefaults = inject('netjes:query');
5
+ if (typeof appQueryDefaults === 'object' && appQueryDefaults !== null) {
6
+ globalThis[Symbol.for('netjes.testing.queryDefaults')] = appQueryDefaults;
7
+ }
8
+ // Testing Library advances fake timers only through Jest's global: without one, waitFor, findBy and every user-event
9
+ // call wait on a faked setTimeout that nothing advances, so they never return. While Vitest's timers are fake, `jest`
10
+ // is a bridge to them; otherwise it is undefined, so code that looks for Jest finds none. A jest global that was
11
+ // already there is left alone, and one a test assigns replaces the bridge.
12
+ if (!('jest' in globalThis)) {
13
+ const bridge = {
14
+ advanceTimersByTime(ms) {
15
+ vi.advanceTimersByTime(ms);
16
+ },
17
+ };
18
+ Object.defineProperty(globalThis, 'jest', {
19
+ configurable: true,
20
+ get: () => (vi.isFakeTimers() ? bridge : undefined),
21
+ set(value) {
22
+ Object.defineProperty(globalThis, 'jest', { configurable: true, enumerable: true, writable: true, value });
23
+ },
24
+ });
25
+ }
26
+ //# sourceMappingURL=testing-vitest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing-vitest.js","sourceRoot":"","sources":["../src/testing-vitest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AASpC,kHAAkH;AAClH,4GAA4G;AAC5G,MAAM,gBAAgB,GAAY,MAAM,CAAC,cAAc,CAAC,CAAC;AACzD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;IACrE,UAAsC,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,GAAG,gBAAgB,CAAC;AACzG,CAAC;AAED,qHAAqH;AACrH,sHAAsH;AACtH,iHAAiH;AACjH,2EAA2E;AAC3E,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,mBAAmB,CAAC,EAAU;YAC5B,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,GAAG,CAAC,KAAc;YAChB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7G,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/dist/testing.d.ts CHANGED
@@ -3,6 +3,7 @@ import { type ReactNode } from 'react';
3
3
  import { type ActionState } from './actions.tsx';
4
4
  import type { AntiforgeryToken, Params } from './payload.ts';
5
5
  import { type NavigationState } from './router.tsx';
6
+ export { type RenderDocumentOptions, inlineScriptHashes, renderDocument } from './render-document.tsx';
6
7
  /** What the fake app of `createTestApp` reports to the components under test. */
7
8
  export type TestAppOptions = {
8
9
  /** The current URL. Default `/`. */
@@ -23,7 +24,10 @@ export type TestAppOptions = {
23
24
  key: readonly unknown[];
24
25
  data: unknown;
25
26
  }>;
26
- /** Like `netjes({ query: { defaultOptions } })`; the harness also turns retries off. */
27
+ /**
28
+ * Like `netjes({ query: { defaultOptions } })`, merged over the harness's own: failed queries and mutations are tried
29
+ * as often as in the app, with no wait between the tries, and no query's data is garbage-collected.
30
+ */
27
31
  defaultOptions?: DefaultOptions;
28
32
  /** What `useNavigation()` returns. Default idle. */
29
33
  navigation?: NavigationState;
@@ -45,6 +49,12 @@ export type TestActionAnswer = ActionState<unknown> & {
45
49
  invalidate?: ReadonlyArray<readonly unknown[]>;
46
50
  /** After a failure: the submitted fields the state's `values` keep, as the server names them (the action's declared, non-private fields). Default: all. */
47
51
  fields?: readonly string[];
52
+ /**
53
+ * After a failure other than a 422: the message the server would send, which the `ServerActionError` then carries, as
54
+ * the server does for a 4xx (`Forbidden`) and for a 5xx with error details on. Without one, the call fails as a 5xx
55
+ * does with error details off: the error's message is Netjes's own and `withheld` is true.
56
+ */
57
+ message?: string;
48
58
  };
49
59
  /** One thing the component under test did: a navigation, a router call, a form post or a server action call. */
50
60
  export type TestNavigation = {
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,WAAW,EAAgC,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,KAAK,SAAS,EAAsC,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAqB,KAAK,WAAW,EAAmB,MAAM,eAAe,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAuB,KAAK,eAAe,EAAmC,MAAM,cAAc,CAAC;AAE1G,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG;IAC3B,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpE,wFAAwF;IACxF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oDAAoD;IACpD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,qFAAqF;IACrF,WAAW,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC5F,CAAC;AAEF,8GAA8G;AAC9G,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IAC/C,2JAA2J;IAC3J,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,gHAAgH;AAChH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAErD,mHAAmH;AACnH,MAAM,MAAM,OAAO,GAAG;IACpB,2CAA2C;IAC3C,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAC;IACvD,6DAA6D;IAC7D,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAmBF,wKAAwK;AACxK,wBAAgB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CA6FnE"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.tsx"],"names":[],"mappings":"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"}
package/dist/testing.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // Test harness for components and pages that use Netjes: `render(<Page />, { wrapper: createTestApp().Wrapper })`.
3
3
  // The router is a fake: it records what the component asked for and moves to the new URL, but loads nothing.
4
+ // renderDocument renders a page's whole document instead, as the server would send it.
4
5
  import { QueryClient, QueryClientProvider, hydrate } from '@tanstack/react-query';
5
6
  import { useLayoutEffect, useMemo, useState } from 'react';
6
7
  import { setActionClient } from './actions.js';
7
8
  import { PublicConfigProvider } from './public-config.js';
8
9
  import { dehydratedStateOf, mergeOptions } from './query.js';
9
10
  import { RouterContexts } from './router.js';
11
+ export { inlineScriptHashes, renderDocument } from './render-document.js';
10
12
  /**
11
13
  * Registers the stand-in in the commit, and only then: a render React throws away (`renderToString`, children that
12
14
  * threw) leaves calls made outside any Wrapper failing at once. React runs the effects of earlier siblings first, and
@@ -18,15 +20,26 @@ function RegisterActionClient({ client }) {
18
20
  return null;
19
21
  }
20
22
  const TEST_TOKEN = { formFieldName: '__RequestVerificationToken', headerName: 'RequestVerificationToken', requestToken: 'test-token' };
23
+ /**
24
+ * The harness's own query defaults, over the app's: a failed query or mutation is tried as often as in the app, but
25
+ * without the wait between the tries (TanStack Query's 1, 2 and 4 seconds would outlast a test), and data stays in the
26
+ * client for the whole test.
27
+ */
28
+ const HARNESS_DEFAULTS = { queries: { retryDelay: 0, gcTime: Number.POSITIVE_INFINITY }, mutations: { retryDelay: 0 } };
29
+ /** The app's `netjes({ query })` defaults, where Netjes's Vitest setup file keeps them (src/testing-vitest.ts). */
30
+ const APP_QUERY_DEFAULTS = Symbol.for('netjes.testing.queryDefaults');
31
+ function appQueryDefaults() {
32
+ return globalThis[APP_QUERY_DEFAULTS];
33
+ }
21
34
  function dataOf(body) {
22
35
  return body.contentType === null ? body.body : new URLSearchParams(body.body);
23
36
  }
24
37
  /** Creates a fake app around the components under test: pass its `Wrapper` to Testing Library's `render`. The router loads nothing; it records what was asked of it. */
25
38
  export function createTestApp(options = {}) {
26
39
  const navigations = [];
27
- const defaults = mergeOptions(options.defaultOptions);
28
- const queryClient = options.queryClient ??
29
- new QueryClient({ defaultOptions: { ...defaults, queries: { retry: false, gcTime: Number.POSITIVE_INFINITY, ...defaults.queries } } });
40
+ // The Netjes defaults, then the app's, then the harness's, then the test's.
41
+ const defaultOptions = mergeOptions(appQueryDefaults(), HARNESS_DEFAULTS, options.defaultOptions);
42
+ const queryClient = options.queryClient ?? new QueryClient({ defaultOptions });
30
43
  const now = Date.now();
31
44
  const seeded = dehydratedStateOf(options.queries?.map((query) => ({ ...query, updatedAt: now })));
32
45
  if (seeded)
@@ -52,6 +65,7 @@ export function createTestApp(options = {}) {
52
65
  status: answer.status,
53
66
  errors: answer.errors,
54
67
  ...(answer.fields ? { fields: [...answer.fields] } : {}),
68
+ ...(answer.message !== undefined ? { message: answer.message } : {}),
55
69
  revalidate: false,
56
70
  };
57
71
  },
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zod-jitless.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-jitless.d.ts","sourceRoot":"","sources":["../src/zod-jitless.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ (globalThis.__zod_globalConfig ??= {}).jitless = true;
2
+ // A module, not a script, so that the type above stays its own.
3
+ export {};
4
+ //# sourceMappingURL=zod-jitless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-jitless.js","sourceRoot":"","sources":["../src/zod-jitless.ts"],"names":[],"mappings":"AAWA,CAAE,UAAoC,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AAEjF,gEAAgE;AAChE,OAAO,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "netjes",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Build React apps and sites on ASP.NET Core: the Next.js App Router conventions, C# loaders and server actions, streaming SSR and types from C# to the browser",
5
5
  "keywords": [
6
6
  "react",