@bleedingdev/modern-js-runtime-extensions 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (251) 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/localisedUrls/config.js +49 -0
  8. package/dist/cjs/localisedUrls/index.js +95 -0
  9. package/dist/cjs/localisedUrls/normalise.js +87 -0
  10. package/dist/cjs/localisedUrls/pathname.js +68 -0
  11. package/dist/cjs/localisedUrls/patterns.js +214 -0
  12. package/dist/cjs/localisedUrls/redirect.js +100 -0
  13. package/dist/cjs/localisedUrls/resolve.js +78 -0
  14. package/dist/cjs/localisedUrls/routeIdentity.js +92 -0
  15. package/dist/cjs/localisedUrls/routes.js +217 -0
  16. package/dist/cjs/localisedUrls/types.js +18 -0
  17. package/dist/cjs/prefetchPolicy.js +52 -0
  18. package/dist/cjs/rendererHead.js +18 -5
  19. package/dist/cjs/request-policy/browser.js +139 -0
  20. package/dist/cjs/request-policy/client.js +234 -0
  21. package/dist/cjs/request-policy/node.js +149 -0
  22. package/dist/cjs/request-policy/policyCore.js +266 -0
  23. package/dist/cjs/request-policy/requestContext.js +137 -0
  24. package/dist/cjs/request-policy/traceparent.js +56 -0
  25. package/dist/cjs/request-policy/transport.js +234 -0
  26. package/dist/cjs/request-policy/types.js +57 -0
  27. package/dist/cjs/routeHydration.js +127 -0
  28. package/dist/cjs/routerPrefetchPolicy.js +153 -0
  29. package/dist/cjs/routerProvider.js +105 -0
  30. package/dist/cjs/routerState.js +175 -0
  31. package/dist/cjs/routerStatePlugin.js +113 -0
  32. package/dist/cjs/routerStateTypes.js +18 -0
  33. package/dist/cjs/rsc-disabled/rscDisabledClientBrowserRuntime.js +69 -0
  34. package/dist/cjs/rsc-disabled/rscDisabledClientEdgeRuntime.js +61 -0
  35. package/dist/cjs/rsc-disabled/rscDisabledClientNodeRuntime.js +65 -0
  36. package/dist/cjs/rsc-disabled/rscDisabledRuntimeError.js +42 -0
  37. package/dist/cjs/rsc-disabled/rscDisabledServerEdgeRuntime.js +93 -0
  38. package/dist/cjs/rsc-disabled/rscDisabledServerNodeRuntime.js +101 -0
  39. package/dist/cjs/runtimeContextProjection.js +112 -0
  40. package/dist/cjs/server-config/bffRuntime.js +18 -0
  41. package/dist/cjs/server-config/index.js +18 -0
  42. package/dist/cjs/server-config/serverTelemetry.js +18 -0
  43. package/dist/cjs/shellStream.js +34 -2
  44. package/dist/cjs/workspaceEvents.js +159 -0
  45. package/dist/esm/buildIdentity.mjs +35 -0
  46. package/dist/esm/contextExtensions.mjs +33 -0
  47. package/dist/esm/headRuntime.mjs +43 -0
  48. package/dist/esm/helmetContext.mjs +13 -0
  49. package/dist/esm/index.mjs +2 -0
  50. package/dist/esm/localisedLoaderIdentity.mjs +13 -0
  51. package/dist/esm/localisedUrls/config.mjs +11 -0
  52. package/dist/esm/localisedUrls/index.mjs +8 -0
  53. package/dist/esm/localisedUrls/normalise.mjs +37 -0
  54. package/dist/esm/localisedUrls/pathname.mjs +24 -0
  55. package/dist/esm/localisedUrls/patterns.mjs +152 -0
  56. package/dist/esm/localisedUrls/redirect.mjs +53 -0
  57. package/dist/esm/localisedUrls/resolve.mjs +37 -0
  58. package/dist/esm/localisedUrls/routeIdentity.mjs +54 -0
  59. package/dist/esm/localisedUrls/routes.mjs +176 -0
  60. package/dist/esm/localisedUrls/types.mjs +0 -0
  61. package/dist/esm/prefetchPolicy.mjs +11 -0
  62. package/dist/esm/rendererHead.mjs +14 -5
  63. package/dist/esm/request-policy/browser.mjs +11 -0
  64. package/dist/esm/request-policy/client.mjs +195 -0
  65. package/dist/esm/request-policy/policyCore.mjs +171 -0
  66. package/dist/esm/request-policy/requestContext.mjs +75 -0
  67. package/dist/esm/request-policy/traceparent.mjs +18 -0
  68. package/dist/esm/request-policy/transport.mjs +196 -0
  69. package/dist/esm/request-policy/types.mjs +10 -0
  70. package/dist/esm/routeHydration.mjs +77 -0
  71. package/dist/esm/routerPrefetchPolicy.mjs +115 -0
  72. package/dist/esm/routerProvider.mjs +58 -0
  73. package/dist/esm/routerState.mjs +113 -0
  74. package/dist/esm/routerStatePlugin.mjs +75 -0
  75. package/dist/esm/routerStateTypes.mjs +0 -0
  76. package/dist/esm/rsc-disabled/rscDisabledClientBrowserRuntime.mjs +10 -0
  77. package/dist/esm/rsc-disabled/rscDisabledClientEdgeRuntime.mjs +8 -0
  78. package/dist/esm/rsc-disabled/rscDisabledClientNodeRuntime.mjs +9 -0
  79. package/dist/esm/rsc-disabled/rscDisabledRuntimeError.mjs +4 -0
  80. package/dist/esm/rsc-disabled/rscDisabledServerEdgeRuntime.mjs +16 -0
  81. package/dist/esm/rsc-disabled/rscDisabledServerNodeRuntime.mjs +18 -0
  82. package/dist/esm/runtimeContextProjection.mjs +74 -0
  83. package/dist/esm/server-config/bffRuntime.mjs +0 -0
  84. package/dist/esm/server-config/index.mjs +0 -0
  85. package/dist/esm/server-config/serverTelemetry.mjs +0 -0
  86. package/dist/esm/shellStream.mjs +34 -2
  87. package/dist/esm/workspaceEvents.mjs +66 -0
  88. package/dist/esm-node/buildIdentity.mjs +36 -0
  89. package/dist/esm-node/contextExtensions.mjs +34 -0
  90. package/dist/esm-node/headRuntime.mjs +44 -0
  91. package/dist/esm-node/helmetContext.mjs +14 -0
  92. package/dist/esm-node/index.mjs +2 -0
  93. package/dist/esm-node/localisedLoaderIdentity.mjs +14 -0
  94. package/dist/esm-node/localisedUrls/config.mjs +12 -0
  95. package/dist/esm-node/localisedUrls/index.mjs +9 -0
  96. package/dist/esm-node/localisedUrls/normalise.mjs +38 -0
  97. package/dist/esm-node/localisedUrls/pathname.mjs +25 -0
  98. package/dist/esm-node/localisedUrls/patterns.mjs +153 -0
  99. package/dist/esm-node/localisedUrls/redirect.mjs +54 -0
  100. package/dist/esm-node/localisedUrls/resolve.mjs +38 -0
  101. package/dist/esm-node/localisedUrls/routeIdentity.mjs +55 -0
  102. package/dist/esm-node/localisedUrls/routes.mjs +177 -0
  103. package/dist/esm-node/localisedUrls/types.mjs +1 -0
  104. package/dist/esm-node/prefetchPolicy.mjs +12 -0
  105. package/dist/esm-node/rendererHead.mjs +14 -5
  106. package/dist/esm-node/request-policy/browser.mjs +12 -0
  107. package/dist/esm-node/request-policy/client.mjs +196 -0
  108. package/dist/esm-node/request-policy/node.mjs +22 -0
  109. package/dist/esm-node/request-policy/policyCore.mjs +172 -0
  110. package/dist/esm-node/request-policy/requestContext.mjs +76 -0
  111. package/dist/esm-node/request-policy/traceparent.mjs +19 -0
  112. package/dist/esm-node/request-policy/transport.mjs +197 -0
  113. package/dist/esm-node/request-policy/types.mjs +11 -0
  114. package/dist/esm-node/routeHydration.mjs +78 -0
  115. package/dist/esm-node/routerPrefetchPolicy.mjs +116 -0
  116. package/dist/esm-node/routerProvider.mjs +59 -0
  117. package/dist/esm-node/routerState.mjs +114 -0
  118. package/dist/esm-node/routerStatePlugin.mjs +76 -0
  119. package/dist/esm-node/routerStateTypes.mjs +1 -0
  120. package/dist/esm-node/rsc-disabled/rscDisabledClientBrowserRuntime.mjs +11 -0
  121. package/dist/esm-node/rsc-disabled/rscDisabledClientEdgeRuntime.mjs +9 -0
  122. package/dist/esm-node/rsc-disabled/rscDisabledClientNodeRuntime.mjs +10 -0
  123. package/dist/esm-node/rsc-disabled/rscDisabledRuntimeError.mjs +5 -0
  124. package/dist/esm-node/rsc-disabled/rscDisabledServerEdgeRuntime.mjs +17 -0
  125. package/dist/esm-node/rsc-disabled/rscDisabledServerNodeRuntime.mjs +19 -0
  126. package/dist/esm-node/runtimeContextProjection.mjs +75 -0
  127. package/dist/esm-node/server-config/bffRuntime.mjs +1 -0
  128. package/dist/esm-node/server-config/index.mjs +1 -0
  129. package/dist/esm-node/server-config/serverTelemetry.mjs +1 -0
  130. package/dist/esm-node/shellStream.mjs +34 -2
  131. package/dist/esm-node/workspaceEvents.mjs +67 -0
  132. package/dist/types/buildIdentity.d.ts +37 -0
  133. package/dist/types/contextExtensions.d.ts +34 -0
  134. package/dist/types/headRuntime.d.ts +12 -0
  135. package/dist/types/helmetCompat.d.ts +1 -1
  136. package/dist/types/helmetContext.d.ts +10 -0
  137. package/dist/types/index.d.ts +2 -0
  138. package/dist/types/localisedLoaderIdentity.d.ts +10 -0
  139. package/dist/types/localisedUrls/config.d.ts +9 -0
  140. package/dist/types/localisedUrls/index.d.ts +10 -0
  141. package/dist/types/localisedUrls/normalise.d.ts +10 -0
  142. package/dist/types/localisedUrls/pathname.d.ts +4 -0
  143. package/dist/types/localisedUrls/patterns.d.ts +11 -0
  144. package/dist/types/localisedUrls/redirect.d.ts +19 -0
  145. package/dist/types/localisedUrls/resolve.d.ts +7 -0
  146. package/dist/types/localisedUrls/routeIdentity.d.ts +22 -0
  147. package/dist/types/localisedUrls/routes.d.ts +3 -0
  148. package/dist/types/localisedUrls/types.d.ts +14 -0
  149. package/dist/types/prefetchPolicy.d.ts +4 -0
  150. package/dist/types/rendererHead.d.ts +5 -3
  151. package/dist/types/request-policy/browser.d.ts +10 -0
  152. package/dist/types/request-policy/client.d.ts +14 -0
  153. package/dist/types/request-policy/node.d.ts +10 -0
  154. package/dist/types/request-policy/policyCore.d.ts +107 -0
  155. package/dist/types/request-policy/requestContext.d.ts +22 -0
  156. package/dist/types/request-policy/traceparent.d.ts +10 -0
  157. package/dist/types/request-policy/transport.d.ts +12 -0
  158. package/dist/types/request-policy/types.d.ts +144 -0
  159. package/dist/types/routeHydration.d.ts +24 -0
  160. package/dist/types/routerPrefetchPolicy.d.ts +28 -0
  161. package/dist/types/routerProvider.d.ts +55 -0
  162. package/dist/types/routerState.d.ts +17 -0
  163. package/dist/types/routerStatePlugin.d.ts +19 -0
  164. package/dist/types/routerStateTypes.d.ts +70 -0
  165. package/dist/types/rsc-disabled/rscDisabledClientBrowserRuntime.d.ts +9 -0
  166. package/dist/types/rsc-disabled/rscDisabledClientEdgeRuntime.d.ts +7 -0
  167. package/dist/types/rsc-disabled/rscDisabledClientNodeRuntime.d.ts +8 -0
  168. package/dist/types/rsc-disabled/rscDisabledRuntimeError.d.ts +1 -0
  169. package/dist/types/rsc-disabled/rscDisabledServerEdgeRuntime.d.ts +15 -0
  170. package/dist/types/rsc-disabled/rscDisabledServerNodeRuntime.d.ts +17 -0
  171. package/dist/types/runtimeContextProjection.d.ts +30 -0
  172. package/dist/types/server-config/bffRuntime.d.ts +122 -0
  173. package/dist/types/server-config/index.d.ts +2 -0
  174. package/dist/types/server-config/serverTelemetry.d.ts +322 -0
  175. package/dist/types/workspaceEvents.d.ts +62 -0
  176. package/package.json +240 -15
  177. package/rslib.config.mts +17 -2
  178. package/rstest.config.mts +33 -2
  179. package/src/buildIdentity.ts +61 -0
  180. package/src/contextExtensions.ts +81 -0
  181. package/src/headRuntime.tsx +77 -0
  182. package/src/helmetCompat.ts +1 -1
  183. package/src/helmetContext.ts +31 -0
  184. package/src/index.ts +2 -0
  185. package/src/localisedLoaderIdentity.ts +30 -0
  186. package/src/localisedUrls/config.ts +18 -0
  187. package/src/localisedUrls/index.ts +25 -0
  188. package/src/localisedUrls/normalise.ts +62 -0
  189. package/src/localisedUrls/pathname.ts +60 -0
  190. package/src/localisedUrls/patterns.ts +283 -0
  191. package/src/localisedUrls/redirect.ts +107 -0
  192. package/src/localisedUrls/resolve.ts +106 -0
  193. package/src/localisedUrls/routeIdentity.ts +83 -0
  194. package/src/localisedUrls/routes.ts +451 -0
  195. package/src/localisedUrls/types.ts +18 -0
  196. package/src/prefetchPolicy.ts +33 -0
  197. package/src/rendererHead.ts +25 -8
  198. package/src/request-policy/browser.ts +22 -0
  199. package/src/request-policy/client.ts +404 -0
  200. package/src/request-policy/node.ts +41 -0
  201. package/src/request-policy/policyCore.ts +424 -0
  202. package/src/request-policy/requestContext.ts +149 -0
  203. package/src/request-policy/traceparent.ts +43 -0
  204. package/src/request-policy/transport.ts +349 -0
  205. package/src/request-policy/types.ts +229 -0
  206. package/src/routeHydration.ts +208 -0
  207. package/src/routerPrefetchPolicy.ts +195 -0
  208. package/src/routerProvider.ts +160 -0
  209. package/src/routerState.ts +220 -0
  210. package/src/routerStatePlugin.ts +125 -0
  211. package/src/routerStateTypes.ts +76 -0
  212. package/src/rsc-disabled/rscDisabledClientBrowserRuntime.ts +10 -0
  213. package/src/rsc-disabled/rscDisabledClientEdgeRuntime.ts +8 -0
  214. package/src/rsc-disabled/rscDisabledClientNodeRuntime.ts +9 -0
  215. package/src/rsc-disabled/rscDisabledRuntimeError.ts +3 -0
  216. package/src/rsc-disabled/rscDisabledServerEdgeRuntime.ts +16 -0
  217. package/src/rsc-disabled/rscDisabledServerNodeRuntime.ts +18 -0
  218. package/src/runtimeContextProjection.ts +105 -0
  219. package/src/server-config/bffRuntime.ts +136 -0
  220. package/src/server-config/index.ts +2 -0
  221. package/src/server-config/serverTelemetry.ts +337 -0
  222. package/src/shellStream.ts +55 -25
  223. package/src/workspaceEvents.ts +324 -0
  224. package/tests/buildIdentity.test.ts +51 -0
  225. package/tests/contextExtensions.test.ts +27 -0
  226. package/tests/headRuntime.test.tsx +229 -0
  227. package/tests/localisedUrls.test.ts +560 -0
  228. package/tests/rendererHead.test.ts +52 -121
  229. package/tests/request-policy/browser-policy.test.ts +108 -0
  230. package/tests/request-policy/client-isolation.test.ts +109 -0
  231. package/tests/request-policy/node-policy.test.ts +447 -0
  232. package/tests/request-policy/policyCore.test.ts +129 -0
  233. package/tests/request-policy/requestContext.test.ts +66 -0
  234. package/tests/request-policy/requestFactory.outbound-contract.test.ts +290 -0
  235. package/tests/request-policy/traceparent.test.ts +52 -0
  236. package/tests/request-policy/transport-retry.test.ts +367 -0
  237. package/tests/routeHydration.test.ts +180 -0
  238. package/tests/routerPrefetchPolicy.test.ts +102 -0
  239. package/tests/routerProvider.test.ts +29 -0
  240. package/tests/routerState.test.ts +77 -0
  241. package/tests/routerStatePlugin.test.ts +63 -0
  242. package/tests/runtimeContextProjection.test.ts +83 -0
  243. package/tests/safeFailure.test.ts +10 -28
  244. package/tests/shellStream.test.ts +39 -2
  245. package/tests/workspaceEvents.test.ts +221 -0
  246. package/dist/cjs/rscHtmlStream.js +0 -128
  247. package/dist/esm/rscHtmlStream.mjs +0 -86
  248. package/dist/esm-node/rscHtmlStream.mjs +0 -87
  249. package/dist/types/rscHtmlStream.d.ts +0 -4
  250. package/src/rscHtmlStream.ts +0 -142
  251. package/tests/rscHtmlStream.test.ts +0 -153
@@ -0,0 +1,10 @@
1
+ import "node:module";
2
+ import { disabledRscRuntime } from "./rscDisabledRuntimeError.mjs";
3
+ const createFromFetch = disabledRscRuntime;
4
+ const createFromNodeStream = disabledRscRuntime;
5
+ const createFromReadableStream = disabledRscRuntime;
6
+ const createServerReference = disabledRscRuntime;
7
+ const createTemporaryReferenceSet = disabledRscRuntime;
8
+ const encodeReply = disabledRscRuntime;
9
+ const registerServerReference = disabledRscRuntime;
10
+ export { createFromFetch, createFromNodeStream, createFromReadableStream, createServerReference, createTemporaryReferenceSet, encodeReply, registerServerReference };
@@ -0,0 +1,5 @@
1
+ import "node:module";
2
+ function disabledRscRuntime() {
3
+ throw new Error('React Server Components are disabled for this build.');
4
+ }
5
+ export { disabledRscRuntime };
@@ -0,0 +1,17 @@
1
+ import "node:module";
2
+ import { disabledRscRuntime } from "./rscDisabledRuntimeError.mjs";
3
+ const createServerEntry = disabledRscRuntime;
4
+ const createTemporaryReferenceSet = disabledRscRuntime;
5
+ const decodeAction = disabledRscRuntime;
6
+ const decodeFormState = disabledRscRuntime;
7
+ const decodeReply = disabledRscRuntime;
8
+ const decodeReplyFromAsyncIterable = disabledRscRuntime;
9
+ const decryptServerActionBoundArgs = disabledRscRuntime;
10
+ const encryptServerActionBoundArgs = disabledRscRuntime;
11
+ const ensureServerActions = disabledRscRuntime;
12
+ const loadServerAction = disabledRscRuntime;
13
+ const registerClientReference = disabledRscRuntime;
14
+ const registerServerReference = disabledRscRuntime;
15
+ const renderToReadableStream = disabledRscRuntime;
16
+ const setServerActionBoundArgsEncryption = disabledRscRuntime;
17
+ export { createServerEntry, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, decodeReplyFromAsyncIterable, decryptServerActionBoundArgs, encryptServerActionBoundArgs, ensureServerActions, loadServerAction, registerClientReference, registerServerReference, renderToReadableStream, setServerActionBoundArgsEncryption };
@@ -0,0 +1,19 @@
1
+ import "node:module";
2
+ import { disabledRscRuntime } from "./rscDisabledRuntimeError.mjs";
3
+ const createServerEntry = disabledRscRuntime;
4
+ const createTemporaryReferenceSet = disabledRscRuntime;
5
+ const decodeAction = disabledRscRuntime;
6
+ const decodeFormState = disabledRscRuntime;
7
+ const decodeReply = disabledRscRuntime;
8
+ const decodeReplyFromAsyncIterable = disabledRscRuntime;
9
+ const decodeReplyFromBusboy = disabledRscRuntime;
10
+ const decryptServerActionBoundArgs = disabledRscRuntime;
11
+ const encryptServerActionBoundArgs = disabledRscRuntime;
12
+ const ensureServerActions = disabledRscRuntime;
13
+ const loadServerAction = disabledRscRuntime;
14
+ const registerClientReference = disabledRscRuntime;
15
+ const registerServerReference = disabledRscRuntime;
16
+ const renderToPipeableStream = disabledRscRuntime;
17
+ const renderToReadableStream = disabledRscRuntime;
18
+ const setServerActionBoundArgsEncryption = disabledRscRuntime;
19
+ export { createServerEntry, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, decodeReplyFromAsyncIterable, decodeReplyFromBusboy, decryptServerActionBoundArgs, encryptServerActionBoundArgs, ensureServerActions, loadServerAction, registerClientReference, registerServerReference, renderToPipeableStream, renderToReadableStream, setServerActionBoundArgsEncryption };
@@ -0,0 +1,75 @@
1
+ import "node:module";
2
+ import { stripRuntimeContextExtensions } from "./contextExtensions.mjs";
3
+ function createRscSafeRequestContext(ssrContext) {
4
+ const requestContext = {
5
+ request: {
6
+ params: {},
7
+ pathname: '',
8
+ query: {},
9
+ headers: {},
10
+ host: '',
11
+ url: ''
12
+ },
13
+ response: {
14
+ setHeader () {},
15
+ status () {},
16
+ locals: {}
17
+ }
18
+ };
19
+ Object.defineProperty(requestContext.response, 'setHeader', {
20
+ enumerable: false
21
+ });
22
+ Object.defineProperty(requestContext.response, 'status', {
23
+ enumerable: false
24
+ });
25
+ if (void 0 === ssrContext) return requestContext;
26
+ const { request, response } = ssrContext;
27
+ return {
28
+ request: {
29
+ url: request.url,
30
+ userAgent: request.userAgent,
31
+ cookie: request.cookie,
32
+ pathname: request.pathname,
33
+ query: {
34
+ ...request.query
35
+ },
36
+ params: {
37
+ ...request.params
38
+ },
39
+ headers: {
40
+ ...request.headers
41
+ },
42
+ host: request.host,
43
+ referer: request.referer
44
+ },
45
+ response: Object.assign(requestContext.response, {
46
+ locals: response.locals ?? {}
47
+ })
48
+ };
49
+ }
50
+ function projectRuntimeContext(projection, options) {
51
+ let internalContext = projection.internalContext;
52
+ let publicContext = {
53
+ ...projection.publicContext
54
+ };
55
+ stripRuntimeContextExtensions(publicContext);
56
+ if (options.isRsc && false === options.context.isBrowser) {
57
+ const requestContext = createRscSafeRequestContext(options.context.ssrContext);
58
+ internalContext = {
59
+ ...internalContext,
60
+ context: requestContext,
61
+ requestContext
62
+ };
63
+ delete internalContext.ssrContext;
64
+ publicContext = {
65
+ ...publicContext,
66
+ context: requestContext,
67
+ requestContext
68
+ };
69
+ }
70
+ return {
71
+ internalContext,
72
+ publicContext
73
+ };
74
+ }
75
+ export { projectRuntimeContext };
@@ -0,0 +1 @@
1
+ import "node:module";
@@ -0,0 +1 @@
1
+ import "node:module";
@@ -0,0 +1 @@
1
+ import "node:module";
@@ -13,7 +13,7 @@ const createConservingWebShellStream = (source, context, marker, onMissingMarker
13
13
  markerFound = candidate.includes(marker);
14
14
  markerCarry = markerFound ? '' : candidate.slice(-(marker.length - 1));
15
15
  };
16
- return source.pipeThrough(new TransformStream({
16
+ const transform = new TransformStream({
17
17
  transform (chunk, controller) {
18
18
  const decoded = decoder.decode(chunk, {
19
19
  stream: true
@@ -34,6 +34,38 @@ const createConservingWebShellStream = (source, context, marker, onMissingMarker
34
34
  const output = headProcessor.finish(decoded);
35
35
  if (output) controller.enqueue(encoder.encode(output));
36
36
  }
37
- }));
37
+ });
38
+ const piping = source.pipeTo(transform.writable);
39
+ piping.catch(()=>{});
40
+ const reader = transform.readable.getReader();
41
+ return new ReadableStream({
42
+ async pull (controller) {
43
+ try {
44
+ const result = await reader.read();
45
+ if (result.done) {
46
+ await piping;
47
+ controller.close();
48
+ reader.releaseLock();
49
+ } else controller.enqueue(result.value);
50
+ } catch (error) {
51
+ await piping.catch(()=>{});
52
+ controller.error(error);
53
+ reader.releaseLock();
54
+ }
55
+ },
56
+ async cancel (reason) {
57
+ try {
58
+ await reader.cancel(reason);
59
+ } finally{
60
+ try {
61
+ await piping.catch((error)=>{
62
+ if (error !== reason) throw error;
63
+ });
64
+ } finally{
65
+ reader.releaseLock();
66
+ }
67
+ }
68
+ }
69
+ });
38
70
  };
39
71
  export { createConservingWebShellStream };
@@ -0,0 +1,67 @@
1
+ import "node:module";
2
+ const ultramodernWorkspaceEventNames = {
3
+ navigate: 'ultramodern:navigate',
4
+ performanceSignal: 'ultramodern:performance-signal',
5
+ remoteReady: 'ultramodern:remote-ready',
6
+ routeSettled: 'ultramodern:route-settled'
7
+ };
8
+ class UltramodernWorkspaceEventValidationError {
9
+ constructor(eventName, payload){
10
+ this.name = 'UltramodernWorkspaceEventValidationError';
11
+ this.message = `Invalid payload for UltraModern workspace event "${eventName}"`;
12
+ this.eventName = eventName;
13
+ this.payload = payload;
14
+ }
15
+ }
16
+ const isRecord = (value)=>'object' == typeof value && null !== value && !Array.isArray(value);
17
+ const isNonEmptyString = (value)=>'string' == typeof value && value.trim().length > 0;
18
+ const isNonNegativeNumber = (value)=>'number' == typeof value && Number.isFinite(value) && value >= 0;
19
+ const isUltramodernWorkspaceLocale = (value)=>'en' === value || 'cs' === value;
20
+ const isPerformanceReadinessSignalId = (value)=>'bfcache' === value || 'core-web-vitals-rum' === value || 'duplicate-prefetch-warmup' === value || 'cache-policy-sanity' === value || 'save-data-behavior' === value || 'cloudflare-ssr-cache-hints' === value;
21
+ const isPerformanceReadinessSignalStatus = (value)=>'pass' === value || 'warn' === value || 'fail' === value;
22
+ const hasOptionalString = (value, key)=>void 0 === value[key] || isNonEmptyString(value[key]);
23
+ const hasOptionalBoolean = (value, key)=>void 0 === value[key] || 'boolean' == typeof value[key];
24
+ const hasOptionalRecord = (value, key)=>void 0 === value[key] || isRecord(value[key]);
25
+ const hasOptionalNonNegativeNumber = (value, key)=>void 0 === value[key] || isNonNegativeNumber(value[key]);
26
+ const hasOptionalLocale = (value, key)=>void 0 === value[key] || isUltramodernWorkspaceLocale(value[key]);
27
+ const isUltramodernNavigatePayload = (payload)=>isRecord(payload) && isNonEmptyString(payload.to) && hasOptionalBoolean(payload, 'replace') && hasOptionalRecord(payload, 'state');
28
+ const isUltramodernRouteSettledPayload = (payload)=>isRecord(payload) && isNonEmptyString(payload.pathname) && hasOptionalLocale(payload, 'locale') && hasOptionalString(payload, 'title');
29
+ const isUltramodernRemoteReadyPayload = (payload)=>isRecord(payload) && isNonEmptyString(payload.appId) && hasOptionalString(payload, 'build') && hasOptionalString(payload, 'surface') && hasOptionalString(payload, 'version');
30
+ const isUltramodernPerformanceSignalPayload = (payload)=>isRecord(payload) && isPerformanceReadinessSignalId(payload.signalId) && isPerformanceReadinessSignalStatus(payload.status) && hasOptionalNonNegativeNumber(payload, 'durationMs') && hasOptionalRecord(payload, 'detail');
31
+ const ultramodernWorkspaceEventValidators = {
32
+ [ultramodernWorkspaceEventNames.navigate]: isUltramodernNavigatePayload,
33
+ [ultramodernWorkspaceEventNames.performanceSignal]: isUltramodernPerformanceSignalPayload,
34
+ [ultramodernWorkspaceEventNames.remoteReady]: isUltramodernRemoteReadyPayload,
35
+ [ultramodernWorkspaceEventNames.routeSettled]: isUltramodernRouteSettledPayload
36
+ };
37
+ const isUltramodernWorkspaceEventPayload = (eventName, payload)=>ultramodernWorkspaceEventValidators[eventName](payload);
38
+ const assertUltramodernWorkspaceEventPayload = (eventName, payload)=>{
39
+ if (!isUltramodernWorkspaceEventPayload(eventName, payload)) throw new UltramodernWorkspaceEventValidationError(eventName, payload);
40
+ return payload;
41
+ };
42
+ const createUltramodernWorkspaceEvent = (eventName, payload)=>new CustomEvent(eventName, {
43
+ bubbles: true,
44
+ composed: true,
45
+ detail: assertUltramodernWorkspaceEventPayload(eventName, payload)
46
+ });
47
+ const dispatchUltramodernWorkspaceEvent = (target, eventName, payload)=>target.dispatchEvent(createUltramodernWorkspaceEvent(eventName, payload));
48
+ const onUltramodernWorkspaceEvent = (target, eventName, handler)=>{
49
+ const listener = (event)=>{
50
+ if (!('detail' in event)) throw new UltramodernWorkspaceEventValidationError(eventName, void 0);
51
+ const customEvent = event;
52
+ handler(assertUltramodernWorkspaceEventPayload(eventName, customEvent.detail), customEvent);
53
+ };
54
+ target.addEventListener(eventName, listener);
55
+ return ()=>{
56
+ target.removeEventListener(eventName, listener);
57
+ };
58
+ };
59
+ const dispatchUltramodernNavigate = (target, payload)=>dispatchUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.navigate, payload);
60
+ const dispatchUltramodernRouteSettled = (target, payload)=>dispatchUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.routeSettled, payload);
61
+ const dispatchUltramodernRemoteReady = (target, payload)=>dispatchUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.remoteReady, payload);
62
+ const dispatchUltramodernPerformanceSignal = (target, payload)=>dispatchUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.performanceSignal, payload);
63
+ const onUltramodernNavigate = (target, handler)=>onUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.navigate, handler);
64
+ const onUltramodernRouteSettled = (target, handler)=>onUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.routeSettled, handler);
65
+ const onUltramodernRemoteReady = (target, handler)=>onUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.remoteReady, handler);
66
+ const onUltramodernPerformanceSignal = (target, handler)=>onUltramodernWorkspaceEvent(target, ultramodernWorkspaceEventNames.performanceSignal, handler);
67
+ export { UltramodernWorkspaceEventValidationError, assertUltramodernWorkspaceEventPayload, createUltramodernWorkspaceEvent, dispatchUltramodernNavigate, dispatchUltramodernPerformanceSignal, dispatchUltramodernRemoteReady, dispatchUltramodernRouteSettled, dispatchUltramodernWorkspaceEvent, isUltramodernNavigatePayload, isUltramodernPerformanceSignalPayload, isUltramodernRemoteReadyPayload, isUltramodernRouteSettledPayload, isUltramodernWorkspaceEventPayload, onUltramodernNavigate, onUltramodernPerformanceSignal, onUltramodernRemoteReady, onUltramodernRouteSettled, onUltramodernWorkspaceEvent, ultramodernWorkspaceEventNames };
@@ -0,0 +1,37 @@
1
+ interface BuildIdentity {
2
+ readonly build: string;
3
+ readonly buildMarker: string;
4
+ readonly sourceRevision: string;
5
+ }
6
+ interface BuildArtifact {
7
+ readonly deliveryUnit: BuildIdentity;
8
+ readonly surfaces: {
9
+ readonly api: BuildIdentity;
10
+ readonly ui: BuildIdentity;
11
+ };
12
+ }
13
+ interface BuildIdentityReaders {
14
+ readonly buildMarker: () => string;
15
+ readonly sourceRevision: () => string;
16
+ }
17
+ /** Read compiler constants in the caller, even when this package is external. */
18
+ export declare function resolveUltramodernBuildArtifact<Artifact extends BuildArtifact>(artifact: Artifact, readers?: BuildIdentityReaders): Artifact & {
19
+ deliveryUnit: {
20
+ build: string;
21
+ buildMarker: string;
22
+ sourceRevision: string;
23
+ };
24
+ surfaces: {
25
+ api: {
26
+ build: string;
27
+ buildMarker: string;
28
+ sourceRevision: string;
29
+ };
30
+ ui: {
31
+ build: string;
32
+ buildMarker: string;
33
+ sourceRevision: string;
34
+ };
35
+ };
36
+ };
37
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Fork-owned runtime-context extension mechanism.
3
+ *
4
+ * Plugins must not add ad-hoc fields to `TRuntimeContext` /
5
+ * `TInternalRuntimeContext`. Instead they store state in a single internal
6
+ * slot (a `Map` keyed by symbol) attached to the context object under a
7
+ * symbol property, so nothing leaks into string-key enumeration
8
+ * (`Object.keys`, `JSON.stringify`). Object spreads preserve the slot.
9
+ *
10
+ * `Symbol.for` is used for both the slot and the extension keys so that the
11
+ * mechanism stays coherent even if this module is instantiated twice
12
+ * (e.g. esm/cjs interop in test runners).
13
+ */
14
+ export interface RuntimeContextExtension<T> {
15
+ /** Stable identity of this extension. */
16
+ readonly key: symbol;
17
+ get(context: object): T | undefined;
18
+ set(context: object, value: T): void;
19
+ remove(context: object): void;
20
+ }
21
+ /**
22
+ * Removes the extension slot from a context object.
23
+ *
24
+ * The symbol slot crosses object spreads while remaining absent from string-key
25
+ * enumeration and JSON. Callers can still explicitly clear the original context.
26
+ */
27
+ export declare function stripRuntimeContextExtensions(context: object): void;
28
+ /**
29
+ * Creates a typed accessor pair over the shared extension slot.
30
+ *
31
+ * The `id` must be globally unique (it is interned via `Symbol.for`); use a
32
+ * package-prefixed name such as `@modern-js/plugin-tanstack:router-state`.
33
+ */
34
+ export declare function createRuntimeContextExtension<T>(id: string): RuntimeContextExtension<T>;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { Helmet as AsyncHelmet, type HelmetProps } from 'react-helmet-async';
3
+ import type { HelmetContextSlot } from './helmetContext.js';
4
+ export interface HeadRenderContext {
5
+ runtimeContext: object;
6
+ helmetContext: HelmetContextSlot;
7
+ }
8
+ export declare function createHeadRuntime(): {
9
+ Head: (props: React.PropsWithChildren<HelmetProps>) => React.CElement<React.PropsWithChildren<HelmetProps>, AsyncHelmet> | React.ReactElement<{}, string | React.JSXElementConstructor<any>> | null;
10
+ wrapServerRoot(root: React.ReactNode, state: HeadRenderContext): React.JSX.Element;
11
+ wrapClientRoot(root: React.ReactNode): React.JSX.Element;
12
+ };
@@ -63,7 +63,7 @@ export type HelmetCompatState<Element> = {
63
63
  style: HeadDatum<Element>;
64
64
  title: HeadDatum<Element>;
65
65
  };
66
- export declare const renderHeadMarker: <Element>(react: ElementFactory<Element>, marker: MarkerProps | null | undefined) => Element | null;
66
+ export declare const renderHeadMarker: <Element>(react: ElementFactory<Element>, marker: MarkerProps | undefined) => Element | null;
67
67
  export declare const markPriorityHeadRecord: (record: object, prioritize: boolean | undefined) => void;
68
68
  export declare const isPriorityHeadTag: (tag: object) => boolean;
69
69
  export declare const headTagsToComponents: <Element>(react: ElementFactory<Element>, tagName: string, tags: HeadTag[]) => Element[];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Fork-owned helmet state, stored via the runtime-context extension slot
3
+ * instead of an ad-hoc `_helmetContext` field on `TInternalRuntimeContext`.
4
+ */
5
+ import type { HelmetServerState } from 'react-helmet-async';
6
+ export interface HelmetContextSlot {
7
+ helmet?: HelmetServerState | null;
8
+ }
9
+ export declare function getHelmetContext(context: object): HelmetContextSlot | undefined;
10
+ export declare function ensureHelmetContext(context: object): HelmetContextSlot;
@@ -1,4 +1,6 @@
1
1
  export * from './html.js';
2
2
  export * from './navigationWarmup.js';
3
+ export * from './prefetchPolicy.js';
3
4
  export * from './rendererHead.js';
5
+ export * from './routeHydration.js';
4
6
  export * from './shellStream.js';
@@ -0,0 +1,10 @@
1
+ interface RouteNode {
2
+ id?: string;
3
+ children?: RouteNode[];
4
+ modernLocalisedRoute?: {
5
+ id?: string;
6
+ };
7
+ }
8
+ /** Map a source loader ID only to its own alias already matched by the router. */
9
+ export declare function resolveLocalisedLoaderRouteId(routes: RouteNode[], requestedId: string, matchedIds?: (string | undefined)[]): string;
10
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { LocalisedUrlsOption, ResolvedLocalisedUrlsConfig } from './types.js';
2
+ /**
3
+ * Localised URLs are strictly opt-in: only an explicit, non-empty map enables
4
+ * route expansion and validation. `true`, `false`, an empty map and absence
5
+ * all resolve to disabled, so upstream-style configs (`localePathRedirect` +
6
+ * `languages` without a map) keep plain locale-prefix behavior instead of
7
+ * failing the build for every route missing from a map they never wrote.
8
+ */
9
+ export declare const resolveLocalisedUrlsConfig: (option: LocalisedUrlsOption | undefined) => ResolvedLocalisedUrlsConfig;
@@ -0,0 +1,10 @@
1
+ export { resolveLocalisedUrlsConfig } from './config.js';
2
+ export { normalisePathname, normalisePathPattern } from './normalise.js';
3
+ export { canonicalTargetPathname, localiseTargetPathname, stripLanguagePrefix, } from './pathname.js';
4
+ export { buildPathFromPattern, matchPathPattern } from './patterns.js';
5
+ export type { LocaleRedirectSkipRule } from './redirect.js';
6
+ export { DEFAULT_LOCALE_REDIRECT_SKIP_RULES, isDefaultLocaleRedirectSkipPath, matchesPathPrefix, shouldSkipLocaleRedirect, } from './redirect.js';
7
+ export { resolveCanonicalLocalisedPath, resolveLocalisedPath } from './resolve.js';
8
+ export { createLocalisedRouteRewrite } from './routeIdentity.js';
9
+ export { applyLocalisedUrlsToRoutes, validateLocalisedUrls } from './routes.js';
10
+ export type { LocalisedRoute, LocalisedUrlPathMap, LocalisedUrlsMap, LocalisedUrlsOption, ResolvedLocalisedUrlsConfig, } from './types.js';
@@ -0,0 +1,10 @@
1
+ export declare const normalisePathPattern: (path: string) => string;
2
+ /**
3
+ * Normalise a concrete request pathname: slash cleanup only. Unlike
4
+ * {@link normalisePathPattern} it must not rewrite literal `[x]` segments to
5
+ * `:x` params — pathnames are values, not patterns.
6
+ */
7
+ export declare const normalisePathname: (pathname: string) => string;
8
+ export declare const normaliseRoutePath: (path: string) => string;
9
+ export declare const stripLeadingLocaleParam: (path?: string) => string | undefined;
10
+ export declare const getLeadingLocaleParam: (path?: string) => string | null;
@@ -0,0 +1,4 @@
1
+ import type { LocalisedUrlsOption } from './types.js';
2
+ export declare const stripLanguagePrefix: (pathname: string, languages: string[]) => string;
3
+ export declare const localiseTargetPathname: (pathname: string, language: string, languages: string[], localisedUrls?: LocalisedUrlsOption) => string;
4
+ export declare const canonicalTargetPathname: (pathname: string, languages: string[], localisedUrls?: LocalisedUrlsOption) => string;
@@ -0,0 +1,11 @@
1
+ export declare const getOrderedPathParamSignature: (pattern: string) => string[];
2
+ export declare const getPathParamSignature: (pattern: string) => string[];
3
+ export declare const getPathPatternValidationIssue: (pattern: string) => string | undefined;
4
+ export declare const getPhysicalPathPattern: (pattern: string) => string;
5
+ export declare const haveEqualPatternSpecificity: (left: string, right: string) => boolean;
6
+ export declare const doPathPatternsOverlap: (left: string, right: string) => boolean;
7
+ export declare const sortPatternsBySpecificity: <T extends {
8
+ pattern: string;
9
+ }>(patterns: T[]) => T[];
10
+ export declare const matchPathPattern: (pathname: string, pattern: string) => Record<string, string> | null;
11
+ export declare const buildPathFromPattern: (pattern: string, params: Record<string, string>) => string;
@@ -0,0 +1,19 @@
1
+ export type LocaleRedirectSkipRule = {
2
+ type: 'exact';
3
+ path: string;
4
+ } | {
5
+ type: 'prefix';
6
+ path: string;
7
+ } | {
8
+ type: 'pattern';
9
+ path: RegExp;
10
+ };
11
+ /**
12
+ * Federation artifacts are never pages. The remote entries match the same
13
+ * shapes the federation layer itself recognises and serves (`mfCache.ts`):
14
+ * a manifest may name a root entry such as `remoteEntry.catalog.js`.
15
+ */
16
+ export declare const DEFAULT_LOCALE_REDIRECT_SKIP_RULES: readonly LocaleRedirectSkipRule[];
17
+ export declare const matchesPathPrefix: (pathname: string, prefix: string) => boolean;
18
+ export declare const isDefaultLocaleRedirectSkipPath: (pathname: string, languages?: string[]) => boolean;
19
+ export declare const shouldSkipLocaleRedirect: (pathname: string, languages?: string[], ignoreRedirectRoutes?: string[] | ((pathname: string) => boolean)) => boolean;
@@ -0,0 +1,7 @@
1
+ import type { LocalisedUrlsMap } from './types.js';
2
+ export declare const resolveLocalisedPath: (pathname: string, targetLanguage: string, languages: string[], localisedUrls: LocalisedUrlsMap) => string;
3
+ /**
4
+ * Reverse-map language-specific pathnames back to language-agnostic
5
+ * LocalisedUrlsMap keys.
6
+ */
7
+ export declare const resolveCanonicalLocalisedPath: (pathname: string, languages: string[], localisedUrls: LocalisedUrlsMap) => string;
@@ -0,0 +1,22 @@
1
+ interface RouteIdentity {
2
+ id?: string;
3
+ path?: string;
4
+ canonicalPath: string;
5
+ paths?: Record<string, string>;
6
+ }
7
+ interface RouteNode {
8
+ id?: string;
9
+ path?: string;
10
+ children?: RouteNode[];
11
+ modernLocalisedRoute?: RouteIdentity;
12
+ }
13
+ /** Use the router's URL rewrite seam; browser URLs retain their locale spelling. */
14
+ export declare function createLocalisedRouteRewrite(routes: RouteNode[]): {
15
+ input: ({ url }: {
16
+ url: URL;
17
+ }) => URL;
18
+ output: ({ url }: {
19
+ url: URL;
20
+ }) => URL;
21
+ } | undefined;
22
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { LocalisedRoute, LocalisedUrlsMap } from './types.js';
2
+ export declare const validateLocalisedUrls: (routes: LocalisedRoute[], languages: string[], localisedUrls: LocalisedUrlsMap) => void;
3
+ export declare const applyLocalisedUrlsToRoutes: (routes: LocalisedRoute[], languages: string[], localisedUrls: LocalisedUrlsMap, projection?: 'physical' | 'canonical') => LocalisedRoute[];
@@ -0,0 +1,14 @@
1
+ export type LocalisedRoute = {
2
+ type: 'nested' | 'page';
3
+ path?: string;
4
+ id?: string;
5
+ children?: LocalisedRoute[];
6
+ [key: string]: any;
7
+ };
8
+ export type LocalisedUrlPathMap = Record<string, string>;
9
+ export type LocalisedUrlsMap = Record<string, LocalisedUrlPathMap>;
10
+ export type LocalisedUrlsOption = boolean | LocalisedUrlsMap;
11
+ export interface ResolvedLocalisedUrlsConfig {
12
+ enabled: boolean;
13
+ map: LocalisedUrlsMap;
14
+ }
@@ -0,0 +1,4 @@
1
+ type PrefetchBehavior = 'intent' | 'render' | 'viewport' | 'none';
2
+ export declare function resolvePreloadFromPrefetch(prefetch: PrefetchBehavior | undefined, preload: unknown): {} | null;
3
+ export declare function normalizePreloadBehavior(preload: PrefetchBehavior | false | undefined, prefetch: PrefetchBehavior): PrefetchBehavior;
4
+ export {};
@@ -1,11 +1,13 @@
1
1
  declare const MARKER_ATTRIBUTE = "data-modern-helmet";
2
2
  export type RendererHeadMarkerProps = Record<typeof MARKER_ATTRIBUTE, string>;
3
3
  export * from './helmetCompat.js';
4
- export declare const beginHeadRender: (context: object) => void;
5
- export declare const collectHeadRecord: <RecordType>(context: object, createRecord: () => RecordType, publish: (records: RecordType[]) => void) => RendererHeadMarkerProps | null | undefined;
4
+ export type ReportLateHead = (message: string) => void;
5
+ export declare const LATE_HEAD_MESSAGE = "<Helmet> rendered in a boundary that completed after the shell; head tags dropped. Move it above the Suspense boundary or set server.ssrByEntries[entry].mode to 'string'.";
6
+ export declare const beginHeadRender: (context: object, reportLateHead: ReportLateHead) => void;
7
+ export declare const collectHeadRecord: <RecordType>(context: object, createRecord: () => RecordType, publish: (records: RecordType[]) => void) => RendererHeadMarkerProps | undefined;
6
8
  export declare const collectHeadState: <RecordType, StateType>(context: object, createRecord: () => RecordType, derive: (records: RecordType[]) => StateType, target: {
7
9
  helmet?: StateType;
8
- }) => RendererHeadMarkerProps | null | undefined;
10
+ }) => RendererHeadMarkerProps | undefined;
9
11
  export declare const publishHeadRender: (context: object) => void;
10
12
  export declare const finishHeadRender: (context: object) => void;
11
13
  export declare const completeHeadRender: (context: object, html: string) => string;
@@ -0,0 +1,10 @@
1
+ /** Create a browser producer client with its own configuration and policy. */
2
+ export declare const createClient: () => {
3
+ configure: (options: import("./types.js").IOptions<typeof fetch>) => void;
4
+ createRequest: import("./types.js").RequestCreator<typeof fetch>;
5
+ createUploader: import("./types.js").UploadCreator;
6
+ };
7
+ export declare const configure: (options: import("./types.js").IOptions<typeof fetch>) => void, createRequest: import("./types.js").RequestCreator<typeof fetch>, createUploader: import("./types.js").UploadCreator;
8
+ export { CrossOriginEnvelopePolicyError, IdentityBindingViolationError, OperationContractViolationError, ProducerClientNotInitializedError, ProducerDomainNotConfiguredError, } from './policyCore.js';
9
+ export * from './requestContext.js';
10
+ export * from './types.js';
@@ -0,0 +1,14 @@
1
+ import type { RequestClient } from '@modern-js/create-request/client';
2
+ import type { IOptions, RequestCreator, TransportTarget, UploadCreator } from './types.js';
3
+ type HeaderMap = Record<string, any>;
4
+ type PolicyEnvironment = {
5
+ target: TransportTarget;
6
+ resolveSourceOrigin: (incomingHeaders: HeaderMap) => string | undefined;
7
+ };
8
+ /** Bind fork producer policy to one isolated native request client. */
9
+ export declare const createPolicyClient: <F>(nativeClient: RequestClient<F>, environment: PolicyEnvironment) => {
10
+ configure: (options: IOptions<F>) => void;
11
+ createRequest: RequestCreator<F>;
12
+ createUploader: UploadCreator;
13
+ };
14
+ export {};
@@ -0,0 +1,10 @@
1
+ /** Create a server producer client with its own configuration and policy. */
2
+ export declare const createClient: () => {
3
+ configure: (options: import("./types.js").IOptions<typeof fetch>) => void;
4
+ createRequest: import("./types.js").RequestCreator<typeof fetch>;
5
+ createUploader: import("./types.js").UploadCreator;
6
+ };
7
+ export declare const configure: (options: import("./types.js").IOptions<typeof fetch>) => void, createRequest: import("./types.js").RequestCreator<typeof fetch>, createUploader: import("./types.js").UploadCreator;
8
+ export { CrossOriginEnvelopePolicyError, IdentityBindingViolationError, OperationContractViolationError, ProducerClientNotInitializedError, ProducerDomainNotConfiguredError, } from './policyCore.js';
9
+ export * from './requestContext.js';
10
+ export * from './types.js';