@bleedingdev/modern-js-runtime-extensions 3.8.3-ultramodern.6 → 3.9.0-ultramodern.10

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 (200) hide show
  1. package/dist/cjs/buildIdentity.js +73 -0
  2. package/dist/cjs/contextExtensions.js +74 -0
  3. package/dist/cjs/headRuntime.js +91 -0
  4. package/dist/cjs/helmetContext.js +54 -0
  5. package/dist/cjs/index.js +18 -4
  6. package/dist/cjs/localisedLoaderIdentity.js +51 -0
  7. package/dist/cjs/prefetchPolicy.js +52 -0
  8. package/dist/cjs/reactContext.js +45 -0
  9. package/dist/cjs/request-policy/browser.js +139 -0
  10. package/dist/cjs/request-policy/client.js +234 -0
  11. package/dist/cjs/request-policy/node.js +149 -0
  12. package/dist/cjs/request-policy/policyCore.js +266 -0
  13. package/dist/cjs/request-policy/requestContext.js +137 -0
  14. package/dist/cjs/request-policy/traceparent.js +56 -0
  15. package/dist/cjs/request-policy/transport.js +234 -0
  16. package/dist/cjs/request-policy/types.js +57 -0
  17. package/dist/cjs/routeHydration.js +127 -0
  18. package/dist/cjs/routerPrefetchPolicy.js +153 -0
  19. package/dist/cjs/routerProvider.js +105 -0
  20. package/dist/cjs/routerState.js +204 -0
  21. package/dist/cjs/routerStatePlugin.js +86 -0
  22. package/dist/cjs/routerStateTypes.js +18 -0
  23. package/dist/cjs/rsc-disabled/rscDisabledClientBrowserRuntime.js +69 -0
  24. package/dist/cjs/rsc-disabled/rscDisabledClientEdgeRuntime.js +61 -0
  25. package/dist/cjs/rsc-disabled/rscDisabledClientNodeRuntime.js +65 -0
  26. package/dist/cjs/rsc-disabled/rscDisabledRuntimeError.js +42 -0
  27. package/dist/cjs/rsc-disabled/rscDisabledServerEdgeRuntime.js +93 -0
  28. package/dist/cjs/rsc-disabled/rscDisabledServerNodeRuntime.js +101 -0
  29. package/dist/cjs/runtimeContextProjection.js +112 -0
  30. package/dist/cjs/server-config/bffRuntime.js +18 -0
  31. package/dist/cjs/server-config/index.js +18 -0
  32. package/dist/cjs/server-config/serverTelemetry.js +18 -0
  33. package/dist/cjs/shellStream.js +34 -2
  34. package/dist/cjs/workspaceEvents.js +159 -0
  35. package/dist/esm/buildIdentity.mjs +35 -0
  36. package/dist/esm/contextExtensions.mjs +33 -0
  37. package/dist/esm/headRuntime.mjs +43 -0
  38. package/dist/esm/helmetContext.mjs +13 -0
  39. package/dist/esm/index.mjs +2 -0
  40. package/dist/esm/localisedLoaderIdentity.mjs +13 -0
  41. package/dist/esm/prefetchPolicy.mjs +11 -0
  42. package/dist/esm/reactContext.mjs +7 -0
  43. package/dist/esm/request-policy/browser.mjs +11 -0
  44. package/dist/esm/request-policy/client.mjs +195 -0
  45. package/dist/esm/request-policy/policyCore.mjs +171 -0
  46. package/dist/esm/request-policy/requestContext.mjs +75 -0
  47. package/dist/esm/request-policy/traceparent.mjs +18 -0
  48. package/dist/esm/request-policy/transport.mjs +196 -0
  49. package/dist/esm/request-policy/types.mjs +10 -0
  50. package/dist/esm/routeHydration.mjs +77 -0
  51. package/dist/esm/routerPrefetchPolicy.mjs +115 -0
  52. package/dist/esm/routerProvider.mjs +58 -0
  53. package/dist/esm/routerState.mjs +139 -0
  54. package/dist/esm/routerStatePlugin.mjs +48 -0
  55. package/dist/esm/routerStateTypes.mjs +0 -0
  56. package/dist/esm/rsc-disabled/rscDisabledClientBrowserRuntime.mjs +10 -0
  57. package/dist/esm/rsc-disabled/rscDisabledClientEdgeRuntime.mjs +8 -0
  58. package/dist/esm/rsc-disabled/rscDisabledClientNodeRuntime.mjs +9 -0
  59. package/dist/esm/rsc-disabled/rscDisabledRuntimeError.mjs +4 -0
  60. package/dist/esm/rsc-disabled/rscDisabledServerEdgeRuntime.mjs +16 -0
  61. package/dist/esm/rsc-disabled/rscDisabledServerNodeRuntime.mjs +18 -0
  62. package/dist/esm/runtimeContextProjection.mjs +74 -0
  63. package/dist/esm/server-config/bffRuntime.mjs +0 -0
  64. package/dist/esm/server-config/index.mjs +0 -0
  65. package/dist/esm/server-config/serverTelemetry.mjs +0 -0
  66. package/dist/esm/shellStream.mjs +34 -2
  67. package/dist/esm/workspaceEvents.mjs +66 -0
  68. package/dist/esm-node/buildIdentity.mjs +36 -0
  69. package/dist/esm-node/contextExtensions.mjs +34 -0
  70. package/dist/esm-node/headRuntime.mjs +44 -0
  71. package/dist/esm-node/helmetContext.mjs +14 -0
  72. package/dist/esm-node/index.mjs +2 -0
  73. package/dist/esm-node/localisedLoaderIdentity.mjs +14 -0
  74. package/dist/esm-node/prefetchPolicy.mjs +12 -0
  75. package/dist/esm-node/reactContext.mjs +8 -0
  76. package/dist/esm-node/request-policy/browser.mjs +12 -0
  77. package/dist/esm-node/request-policy/client.mjs +196 -0
  78. package/dist/esm-node/request-policy/node.mjs +22 -0
  79. package/dist/esm-node/request-policy/policyCore.mjs +172 -0
  80. package/dist/esm-node/request-policy/requestContext.mjs +76 -0
  81. package/dist/esm-node/request-policy/traceparent.mjs +19 -0
  82. package/dist/esm-node/request-policy/transport.mjs +197 -0
  83. package/dist/esm-node/request-policy/types.mjs +11 -0
  84. package/dist/esm-node/routeHydration.mjs +78 -0
  85. package/dist/esm-node/routerPrefetchPolicy.mjs +116 -0
  86. package/dist/esm-node/routerProvider.mjs +59 -0
  87. package/dist/esm-node/routerState.mjs +140 -0
  88. package/dist/esm-node/routerStatePlugin.mjs +49 -0
  89. package/dist/esm-node/routerStateTypes.mjs +1 -0
  90. package/dist/esm-node/rsc-disabled/rscDisabledClientBrowserRuntime.mjs +11 -0
  91. package/dist/esm-node/rsc-disabled/rscDisabledClientEdgeRuntime.mjs +9 -0
  92. package/dist/esm-node/rsc-disabled/rscDisabledClientNodeRuntime.mjs +10 -0
  93. package/dist/esm-node/rsc-disabled/rscDisabledRuntimeError.mjs +5 -0
  94. package/dist/esm-node/rsc-disabled/rscDisabledServerEdgeRuntime.mjs +17 -0
  95. package/dist/esm-node/rsc-disabled/rscDisabledServerNodeRuntime.mjs +19 -0
  96. package/dist/esm-node/runtimeContextProjection.mjs +75 -0
  97. package/dist/esm-node/server-config/bffRuntime.mjs +1 -0
  98. package/dist/esm-node/server-config/index.mjs +1 -0
  99. package/dist/esm-node/server-config/serverTelemetry.mjs +1 -0
  100. package/dist/esm-node/shellStream.mjs +34 -2
  101. package/dist/esm-node/workspaceEvents.mjs +67 -0
  102. package/dist/types/buildIdentity.d.ts +37 -0
  103. package/dist/types/contextExtensions.d.ts +34 -0
  104. package/dist/types/headRuntime.d.ts +12 -0
  105. package/dist/types/helmetContext.d.ts +10 -0
  106. package/dist/types/index.d.ts +6 -4
  107. package/dist/types/localisedLoaderIdentity.d.ts +10 -0
  108. package/dist/types/node.d.ts +1 -1
  109. package/dist/types/prefetchPolicy.d.ts +4 -0
  110. package/dist/types/reactContext.d.ts +6 -0
  111. package/dist/types/rendererHead.d.ts +1 -1
  112. package/dist/types/request-policy/browser.d.ts +10 -0
  113. package/dist/types/request-policy/client.d.ts +14 -0
  114. package/dist/types/request-policy/node.d.ts +10 -0
  115. package/dist/types/request-policy/policyCore.d.ts +107 -0
  116. package/dist/types/request-policy/requestContext.d.ts +22 -0
  117. package/dist/types/request-policy/traceparent.d.ts +10 -0
  118. package/dist/types/request-policy/transport.d.ts +12 -0
  119. package/dist/types/request-policy/types.d.ts +144 -0
  120. package/dist/types/routeHydration.d.ts +24 -0
  121. package/dist/types/routerPrefetchPolicy.d.ts +28 -0
  122. package/dist/types/routerProvider.d.ts +55 -0
  123. package/dist/types/routerState.d.ts +18 -0
  124. package/dist/types/routerStatePlugin.d.ts +19 -0
  125. package/dist/types/routerStateTypes.d.ts +40 -0
  126. package/dist/types/rsc-disabled/rscDisabledClientBrowserRuntime.d.ts +9 -0
  127. package/dist/types/rsc-disabled/rscDisabledClientEdgeRuntime.d.ts +7 -0
  128. package/dist/types/rsc-disabled/rscDisabledClientNodeRuntime.d.ts +8 -0
  129. package/dist/types/rsc-disabled/rscDisabledRuntimeError.d.ts +1 -0
  130. package/dist/types/rsc-disabled/rscDisabledServerEdgeRuntime.d.ts +15 -0
  131. package/dist/types/rsc-disabled/rscDisabledServerNodeRuntime.d.ts +17 -0
  132. package/dist/types/runtimeContextProjection.d.ts +30 -0
  133. package/dist/types/server-config/bffRuntime.d.ts +122 -0
  134. package/dist/types/server-config/index.d.ts +2 -0
  135. package/dist/types/server-config/serverTelemetry.d.ts +322 -0
  136. package/dist/types/workspaceEvents.d.ts +62 -0
  137. package/package.json +240 -15
  138. package/rslib.config.mts +17 -2
  139. package/rstest.config.mts +33 -2
  140. package/src/buildIdentity.ts +61 -0
  141. package/src/contextExtensions.ts +81 -0
  142. package/src/headRuntime.tsx +77 -0
  143. package/src/helmetContext.ts +31 -0
  144. package/src/index.ts +2 -0
  145. package/src/localisedLoaderIdentity.ts +30 -0
  146. package/src/prefetchPolicy.ts +33 -0
  147. package/src/reactContext.ts +16 -0
  148. package/src/request-policy/browser.ts +22 -0
  149. package/src/request-policy/client.ts +404 -0
  150. package/src/request-policy/node.ts +41 -0
  151. package/src/request-policy/policyCore.ts +424 -0
  152. package/src/request-policy/requestContext.ts +149 -0
  153. package/src/request-policy/traceparent.ts +43 -0
  154. package/src/request-policy/transport.ts +349 -0
  155. package/src/request-policy/types.ts +229 -0
  156. package/src/routeHydration.ts +208 -0
  157. package/src/routerPrefetchPolicy.ts +195 -0
  158. package/src/routerProvider.ts +160 -0
  159. package/src/routerState.ts +290 -0
  160. package/src/routerStatePlugin.ts +86 -0
  161. package/src/routerStateTypes.ts +46 -0
  162. package/src/rsc-disabled/rscDisabledClientBrowserRuntime.ts +10 -0
  163. package/src/rsc-disabled/rscDisabledClientEdgeRuntime.ts +8 -0
  164. package/src/rsc-disabled/rscDisabledClientNodeRuntime.ts +9 -0
  165. package/src/rsc-disabled/rscDisabledRuntimeError.ts +3 -0
  166. package/src/rsc-disabled/rscDisabledServerEdgeRuntime.ts +16 -0
  167. package/src/rsc-disabled/rscDisabledServerNodeRuntime.ts +18 -0
  168. package/src/runtimeContextProjection.ts +105 -0
  169. package/src/server-config/bffRuntime.ts +136 -0
  170. package/src/server-config/index.ts +2 -0
  171. package/src/server-config/serverTelemetry.ts +337 -0
  172. package/src/shellStream.ts +55 -25
  173. package/src/workspaceEvents.ts +324 -0
  174. package/tests/buildIdentity.test.ts +51 -0
  175. package/tests/contextExtensions.test.ts +27 -0
  176. package/tests/headRuntime.test.tsx +229 -0
  177. package/tests/rendererHead.test.ts +1 -113
  178. package/tests/request-policy/browser-policy.test.ts +108 -0
  179. package/tests/request-policy/client-isolation.test.ts +109 -0
  180. package/tests/request-policy/node-policy.test.ts +447 -0
  181. package/tests/request-policy/policyCore.test.ts +129 -0
  182. package/tests/request-policy/requestContext.test.ts +66 -0
  183. package/tests/request-policy/requestFactory.outbound-contract.test.ts +290 -0
  184. package/tests/request-policy/traceparent.test.ts +52 -0
  185. package/tests/request-policy/transport-retry.test.ts +367 -0
  186. package/tests/routeHydration.test.ts +180 -0
  187. package/tests/routerPrefetchPolicy.test.ts +102 -0
  188. package/tests/routerProvider.test.ts +29 -0
  189. package/tests/routerState.test.ts +78 -0
  190. package/tests/routerStatePlugin.test.ts +63 -0
  191. package/tests/runtimeContextProjection.test.ts +83 -0
  192. package/tests/safeFailure.test.ts +10 -28
  193. package/tests/shellStream.test.ts +37 -0
  194. package/tests/workspaceEvents.test.ts +221 -0
  195. package/dist/cjs/rscHtmlStream.js +0 -128
  196. package/dist/esm/rscHtmlStream.mjs +0 -86
  197. package/dist/esm-node/rscHtmlStream.mjs +0 -87
  198. package/dist/types/rscHtmlStream.d.ts +0 -4
  199. package/src/rscHtmlStream.ts +0 -142
  200. package/tests/rscHtmlStream.test.ts +0 -153
@@ -1,153 +0,0 @@
1
- import {
2
- injectRSCPayload,
3
- RSC_HTML_CLOSING_TAIL_LIMIT,
4
- } from '../src/rscHtmlStream';
5
-
6
- const encoder = new TextEncoder();
7
- const flight = '<script>(self.__FLIGHT_DATA||=[]).push("payload")</script>';
8
-
9
- async function readStream(stream: ReadableStream<Uint8Array>) {
10
- const reader = stream.getReader();
11
- const decoder = new TextDecoder();
12
- let value = '';
13
- for (;;) {
14
- const result = await reader.read();
15
- if (result.done) {
16
- return value + decoder.decode();
17
- }
18
- value += decoder.decode(result.value, { stream: true });
19
- }
20
- }
21
-
22
- describe('injectRSCPayload', () => {
23
- test('backpressures at the retained-tail limit and conserves the trailer', async () => {
24
- let rscController!: ReadableStreamDefaultController<Uint8Array>;
25
- const rscStream = new ReadableStream<Uint8Array>({
26
- start(controller) {
27
- rscController = controller;
28
- },
29
- });
30
- const transform = injectRSCPayload(rscStream);
31
- const output = readStream(transform.readable);
32
- const writer = transform.writable.getWriter();
33
-
34
- const retainedWhitespace = ' '.repeat(
35
- RSC_HTML_CLOSING_TAIL_LIMIT - '</body>'.length,
36
- );
37
- await writer.write(encoder.encode(`<body>x</body>${retainedWhitespace}`));
38
-
39
- let overflowSettled = false;
40
- const overflow = writer.write(encoder.encode(' ')).then(() => {
41
- overflowSettled = true;
42
- });
43
- await new Promise(resolve => setTimeout(resolve, 20));
44
- expect(overflowSettled).toBe(false);
45
-
46
- rscController.enqueue(encoder.encode('payload'));
47
- rscController.close();
48
- await overflow;
49
- await writer.write(encoder.encode('</html>'));
50
- await writer.close();
51
-
52
- const spaces = `${retainedWhitespace} `;
53
- expect(await output).toBe(`<body>x${flight}</body>${spaces}</html>`);
54
- });
55
-
56
- test('does not let flight overtake any split of an ordinary html tag', async () => {
57
- const tag = '<span class="ordinary">';
58
-
59
- for (let split = 1; split < tag.length; split++) {
60
- const rscStream = new ReadableStream<Uint8Array>({
61
- start(controller) {
62
- controller.enqueue(encoder.encode('payload'));
63
- controller.close();
64
- },
65
- });
66
- const transform = injectRSCPayload(rscStream);
67
- const output = readStream(transform.readable);
68
- const writer = transform.writable.getWriter();
69
-
70
- await writer.write(encoder.encode(`<body>x${tag.slice(0, split)}`));
71
- await writer.write(
72
- encoder.encode(`${tag.slice(split)}y</span></body></html>`),
73
- );
74
- await writer.close();
75
-
76
- expect(await output, `split after ${tag.slice(0, split)}`).toBe(
77
- `<body>x${tag}y</span>${flight}</body></html>`,
78
- );
79
- }
80
- });
81
-
82
- test('conserves multi-chunk html and orders every flight chunk before the trailer', async () => {
83
- let rscController!: ReadableStreamDefaultController<Uint8Array>;
84
- const rscStream = new ReadableStream<Uint8Array>({
85
- start(controller) {
86
- rscController = controller;
87
- },
88
- });
89
- const transform = injectRSCPayload(rscStream);
90
- const output = readStream(transform.readable);
91
- const writer = transform.writable.getWriter();
92
- const unicode = encoder.encode('–');
93
-
94
- await writer.write(encoder.encode('<html><body><main>first'));
95
- await writer.write(unicode.slice(0, 1));
96
- await writer.write(unicode.slice(1));
97
- await writer.write(encoder.encode('middle</main></bo'));
98
- await writer.write(encoder.encode('dy></ht'));
99
- await writer.write(encoder.encode('ml>'));
100
-
101
- rscController.enqueue(encoder.encode('first'));
102
- rscController.enqueue(encoder.encode('second'));
103
- rscController.close();
104
- await writer.close();
105
-
106
- expect(await output).toBe(
107
- '<html><body><main>first–middle</main>' +
108
- '<script>(self.__FLIGHT_DATA||=[]).push("first")</script>' +
109
- '<script>(self.__FLIGHT_DATA||=[]).push("second")</script>' +
110
- '</body></html>',
111
- );
112
- });
113
-
114
- test('does not truncate or inject inside an over-limit ordinary tag', async () => {
115
- const attribute = 'x'.repeat(RSC_HTML_CLOSING_TAIL_LIMIT);
116
- const partialTag = `<div data-value="${attribute}"`;
117
- const rscStream = new ReadableStream<Uint8Array>({
118
- start(controller) {
119
- controller.enqueue(encoder.encode('payload'));
120
- controller.close();
121
- },
122
- });
123
- const transform = injectRSCPayload(rscStream);
124
- const output = readStream(transform.readable);
125
- const writer = transform.writable.getWriter();
126
-
127
- await writer.write(encoder.encode(`<body>x${partialTag}`));
128
- await writer.write(encoder.encode('>y</div></body></html>'));
129
- await writer.close();
130
-
131
- expect(await output).toBe(
132
- `<body>x${flight}${partialTag}>y</div></body></html>`,
133
- );
134
- });
135
-
136
- test('propagates flight errors without publishing a synthetic trailer', async () => {
137
- let rscController!: ReadableStreamDefaultController<Uint8Array>;
138
- const failure = new Error('flight failed');
139
- const rscStream = new ReadableStream<Uint8Array>({
140
- start(controller) {
141
- rscController = controller;
142
- },
143
- });
144
- const transform = injectRSCPayload(rscStream);
145
- const output = readStream(transform.readable);
146
- const writer = transform.writable.getWriter();
147
-
148
- await writer.write(encoder.encode('<body>html</body></html>'));
149
- rscController.error(failure);
150
-
151
- await expect(Promise.all([writer.close(), output])).rejects.toBe(failure);
152
- });
153
- });