octane 0.2.11 → 0.2.13

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 (264) hide show
  1. package/README.md +5 -0
  2. package/dist/behavior-root.d.ts +13 -3
  3. package/dist/behavior-root.js +28 -5
  4. package/dist/cjs/behavior-root.cjs +32 -6
  5. package/dist/cjs/class-names.cjs +49 -0
  6. package/dist/cjs/constants.cjs +9 -0
  7. package/dist/cjs/context-epoch.cjs +38 -0
  8. package/dist/cjs/css.cjs +6 -27
  9. package/dist/cjs/data-encoding.cjs +160 -0
  10. package/dist/cjs/dom-binding-handoff.cjs +93 -0
  11. package/dist/cjs/dom-binding-protocol.cjs +115 -0
  12. package/dist/cjs/dom-binding-styles.cjs +292 -0
  13. package/dist/cjs/dom-bindings.cjs +700 -0
  14. package/dist/cjs/dom-focused-move.cjs +66 -0
  15. package/dist/cjs/dom-stage.cjs +896 -0
  16. package/dist/cjs/dom-tables.cjs +4 -94
  17. package/dist/cjs/error-codes.client.generated.cjs +33 -0
  18. package/dist/cjs/error-codes.server.generated.cjs +24 -0
  19. package/dist/cjs/hydration/control-capture.cjs +244 -0
  20. package/dist/cjs/hydration/event-capture.cjs +125 -43
  21. package/dist/cjs/hydration/interaction-config.cjs +50 -2
  22. package/dist/cjs/hydration-markers.cjs +37 -0
  23. package/dist/cjs/independent-hydration-protocol.cjs +106 -0
  24. package/dist/cjs/index.cjs +9 -0
  25. package/dist/cjs/runtime.cjs +6397 -1683
  26. package/dist/cjs/runtime.server.cjs +1465 -213
  27. package/dist/cjs/server/early-signals.cjs +45 -0
  28. package/dist/cjs/server/index.cjs +47 -0
  29. package/dist/cjs/server/rpc-batch.cjs +149 -0
  30. package/dist/cjs/server/rpc-stream.cjs +146 -0
  31. package/dist/cjs/server/rpc.cjs +34 -15
  32. package/dist/cjs/server/signal-query-observation.cjs +158 -0
  33. package/dist/cjs/server/streamed-region.cjs +52 -0
  34. package/dist/cjs/server/streamed-signals.cjs +512 -0
  35. package/dist/cjs/server-call.cjs +103 -0
  36. package/dist/cjs/server-rpc-batch-client.cjs +141 -0
  37. package/dist/cjs/server-rpc-client.cjs +94 -27
  38. package/dist/cjs/server-rpc-protocol.cjs +141 -0
  39. package/dist/cjs/server-rpc-stream-client.cjs +118 -0
  40. package/dist/cjs/signals/actions.cjs +474 -0
  41. package/dist/cjs/signals/client.cjs +4 -1
  42. package/dist/cjs/signals/computations.cjs +460 -0
  43. package/dist/cjs/signals/control-binding.cjs +368 -0
  44. package/dist/cjs/signals/derived-facade.cjs +50 -0
  45. package/dist/cjs/signals/document-owner.cjs +71 -0
  46. package/dist/cjs/signals/early-values.cjs +155 -0
  47. package/dist/cjs/signals/encoding.cjs +6 -95
  48. package/dist/cjs/signals/engine.cjs +276 -12
  49. package/dist/cjs/signals/errors.cjs +18 -0
  50. package/dist/cjs/signals/facade.cjs +477 -0
  51. package/dist/cjs/signals/graph.cjs +166 -20
  52. package/dist/cjs/signals/handle-protocol.cjs +36 -0
  53. package/dist/cjs/signals/index.cjs +81 -2
  54. package/dist/cjs/signals/native-read-client.cjs +10 -0
  55. package/dist/cjs/signals/owner-context.cjs +112 -0
  56. package/dist/cjs/signals/query-attempt-observer.cjs +68 -0
  57. package/dist/cjs/signals/query-facade.cjs +72 -0
  58. package/dist/cjs/signals/read-protocol.cjs +54 -0
  59. package/dist/cjs/signals/requests.cjs +287 -14
  60. package/dist/cjs/signals/scalar-computations.cjs +76 -0
  61. package/dist/cjs/signals/server.cjs +4 -1
  62. package/dist/cjs/signals/transition-candidate.cjs +567 -0
  63. package/dist/cjs/signals/transition-state.cjs +106 -0
  64. package/dist/cjs/signals/types.cjs +50 -0
  65. package/dist/cjs/stream-protocol.cjs +3 -0
  66. package/dist/cjs/streamed-signals-protocol.cjs +159 -0
  67. package/dist/cjs/style-values.cjs +122 -0
  68. package/dist/cjs/trusted-html.cjs +30 -0
  69. package/dist/cjs/version.cjs +1 -1
  70. package/dist/class-names.d.ts +5 -0
  71. package/dist/class-names.js +25 -0
  72. package/dist/compiler/bundler.js +51 -22
  73. package/dist/compiler/compile.js +2534 -581
  74. package/dist/compiler/dom-binding-program.js +935 -0
  75. package/dist/compiler/dom-binding-request.js +57 -0
  76. package/dist/compiler/dom-bindings.js +2245 -0
  77. package/dist/compiler/hook-deps.js +759 -10
  78. package/dist/compiler/hydrate-boundaries.js +358 -15
  79. package/dist/compiler/index.d.ts +39 -2
  80. package/dist/compiler/index.js +1 -0
  81. package/dist/compiler/native-attribute-reads.js +127 -0
  82. package/dist/compiler/native-change-diagnostics.js +32 -38
  83. package/dist/compiler/native-read-diagnostics.js +69 -8
  84. package/dist/compiler/native-read-types.js +80 -34
  85. package/dist/compiler/parser.node.js +1 -1
  86. package/dist/compiler/renderer-boundaries.js +40 -0
  87. package/dist/compiler/server-context.js +118 -0
  88. package/dist/compiler/signal-attempt-reads.js +479 -0
  89. package/dist/compiler/signal-declarations.js +557 -0
  90. package/dist/compiler/signal-start-reads.js +413 -0
  91. package/dist/compiler/slot-hooks.d.ts +3 -1
  92. package/dist/compiler/slot-hooks.js +168 -34
  93. package/dist/compiler/strong-auto-memo.js +90 -0
  94. package/dist/compiler/strong-html.js +143 -0
  95. package/dist/compiler/strong-mode.js +764 -66
  96. package/dist/compiler/strong-template-policy.js +307 -0
  97. package/dist/compiler/template-ir.js +200 -0
  98. package/dist/compiler/typescript.d.ts +2 -0
  99. package/dist/compiler/typescript.js +2 -0
  100. package/dist/compiler/vite.d.ts +3 -1
  101. package/dist/compiler/vite.js +122 -4
  102. package/dist/compiler/volar.LICENSES.txt +1 -1
  103. package/dist/compiler/volar.d.ts +6 -1
  104. package/dist/compiler/volar.js +750 -1433
  105. package/dist/constants.d.ts +1 -0
  106. package/dist/constants.js +10 -0
  107. package/dist/context-epoch.d.ts +2 -0
  108. package/dist/context-epoch.js +13 -0
  109. package/dist/css.d.ts +2 -5
  110. package/dist/css.js +2 -23
  111. package/dist/data-encoding.d.ts +9 -0
  112. package/dist/data-encoding.js +134 -0
  113. package/dist/dom-binding-classes.d.ts +15 -0
  114. package/dist/dom-binding-classes.js +129 -0
  115. package/dist/dom-binding-controls.d.ts +2 -0
  116. package/dist/dom-binding-controls.js +6 -0
  117. package/dist/dom-binding-handoff.d.ts +55 -0
  118. package/dist/dom-binding-handoff.js +62 -0
  119. package/dist/dom-binding-program.d.ts +300 -0
  120. package/dist/dom-binding-program.js +1625 -0
  121. package/dist/dom-binding-projections.d.ts +15 -0
  122. package/dist/dom-binding-projections.js +187 -0
  123. package/dist/dom-binding-protocol.d.ts +13 -0
  124. package/dist/dom-binding-protocol.js +88 -0
  125. package/dist/dom-binding-signals.d.ts +21 -0
  126. package/dist/dom-binding-signals.js +109 -0
  127. package/dist/dom-binding-styles.d.ts +17 -0
  128. package/dist/dom-binding-styles.js +272 -0
  129. package/dist/dom-bindings.d.ts +89 -0
  130. package/dist/dom-bindings.js +670 -0
  131. package/dist/dom-focused-move.d.ts +6 -0
  132. package/dist/dom-focused-move.js +42 -0
  133. package/dist/dom-stage.d.ts +52 -0
  134. package/dist/dom-stage.js +872 -0
  135. package/dist/dom-tables.d.ts +1 -3
  136. package/dist/dom-tables.js +1 -91
  137. package/dist/error-codes.client.generated.d.ts +9 -0
  138. package/dist/error-codes.client.generated.js +33 -0
  139. package/dist/error-codes.server.generated.d.ts +6 -0
  140. package/dist/error-codes.server.generated.js +24 -0
  141. package/dist/hydration/control-capture.d.ts +62 -0
  142. package/dist/hydration/control-capture.js +223 -0
  143. package/dist/hydration/document-lifecycle.d.ts +23 -0
  144. package/dist/hydration/document-lifecycle.js +80 -0
  145. package/dist/hydration/event-capture.d.ts +20 -1
  146. package/dist/hydration/event-capture.js +128 -42
  147. package/dist/hydration/independent-island.d.ts +45 -0
  148. package/dist/hydration/independent-island.js +233 -0
  149. package/dist/hydration/index.d.ts +8 -1
  150. package/dist/hydration/index.js +55 -1
  151. package/dist/hydration/interaction-config.d.ts +5 -0
  152. package/dist/hydration/interaction-config.js +44 -1
  153. package/dist/hydration/stream-delivery.d.ts +32 -0
  154. package/dist/hydration/stream-delivery.js +333 -0
  155. package/dist/hydration/stream-receiver.d.ts +26 -0
  156. package/dist/hydration/stream-receiver.js +204 -0
  157. package/dist/hydration/stream-result-receiver.d.ts +70 -0
  158. package/dist/hydration/stream-result-receiver.js +246 -0
  159. package/dist/hydration/streamed-signals.d.ts +44 -0
  160. package/dist/hydration/streamed-signals.js +186 -0
  161. package/dist/hydration/types.d.ts +6 -0
  162. package/dist/hydration-markers.d.ts +7 -0
  163. package/dist/hydration-markers.js +10 -0
  164. package/dist/independent-hydration-protocol.d.ts +31 -0
  165. package/dist/independent-hydration-protocol.js +80 -0
  166. package/dist/index.d.ts +3 -0
  167. package/dist/index.js +6 -0
  168. package/dist/internal/signal-read.d.ts +1 -0
  169. package/dist/internal/signal-read.js +4 -0
  170. package/dist/jsx-runtime-strong.d.ts +33 -0
  171. package/dist/jsx-runtime.d.ts +58 -2
  172. package/dist/public-types.d.ts +15 -1
  173. package/dist/runtime.d.ts +297 -23
  174. package/dist/runtime.js +6405 -1679
  175. package/dist/runtime.server.d.ts +110 -27
  176. package/dist/runtime.server.js +1458 -213
  177. package/dist/server/early-signals.d.ts +14 -0
  178. package/dist/server/early-signals.js +34 -0
  179. package/dist/server/index.d.ts +11 -2
  180. package/dist/server/index.js +50 -1
  181. package/dist/server/rpc-batch.d.ts +17 -0
  182. package/dist/server/rpc-batch.js +129 -0
  183. package/dist/server/rpc-stream.d.ts +9 -0
  184. package/dist/server/rpc-stream.js +125 -0
  185. package/dist/server/rpc.d.ts +5 -1
  186. package/dist/server/rpc.js +37 -13
  187. package/dist/server/signal-query-observation.d.ts +3 -0
  188. package/dist/server/signal-query-observation.js +134 -0
  189. package/dist/server/streamed-region.d.ts +15 -0
  190. package/dist/server/streamed-region.js +30 -0
  191. package/dist/server/streamed-signals.d.ts +45 -0
  192. package/dist/server/streamed-signals.js +488 -0
  193. package/dist/server-call.d.ts +41 -0
  194. package/dist/server-call.js +75 -0
  195. package/dist/server-rpc-batch-client.d.ts +7 -0
  196. package/dist/server-rpc-batch-client.js +119 -0
  197. package/dist/server-rpc-client.d.ts +3 -1
  198. package/dist/server-rpc-client.js +99 -27
  199. package/dist/server-rpc-protocol.d.ts +47 -0
  200. package/dist/server-rpc-protocol.js +109 -0
  201. package/dist/server-rpc-stream-client.d.ts +5 -0
  202. package/dist/server-rpc-stream-client.js +98 -0
  203. package/dist/signals/actions.d.ts +12 -0
  204. package/dist/signals/actions.js +466 -0
  205. package/dist/signals/client.d.ts +2 -0
  206. package/dist/signals/client.js +1 -0
  207. package/dist/signals/computations.d.ts +37 -0
  208. package/dist/signals/computations.js +455 -0
  209. package/dist/signals/control-binding.d.ts +31 -0
  210. package/dist/signals/control-binding.js +353 -0
  211. package/dist/signals/derived-facade.d.ts +3 -0
  212. package/dist/signals/derived-facade.js +25 -0
  213. package/dist/signals/document-owner.d.ts +10 -0
  214. package/dist/signals/document-owner.js +43 -0
  215. package/dist/signals/early-values.d.ts +24 -0
  216. package/dist/signals/early-values.js +124 -0
  217. package/dist/signals/encoding.d.ts +1 -3
  218. package/dist/signals/encoding.js +3 -93
  219. package/dist/signals/engine.d.ts +53 -4
  220. package/dist/signals/engine.js +275 -16
  221. package/dist/signals/errors.d.ts +7 -0
  222. package/dist/signals/errors.js +16 -0
  223. package/dist/signals/facade.d.ts +74 -0
  224. package/dist/signals/facade.js +452 -0
  225. package/dist/signals/graph.d.ts +52 -6
  226. package/dist/signals/graph.js +174 -19
  227. package/dist/signals/handle-protocol.d.ts +4 -0
  228. package/dist/signals/handle-protocol.js +11 -0
  229. package/dist/signals/index.d.ts +12 -3
  230. package/dist/signals/index.js +71 -2
  231. package/dist/signals/native-read-client.d.ts +3 -0
  232. package/dist/signals/native-read-client.js +10 -0
  233. package/dist/signals/owner-context.d.ts +22 -0
  234. package/dist/signals/owner-context.js +77 -0
  235. package/dist/signals/query-attempt-observer.d.ts +49 -0
  236. package/dist/signals/query-attempt-observer.js +41 -0
  237. package/dist/signals/query-facade.d.ts +3 -0
  238. package/dist/signals/query-facade.js +49 -0
  239. package/dist/signals/read-protocol.d.ts +37 -2
  240. package/dist/signals/read-protocol.js +44 -0
  241. package/dist/signals/requests.d.ts +38 -5
  242. package/dist/signals/requests.js +298 -15
  243. package/dist/signals/scalar-computations.d.ts +2 -0
  244. package/dist/signals/scalar-computations.js +60 -0
  245. package/dist/signals/server.d.ts +2 -0
  246. package/dist/signals/server.js +1 -0
  247. package/dist/signals/transition-candidate.d.ts +71 -0
  248. package/dist/signals/transition-candidate.js +557 -0
  249. package/dist/signals/transition-state.d.ts +51 -0
  250. package/dist/signals/transition-state.js +70 -0
  251. package/dist/signals/types.d.ts +95 -5
  252. package/dist/signals/types.js +20 -0
  253. package/dist/stream-protocol.d.ts +0 -5
  254. package/dist/stream-protocol.js +3 -0
  255. package/dist/streamed-signals-protocol.d.ts +60 -0
  256. package/dist/streamed-signals-protocol.js +130 -0
  257. package/dist/style-values.d.ts +3 -0
  258. package/dist/style-values.js +96 -0
  259. package/dist/trusted-html.d.ts +17 -0
  260. package/dist/trusted-html.js +6 -0
  261. package/dist/universal-core.d.ts +6 -0
  262. package/dist/universal-core.js +214 -202
  263. package/dist/version.js +1 -1
  264. package/package.json +48 -5
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var early_signals_exports = {};
20
+ __export(early_signals_exports, {
21
+ earlySignalBootstrapScript: () => earlySignalBootstrapScript,
22
+ streamedSignalBootstrapJs: () => streamedSignalBootstrapJs
23
+ });
24
+ module.exports = __toCommonJS(early_signals_exports);
25
+ var import_constants = require("../constants.cjs");
26
+ var import_interaction_config = require("../hydration/interaction-config.cjs");
27
+ function earlySignalBootstrapScript(options = {}) {
28
+ const nonce = options.nonce === void 0 ? "" : ' nonce="' + options.nonce.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;") + '"';
29
+ return "<script " + import_constants.STREAM_SCRIPT_ATTR + nonce + ">" + streamedSignalBootstrapJs(options.independentHydration) + "</script>";
30
+ }
31
+ let STREAMED_SIGNAL_BOOTSTRAP_JS;
32
+ let STREAMED_SIGNAL_INDEPENDENT_BOOTSTRAP_JS;
33
+ function streamedSignalBootstrapJs(independentHydration = false) {
34
+ const signals = STREAMED_SIGNAL_BOOTSTRAP_JS ??= '(function(g){var z="__octaneStreamedSignalSelections",v=g[z];if(!v){var a=[];g[z]={version:1,identities:a,register:function(i){if(a.length>=256){this.overflow=true;return;}a.push(i);}};}var k="__octaneStreamedRenderer",e=g[k];if(e)return;var q=[];g[k]={version:1,frames:q,receive:function(f){if(q.length>=512){this.overflow=true;return;}q.push(f);}};var s=g.__octaneEarlySignalControls||(g.__octaneEarlySignalControls={q:[],n:0});if(!s.l){s.l=1;document.addEventListener("input",function(e){var t=e.target;if(!t||!t.getAttribute||!t.getAttribute("' + import_constants.SIGNAL_CONTROL_ATTR + '"))return;var r=++s.n,p=g.__octanePublishSignalControl;if(p){p(t,r);return;}for(var i=0;i<s.q.length;i++)if(s.q[i][0]===t){s.q[i]=[t,r];return;}if(s.q.length<256)s.q.push([t,r]);},true);}})(globalThis);';
35
+ if (!independentHydration) return signals;
36
+ return STREAMED_SIGNAL_INDEPENDENT_BOOTSTRAP_JS ??= signals + // A completed client build can contain its first independent widget only
37
+ // in a later streamed wave. Capture its intent before module evaluation,
38
+ // with no activation dependency on its parent or sidecar being present.
39
+ "(function(d){var h=" + JSON.stringify(import_interaction_config.EARLY_HYDRATION_INTENTS_KEY) + ";if(d[h])return;var u=d[h]={version:1,q:[]},es=" + JSON.stringify(import_interaction_config.HYDRATE_SUPPORTED_INTERACTION_EVENTS) + ",ds=" + JSON.stringify(import_interaction_config.HYDRATE_DEFAULT_INTERACTION_EVENTS) + ",ns=" + JSON.stringify(import_interaction_config.HYDRATE_NATIVE_DEFAULT_INTERACTION_EVENTS) + ',is="[' + import_constants.HYDRATE_INDEPENDENT_ATTR + ']",ms="[' + import_constants.HYDRATE_ID_ATTR + ']";function c(e){var t=e.target;if(!t||!t.closest)return;var b=t.closest(is);if(!b)return;var id=b.getAttribute("' + import_constants.HYDRATE_ID_ATTR + '");if(id===null)return;var w=b.getAttribute("' + import_constants.HYDRATE_WHEN_ATTR + '"),a=b.getAttribute("' + import_interaction_config.HYDRATE_INTERACTION_EVENTS_ATTR + '");if(w===null||w==="never")return;var link=t.closest("a[href],area[href]");if(link&&b.contains(link))return;if((e.type==="pointerenter"||e.type==="mouseenter")&&d.elementFromPoint){var hit=d.elementFromPoint(e.clientX,e.clientY),nested=hit&&hit.closest(is);if(nested&&nested!==b&&b.contains(nested))return;}var m=t.closest(ms),ok=false;while(m){var x=m.getAttribute("' + import_constants.HYDRATE_WHEN_ATTR + '"),y=m.getAttribute("' + import_interaction_config.HYDRATE_INTERACTION_EVENTS_ATTR + '");if(x==="dynamic"&&e.type==="click"||x==="interaction"&&(y===null?ds:y.split(/\\s+/)).indexOf(e.type)!==-1)ok=true;if(m===b)break;m=m.parentElement&&m.parentElement.closest(ms);}if(!ok)return;var c=null,g=null,p=u.q[u.q.length-1];if(e.type==="click"&&e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){c=t.closest("button[' + import_interaction_config.HYDRATE_SELECTION_ATTR + ']");if(c&&c.type==="button"&&c.closest(is)===b)g=c.getAttribute("' + import_interaction_config.HYDRATE_SELECTION_ATTR + '");}var v=g?[e,t,b,id,w,a,c,g]:[e,t,b,id,w,a];if(g&&p&&p[2]===b&&p[7]===g&&p[6].isConnected&&p[6].contains(p[1])&&p[6].type==="button"&&p[6].getAttribute("' + import_interaction_config.HYDRATE_SELECTION_ATTR + '")===g){u.q[u.q.length-1]=v;}else{if(u.q.length>=' + import_interaction_config.EARLY_HYDRATION_INTENTS_LIMIT + "){u.overflow=true;u.q.length=0;u.stop();return;}u.q.push(v);}if(e.bubbles){if(e.cancelable&&ns.indexOf(e.type)===-1)e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();}}u.stop=function(){for(var i=0;i<es.length;i++)d.removeEventListener(es[i],c,true);u.stop=null;};for(var j=0;j<es.length;j++)d.addEventListener(es[j],c,true);})(document);";
40
+ }
41
+ // Annotate the CommonJS export names for ESM import in node:
42
+ 0 && (module.exports = {
43
+ earlySignalBootstrapScript,
44
+ streamedSignalBootstrapJs
45
+ });
@@ -29,25 +29,39 @@ __export(server_exports, {
29
29
  Suspense: () => import_runtime_server.Suspense,
30
30
  ViewTransition: () => import_runtime_server.ViewTransition,
31
31
  __methodDep: () => import_method_dep.__methodDep,
32
+ __registerServerFunction: () => import_server_call.__registerServerFunction,
33
+ __serverCall: () => import_server_call.__serverCall,
34
+ __setServerCallContextSource: () => import_server_call.__setServerCallContextSource,
32
35
  __useLinkedStateWithGetter: () => import_runtime_server.__useLinkedStateWithGetter,
33
36
  __useReducerWithGetter: () => import_runtime_server.__useReducerWithGetter,
34
37
  __useStateWithGetter: () => import_runtime_server.__useStateWithGetter,
35
38
  addTransitionType: () => import_runtime_server.addTransitionType,
39
+ batchServerCalls: () => import_rpc_batch.batchServerCalls,
36
40
  cloneElement: () => import_runtime_server.cloneElement,
41
+ createAutomaticStreamedSignalInjection: () => import_streamed_signals.createAutomaticStreamedSignalInjection,
37
42
  createContext: () => import_runtime_server.createContext,
38
43
  createElement: () => import_runtime_server.createElement,
39
44
  createPortal: () => import_runtime_server.createPortal,
40
45
  createScopedElement: () => import_runtime_server.createScopedElement,
41
46
  createScopedValue: () => import_runtime_server.createScopedValue,
47
+ createStreamedRegionPlacementFrame: () => import_streamed_region.createStreamedRegionPlacementFrame,
48
+ createStreamedRendererFrameStream: () => import_streamed_signals.createStreamedRendererFrameStream,
49
+ createStreamedSignalInjection: () => import_streamed_signals.createStreamedSignalInjection,
50
+ createStreamedSignalResultFrames: () => import_streamed_signals.createStreamedSignalResultFrames,
42
51
  createSubSlot: () => import_sub_slot.createSubSlot,
43
52
  descriptorChildren: () => import_runtime_server.descriptorChildren,
53
+ earlySignalBootstrapScript: () => import_early_signals.earlySignalBootstrapScript,
54
+ enableServerSignalBindings: () => import_runtime_server.enableServerSignalBindings,
44
55
  escapeAttr: () => import_runtime_server.escapeAttr,
45
56
  escapeHtml: () => import_runtime_server.escapeHtml,
46
57
  executeServerFunction: () => import_rpc.executeServerFunction,
58
+ executeServerFunctionBatch: () => import_rpc_batch.executeServerFunctionBatch,
59
+ executeServerFunctionStream: () => import_rpc.executeServerFunctionStream,
47
60
  flushSync: () => import_runtime_server.flushSync,
48
61
  getSsrSuspenseTimeout: () => import_runtime_server.getSsrSuspenseTimeout,
49
62
  hookSlots: () => import_runtime_server.hookSlots,
50
63
  injectStyle: () => import_runtime_server.injectStyle,
64
+ installSignalOwnerEnvironment: () => import_owner_context.installSignalOwnerEnvironment,
51
65
  invokeManualHook: () => import_runtime_server.invokeManualHook,
52
66
  isChildrenBlock: () => import_runtime_server.isChildrenBlock,
53
67
  isValidElement: () => import_runtime_server.isValidElement,
@@ -74,6 +88,7 @@ __export(server_exports, {
74
88
  renderToStaticMarkup: () => import_runtime_server.renderToStaticMarkup,
75
89
  renderToString: () => import_runtime_server.renderToString,
76
90
  requestFormReset: () => import_runtime_server.requestFormReset,
91
+ retireSignalOwnerIdentity: () => import_owner_context.retireSignalOwnerIdentity,
77
92
  setSsrSuspenseTimeout: () => import_runtime_server.setSsrSuspenseTimeout,
78
93
  ssrActivity: () => import_runtime_server.ssrActivity,
79
94
  ssrArm: () => import_runtime_server.ssrArm,
@@ -110,6 +125,9 @@ __export(server_exports, {
110
125
  ssrSelectAttrs: () => import_runtime_server.ssrSelectAttrs,
111
126
  ssrSelectScope: () => import_runtime_server.ssrSelectScope,
112
127
  ssrSelectScopeSources: () => import_runtime_server.ssrSelectScopeSources,
128
+ ssrSignalControlAttrs: () => import_runtime_server.ssrSignalControlAttrs,
129
+ ssrSignalControlValue: () => import_runtime_server.ssrSignalControlValue,
130
+ ssrSignalValue: () => import_runtime_server.ssrSignalValue,
113
131
  ssrSnapshotSpread: () => import_runtime_server.ssrSnapshotSpread,
114
132
  ssrSpread: () => import_runtime_server.ssrSpread,
115
133
  ssrSpreadContent: () => import_runtime_server.ssrSpreadContent,
@@ -124,9 +142,11 @@ __export(server_exports, {
124
142
  ssrValueAttr: () => import_runtime_server.ssrValueAttr,
125
143
  ssrVoidContent: () => import_runtime_server.ssrVoidContent,
126
144
  startTransition: () => import_runtime_server.startTransition,
145
+ streamedRendererFrameScript: () => import_streamed_signals.streamedRendererFrameScript,
127
146
  styleMap: () => import_runtime_server.styleMap,
128
147
  subSlot: () => import_sub_slot.subSlot,
129
148
  touchStyleMap: () => import_runtime_server.touchStyleMap,
149
+ trustHTML: () => import_trusted_html.trustHTML,
130
150
  unstable_Activity: () => import_runtime_server.Activity,
131
151
  unstable_ViewTransition: () => import_runtime_server.ViewTransition,
132
152
  unstable_addTransitionType: () => import_runtime_server.addTransitionType,
@@ -159,7 +179,14 @@ __export(server_exports, {
159
179
  withSlot: () => import_runtime_server.withSlot
160
180
  });
161
181
  module.exports = __toCommonJS(server_exports);
182
+ var import_trusted_html = require("../trusted-html.cjs");
162
183
  var import_rpc = require("./rpc.cjs");
184
+ var import_early_signals = require("./early-signals.cjs");
185
+ var import_rpc_batch = require("./rpc-batch.cjs");
186
+ var import_streamed_region = require("./streamed-region.cjs");
187
+ var import_streamed_signals = require("./streamed-signals.cjs");
188
+ var import_owner_context = require("../signals/owner-context.cjs");
189
+ var import_server_call = require("../server-call.cjs");
163
190
  var import_version = require("../version.cjs");
164
191
  var import_compatibility = require("../compatibility.cjs");
165
192
  var import_sub_slot = require("../sub-slot.cjs");
@@ -178,25 +205,39 @@ var import_runtime_server = require("../runtime.server.cjs");
178
205
  Suspense,
179
206
  ViewTransition,
180
207
  __methodDep,
208
+ __registerServerFunction,
209
+ __serverCall,
210
+ __setServerCallContextSource,
181
211
  __useLinkedStateWithGetter,
182
212
  __useReducerWithGetter,
183
213
  __useStateWithGetter,
184
214
  addTransitionType,
215
+ batchServerCalls,
185
216
  cloneElement,
217
+ createAutomaticStreamedSignalInjection,
186
218
  createContext,
187
219
  createElement,
188
220
  createPortal,
189
221
  createScopedElement,
190
222
  createScopedValue,
223
+ createStreamedRegionPlacementFrame,
224
+ createStreamedRendererFrameStream,
225
+ createStreamedSignalInjection,
226
+ createStreamedSignalResultFrames,
191
227
  createSubSlot,
192
228
  descriptorChildren,
229
+ earlySignalBootstrapScript,
230
+ enableServerSignalBindings,
193
231
  escapeAttr,
194
232
  escapeHtml,
195
233
  executeServerFunction,
234
+ executeServerFunctionBatch,
235
+ executeServerFunctionStream,
196
236
  flushSync,
197
237
  getSsrSuspenseTimeout,
198
238
  hookSlots,
199
239
  injectStyle,
240
+ installSignalOwnerEnvironment,
200
241
  invokeManualHook,
201
242
  isChildrenBlock,
202
243
  isValidElement,
@@ -223,6 +264,7 @@ var import_runtime_server = require("../runtime.server.cjs");
223
264
  renderToStaticMarkup,
224
265
  renderToString,
225
266
  requestFormReset,
267
+ retireSignalOwnerIdentity,
226
268
  setSsrSuspenseTimeout,
227
269
  ssrActivity,
228
270
  ssrArm,
@@ -259,6 +301,9 @@ var import_runtime_server = require("../runtime.server.cjs");
259
301
  ssrSelectAttrs,
260
302
  ssrSelectScope,
261
303
  ssrSelectScopeSources,
304
+ ssrSignalControlAttrs,
305
+ ssrSignalControlValue,
306
+ ssrSignalValue,
262
307
  ssrSnapshotSpread,
263
308
  ssrSpread,
264
309
  ssrSpreadContent,
@@ -273,9 +318,11 @@ var import_runtime_server = require("../runtime.server.cjs");
273
318
  ssrValueAttr,
274
319
  ssrVoidContent,
275
320
  startTransition,
321
+ streamedRendererFrameScript,
276
322
  styleMap,
277
323
  subSlot,
278
324
  touchStyleMap,
325
+ trustHTML,
279
326
  unstable_Activity,
280
327
  unstable_ViewTransition,
281
328
  unstable_addTransitionType,
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var rpc_batch_exports = {};
20
+ __export(rpc_batch_exports, {
21
+ batchServerCalls: () => batchServerCalls,
22
+ executeServerFunctionBatch: () => executeServerFunctionBatch
23
+ });
24
+ module.exports = __toCommonJS(rpc_batch_exports);
25
+ var import_server_call = require("../server-call.cjs");
26
+ var import_server_rpc_protocol = require("../server-rpc-protocol.cjs");
27
+ var import_server_rpc_stream_client = require("../server-rpc-stream-client.cjs");
28
+ var import_rpc_stream = require("./rpc-stream.cjs");
29
+ function batchServerCalls(options, callback) {
30
+ (0, import_server_rpc_protocol.validateServerCallBatch)(options);
31
+ return callback();
32
+ }
33
+ function executeServerFunctionBatch(body, invoke, options = {}) {
34
+ const limits = (0, import_server_rpc_protocol.serverResultLimits)(options);
35
+ let members;
36
+ try {
37
+ const envelope = JSON.parse(body);
38
+ if (!Array.isArray(envelope) || envelope.length !== 2 || envelope[0] !== 1 || !Array.isArray(envelope[1]) || envelope[1].length === 0 || envelope[1].length > 32) {
39
+ throw new Error("Invalid batch");
40
+ }
41
+ members = envelope[1].map((member, id) => {
42
+ if (!Array.isArray(member) || member.length !== 3 || member[0] !== id || typeof member[1] !== "string" || !/^[a-f0-9]{8}$/.test(member[1]) || typeof member[2] !== "string") {
43
+ throw new Error("Invalid batch member");
44
+ }
45
+ (0, import_server_rpc_protocol.decodeServerArguments)(member[2]);
46
+ return { id, hash: member[1], body: member[2] };
47
+ });
48
+ } catch (error) {
49
+ throw new import_server_call.InvalidServerFunctionPayloadError(error);
50
+ }
51
+ const cancellation = new AbortController();
52
+ const signal = options.signal === void 0 ? cancellation.signal : AbortSignal.any([options.signal, cancellation.signal]);
53
+ async function* results() {
54
+ const ready = [];
55
+ let wake;
56
+ let remaining = members.length;
57
+ let closed = false;
58
+ let sequence = 1;
59
+ for (const member of members) {
60
+ void (async () => {
61
+ const timeout = new AbortController();
62
+ const memberSignal = AbortSignal.any([signal, timeout.signal]);
63
+ const timer = setTimeout(
64
+ () => timeout.abort(new DOMException("Server batch member timed out", "TimeoutError")),
65
+ limits.timeoutMs
66
+ );
67
+ let abort;
68
+ const aborted = new Promise((_, reject) => {
69
+ abort = () => reject(memberSignal.reason);
70
+ memberSignal.addEventListener("abort", abort, { once: true });
71
+ if (memberSignal.aborted) abort();
72
+ });
73
+ let outcome;
74
+ try {
75
+ const work = (async () => {
76
+ memberSignal.throwIfAborted();
77
+ const response = await invoke(member, memberSignal);
78
+ if (memberSignal.aborted) {
79
+ void response.body?.cancel().catch(() => {
80
+ });
81
+ memberSignal.throwIfAborted();
82
+ }
83
+ if (!response.ok) {
84
+ void response.body?.cancel().catch(() => {
85
+ });
86
+ return [
87
+ member.id,
88
+ response.headers.get("Octane-RPC-Outcome") === "rejected" ? "rejected" : "uncertain",
89
+ `Server function failed with status ${response.status}`
90
+ ];
91
+ }
92
+ const value = await (0, import_server_rpc_stream_client.readServerResult)(response, { ...limits, signal: memberSignal });
93
+ if (value !== null && typeof value === "object" && Symbol.asyncIterator in value) {
94
+ await value[Symbol.asyncIterator]().return?.();
95
+ throw new Error("Subscriptions cannot join a finite server-call batch");
96
+ }
97
+ return [member.id, "value", value];
98
+ })();
99
+ outcome = await Promise.race([work, aborted]);
100
+ } catch {
101
+ outcome = [
102
+ member.id,
103
+ "uncertain",
104
+ "Server batch member did not produce an authoritative result"
105
+ ];
106
+ } finally {
107
+ clearTimeout(timer);
108
+ memberSignal.removeEventListener("abort", abort);
109
+ }
110
+ if (!closed) {
111
+ ready.push(outcome);
112
+ wake?.();
113
+ }
114
+ })();
115
+ }
116
+ try {
117
+ while (remaining > 0) {
118
+ if (ready.length === 0)
119
+ await new Promise((resolve) => {
120
+ wake = resolve;
121
+ });
122
+ wake = void 0;
123
+ while (ready.length > 0) {
124
+ remaining--;
125
+ let outcome = ready.shift();
126
+ if ((0, import_server_rpc_protocol.encodeServerResultFrame)(sequence, { kind: "value", value: outcome }).byteLength > limits.maxFrameBytes) {
127
+ outcome = [outcome[0], "uncertain", "Server batch member exceeded its frame budget"];
128
+ }
129
+ sequence++;
130
+ yield outcome;
131
+ }
132
+ }
133
+ } finally {
134
+ closed = true;
135
+ cancellation.abort();
136
+ ready.length = 0;
137
+ }
138
+ }
139
+ return (0, import_rpc_stream.createServerResultStream)(results(), {
140
+ ...limits,
141
+ signal,
142
+ cancel: () => cancellation.abort()
143
+ });
144
+ }
145
+ // Annotate the CommonJS export names for ESM import in node:
146
+ 0 && (module.exports = {
147
+ batchServerCalls,
148
+ executeServerFunctionBatch
149
+ });
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var rpc_stream_exports = {};
20
+ __export(rpc_stream_exports, {
21
+ createServerResultStream: () => createServerResultStream
22
+ });
23
+ module.exports = __toCommonJS(rpc_stream_exports);
24
+ var import_server_rpc_protocol = require("../server-rpc-protocol.cjs");
25
+ function createServerResultStream(result, options = {}) {
26
+ const limits = (0, import_server_rpc_protocol.serverResultLimits)(options);
27
+ let sequence = 0;
28
+ let totalBytes = 0;
29
+ let iterator;
30
+ let finished = false;
31
+ let terminal = false;
32
+ let streaming = false;
33
+ let initialized = false;
34
+ let pending = Promise.resolve(result);
35
+ void pending.catch(() => {
36
+ });
37
+ let controller;
38
+ let timer;
39
+ const cleanup = () => {
40
+ clearTimeout(timer);
41
+ options.signal?.removeEventListener("abort", abort);
42
+ };
43
+ const closeIterator = () => {
44
+ try {
45
+ void Promise.resolve(iterator?.return?.()).catch(() => {
46
+ });
47
+ } catch {
48
+ }
49
+ iterator = void 0;
50
+ };
51
+ const write = (frame) => {
52
+ const encoded = (0, import_server_rpc_protocol.encodeServerResultFrame)(sequence, frame);
53
+ if (encoded.byteLength > limits.maxFrameBytes || totalBytes + encoded.byteLength > limits.maxTotalBytes) {
54
+ throw new Error("Server result exceeded its response budget");
55
+ }
56
+ sequence++;
57
+ totalBytes += encoded.byteLength;
58
+ controller.enqueue(encoded);
59
+ };
60
+ const fail = (message) => {
61
+ if (finished) return;
62
+ finished = true;
63
+ pending = void 0;
64
+ cleanup();
65
+ options.cancel?.();
66
+ closeIterator();
67
+ try {
68
+ write({ kind: "error", error: message });
69
+ controller.close();
70
+ } catch (error) {
71
+ controller.error(error);
72
+ }
73
+ };
74
+ const abort = () => fail("Server function was canceled");
75
+ return new ReadableStream(
76
+ {
77
+ start(streamController) {
78
+ controller = streamController;
79
+ timer = setTimeout(() => fail("Server function timed out"), limits.timeoutMs);
80
+ options.signal?.addEventListener("abort", abort, { once: true });
81
+ if (options.signal?.aborted) abort();
82
+ },
83
+ async pull() {
84
+ if (finished) return;
85
+ try {
86
+ if (terminal) {
87
+ write({ kind: "complete" });
88
+ finished = true;
89
+ cleanup();
90
+ controller.close();
91
+ return;
92
+ }
93
+ if (!initialized) {
94
+ const value = await pending;
95
+ pending = void 0;
96
+ if (finished) {
97
+ if (value !== null && typeof value === "object" && Symbol.asyncIterator in value) {
98
+ iterator = value[Symbol.asyncIterator]();
99
+ closeIterator();
100
+ }
101
+ return;
102
+ }
103
+ initialized = true;
104
+ if (value !== null && typeof value === "object" && Symbol.asyncIterator in value) {
105
+ iterator = value[Symbol.asyncIterator]();
106
+ streaming = true;
107
+ write({ kind: "stream" });
108
+ return;
109
+ }
110
+ write({ kind: "value", value });
111
+ terminal = true;
112
+ return;
113
+ }
114
+ if (streaming) {
115
+ const item = await iterator.next();
116
+ if (finished) return;
117
+ if (item.done) {
118
+ iterator = void 0;
119
+ write({ kind: "complete" });
120
+ finished = true;
121
+ cleanup();
122
+ controller.close();
123
+ } else {
124
+ write({ kind: "value", value: item.value });
125
+ }
126
+ }
127
+ } catch {
128
+ fail("Server function failed");
129
+ }
130
+ },
131
+ cancel() {
132
+ if (finished) return;
133
+ finished = true;
134
+ pending = void 0;
135
+ cleanup();
136
+ options.cancel?.();
137
+ closeIterator();
138
+ }
139
+ },
140
+ { highWaterMark: 0 }
141
+ );
142
+ }
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ createServerResultStream
146
+ });
@@ -28,31 +28,50 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var rpc_exports = {};
30
30
  __export(rpc_exports, {
31
- executeServerFunction: () => executeServerFunction
31
+ executeServerFunction: () => executeServerFunction,
32
+ executeServerFunctionStream: () => executeServerFunctionStream
32
33
  });
33
34
  module.exports = __toCommonJS(rpc_exports);
34
35
  var devalue = __toESM(require("devalue"), 1);
35
- class InvalidServerFunctionPayloadError extends Error {
36
- code = "OCTANE_INVALID_RPC_PAYLOAD";
37
- constructor(cause) {
38
- super("Invalid server function arguments", { cause });
39
- this.name = "InvalidServerFunctionPayloadError";
40
- }
41
- }
42
- async function executeServerFunction(fn, body) {
36
+ var import_server_call = require("../server-call.cjs");
37
+ var import_rpc_stream = require("./rpc-stream.cjs");
38
+ var import_server_rpc_protocol = require("../server-rpc-protocol.cjs");
39
+ function serverArguments(body) {
43
40
  let args;
44
41
  try {
45
42
  args = devalue.parse(body);
46
43
  } catch (error) {
47
- throw new InvalidServerFunctionPayloadError(error);
48
- }
49
- if (!Array.isArray(args)) {
50
- throw new InvalidServerFunctionPayloadError();
44
+ throw new import_server_call.InvalidServerFunctionPayloadError(error);
51
45
  }
52
- const value = await fn.apply(null, args);
46
+ if (!Array.isArray(args)) throw new import_server_call.InvalidServerFunctionPayloadError();
47
+ return args;
48
+ }
49
+ async function executeServerFunction(fn, body, context) {
50
+ const args = serverArguments(body);
51
+ const value = await (0, import_server_call.invokeServerFunction)(fn, args, context);
53
52
  return devalue.stringify({ value });
54
53
  }
54
+ function executeServerFunctionStream(fn, body, context, limits) {
55
+ const resolvedLimits = (0, import_server_rpc_protocol.serverResultLimits)(limits);
56
+ let args;
57
+ try {
58
+ args = (0, import_server_rpc_protocol.decodeServerArguments)(body);
59
+ } catch (error) {
60
+ throw new import_server_call.InvalidServerFunctionPayloadError(error);
61
+ }
62
+ const cancellation = new AbortController();
63
+ const signal = context === void 0 ? cancellation.signal : AbortSignal.any([context.signal, cancellation.signal]);
64
+ const trusted = context === void 0 ? void 0 : { ...context, signal };
65
+ return (0, import_rpc_stream.createServerResultStream)(
66
+ Promise.resolve().then(() => {
67
+ signal.throwIfAborted();
68
+ return (0, import_server_call.invokeServerFunction)(fn, args, trusted);
69
+ }),
70
+ { ...resolvedLimits, signal, cancel: () => cancellation.abort() }
71
+ );
72
+ }
55
73
  // Annotate the CommonJS export names for ESM import in node:
56
74
  0 && (module.exports = {
57
- executeServerFunction
75
+ executeServerFunction,
76
+ executeServerFunctionStream
58
77
  });