@alxia/react-router 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +370 -20
  2. package/dist/chunks/index-5rt6hnhn.js +42 -0
  3. package/dist/chunks/index-5rt6hnhn.js.map +11 -0
  4. package/dist/chunks/{index-mppz0806.js → index-6jf7zpxz.js} +5 -5
  5. package/dist/chunks/{index-mppz0806.js.map → index-6jf7zpxz.js.map} +1 -1
  6. package/dist/chunks/index-y6vpnjr3.js +123 -0
  7. package/dist/chunks/index-y6vpnjr3.js.map +14 -0
  8. package/dist/context.d.ts +0 -7
  9. package/dist/context.d.ts.map +1 -1
  10. package/dist/document/index.d.ts +11 -0
  11. package/dist/document/index.d.ts.map +1 -0
  12. package/dist/document/index.js +19 -0
  13. package/dist/document/index.js.map +9 -0
  14. package/dist/document/inline-script.d.ts +27 -0
  15. package/dist/document/inline-script.d.ts.map +1 -0
  16. package/dist/document/language-store.d.ts +8 -0
  17. package/dist/document/language-store.d.ts.map +1 -0
  18. package/dist/document/nonce.d.ts +34 -0
  19. package/dist/document/nonce.d.ts.map +1 -0
  20. package/dist/document/page-language.d.ts +39 -0
  21. package/dist/document/page-language.d.ts.map +1 -0
  22. package/dist/document/text-direction.d.ts +10 -0
  23. package/dist/document/text-direction.d.ts.map +1 -0
  24. package/dist/entry/abort.d.ts +21 -0
  25. package/dist/entry/abort.d.ts.map +1 -0
  26. package/dist/entry/create-entry.d.ts +32 -0
  27. package/dist/entry/create-entry.d.ts.map +1 -0
  28. package/dist/entry/index.d.ts +8 -0
  29. package/dist/entry/index.d.ts.map +1 -0
  30. package/dist/entry/index.js +128 -0
  31. package/dist/entry/index.js.map +12 -0
  32. package/dist/entry/whole-page.d.ts +10 -0
  33. package/dist/entry/whole-page.d.ts.map +1 -0
  34. package/dist/errors/api-error.d.ts +86 -0
  35. package/dist/errors/api-error.d.ts.map +1 -0
  36. package/dist/errors/api-errors.d.ts +96 -0
  37. package/dist/errors/api-errors.d.ts.map +1 -0
  38. package/dist/errors/call-failure.d.ts +45 -0
  39. package/dist/errors/call-failure.d.ts.map +1 -0
  40. package/dist/errors/catalogue-check.d.ts +24 -0
  41. package/dist/errors/catalogue-check.d.ts.map +1 -0
  42. package/dist/errors/catalogue-read.d.ts +33 -0
  43. package/dist/errors/catalogue-read.d.ts.map +1 -0
  44. package/dist/errors/catalogue.d.ts +59 -0
  45. package/dist/errors/catalogue.d.ts.map +1 -0
  46. package/dist/errors/code-resolver.d.ts +44 -0
  47. package/dist/errors/code-resolver.d.ts.map +1 -0
  48. package/dist/errors/describe-refusal.d.ts +6 -0
  49. package/dist/errors/describe-refusal.d.ts.map +1 -0
  50. package/dist/errors/describe.d.ts +3 -0
  51. package/dist/errors/describe.d.ts.map +1 -0
  52. package/dist/errors/fetcher-result.d.ts +21 -0
  53. package/dist/errors/fetcher-result.d.ts.map +1 -0
  54. package/dist/errors/form-errors.d.ts +8 -0
  55. package/dist/errors/form-errors.d.ts.map +1 -0
  56. package/dist/errors/index.d.ts +15 -0
  57. package/dist/errors/index.d.ts.map +1 -0
  58. package/dist/errors/index.js +602 -0
  59. package/dist/errors/index.js.map +29 -0
  60. package/dist/errors/json-actions.d.ts +38 -0
  61. package/dist/errors/json-actions.d.ts.map +1 -0
  62. package/dist/errors/log.d.ts +8 -0
  63. package/dist/errors/log.d.ts.map +1 -0
  64. package/dist/errors/message-values.d.ts +11 -0
  65. package/dist/errors/message-values.d.ts.map +1 -0
  66. package/dist/errors/messages.d.ts +63 -0
  67. package/dist/errors/messages.d.ts.map +1 -0
  68. package/dist/errors/page-path.d.ts +9 -0
  69. package/dist/errors/page-path.d.ts.map +1 -0
  70. package/dist/errors/provider.d.ts +20 -0
  71. package/dist/errors/provider.d.ts.map +1 -0
  72. package/dist/errors/request-id.d.ts +5 -0
  73. package/dist/errors/request-id.d.ts.map +1 -0
  74. package/dist/errors/route-error.d.ts +31 -0
  75. package/dist/errors/route-error.d.ts.map +1 -0
  76. package/dist/errors/standard-schema.d.ts +34 -0
  77. package/dist/errors/standard-schema.d.ts.map +1 -0
  78. package/dist/errors/submit-form.d.ts +16 -0
  79. package/dist/errors/submit-form.d.ts.map +1 -0
  80. package/dist/errors/use-json-fetcher.d.ts +18 -0
  81. package/dist/errors/use-json-fetcher.d.ts.map +1 -0
  82. package/dist/index.js +13 -34
  83. package/dist/index.js.map +3 -5
  84. package/dist/pwa/build/index.js +1 -1
  85. package/dist/pwa/index.js +6 -6
  86. package/dist/pwa/index.js.map +1 -1
  87. package/dist/vite/index.d.ts.map +1 -1
  88. package/dist/vite/index.js +29 -2
  89. package/dist/vite/index.js.map +5 -4
  90. package/dist/vite/inline.d.ts +18 -0
  91. package/dist/vite/inline.d.ts.map +1 -0
  92. package/docs/README.md +3 -1
  93. package/docs/guide/csp-nonce.md +35 -3
  94. package/docs/guide/document.md +310 -0
  95. package/docs/guide/errors.md +838 -0
  96. package/docs/roadmap.md +36 -1
  97. package/docs/troubleshooting.md +712 -1
  98. package/package.json +33 -3
package/docs/roadmap.md CHANGED
@@ -7,7 +7,7 @@ number on it. Every release, with each change it made, is in
7
7
 
8
8
  ## Now
9
9
 
10
- Nothing in progress.
10
+ Nothing planned.
11
11
 
12
12
  ## Next
13
13
 
@@ -15,6 +15,8 @@ Nothing planned.
15
15
 
16
16
  ## Later
17
17
 
18
+ - **Hreflang alternates** for an app with one URL per language. Today the
19
+ language is negotiated on a single URL, so there is no alternate to link.
18
20
  - **`service-worker.js` served revalidated with no setup.** Today the app
19
21
  adds `noCache` for `SERVICE_WORKER_URL` itself.
20
22
  - **A check of an offline page's policy.** The offline page declares its
@@ -33,6 +35,8 @@ Nothing planned.
33
35
 
34
36
  ## Not planned
35
37
 
38
+ - **The theme's own boot script.** `InlineScript` renders it with the nonce;
39
+ its text, its storage keys and class names, are the UI library's.
36
40
  - **React Router 7.** Its loaders' context is a `RouterContextProvider`
37
41
  only behind `future.v8_middleware`, and the line is in maintenance.
38
42
  - **Node or Cloudflare.** alxia is a Bun framework; React Router's own
@@ -53,6 +57,37 @@ Nothing planned.
53
57
 
54
58
  ## Shipped
55
59
 
60
+ ### 0.12.0
61
+
62
+ - **`@alxia/react-router/document` and `/entry`: the boot of a page.**
63
+ `DocumentNonce`, `useNonce`, `InlineScript` and `CspNonceMeta` give the
64
+ root the response's CSP nonce, an inline boot script that carries it and
65
+ the `csp-nonce` meta; `createPageLanguage` and `textDirection` give the
66
+ page's language and text direction. `entry.server.tsx` becomes
67
+ `export { handleRequest as default, streamTimeout } from '@alxia/react-router/entry'`:
68
+ a streamed shell on Bun's web renderer, the whole page for a bot and in SPA
69
+ mode, no body for HEAD, and the nonce handed to the router, with no
70
+ `@react-router/node` and no `node:stream`.
71
+
72
+ ### 0.11.0
73
+
74
+ - **`@alxia/react-router/errors`: an API's refusals, worded for the page.**
75
+ A server's GraphQL refusals (`<module>.errors.<slug>`, `params`, `fields`)
76
+ are worded from its error catalogue in the page's language, for forms,
77
+ fetchers, loaders and the error page, with no UI. You get the shape of a
78
+ refusal, the request id and `nextOf`, the catalogue store
79
+ (`createApiMessages`), the form checks' resolver (`apiCodeResolver`), the
80
+ provider (`ApiMessagesProvider`) and the wording of a refusal
81
+ (`createApiErrors`: message, fields and status), the route helpers
82
+ (`routeError`, `errorRequestId`) and the actions' helpers (`fetcherResult`,
83
+ `fetcherRefusal`, `submitForm`), the JSON actions (`jsonActions`:
84
+ `readJson` with its same-origin CSRF check, `requireJsonPost`, and
85
+ `readInput` over a Standard Schema) with their fetcher hook
86
+ (`useJsonFetcher`), the catalogue's refresh (`createErrorCatalogue`: read
87
+ on first use with a bounded wait, checked against the API's versions once
88
+ per TTL, `warm()` at startup, `clientMessages()` for the root), and the
89
+ failures of a call (`apiCallFailure`, `operationName`) ([guide](guide/errors.md)).
90
+
56
91
  ### 0.10.0
57
92
 
58
93
  - **`@alxia/react-router/pwa/worker`.** `startWorker({ contract })` is the