octane 0.2.12 → 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 (243) 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/css.cjs +6 -27
  8. package/dist/cjs/data-encoding.cjs +160 -0
  9. package/dist/cjs/dom-binding-handoff.cjs +93 -0
  10. package/dist/cjs/dom-binding-protocol.cjs +115 -0
  11. package/dist/cjs/dom-binding-styles.cjs +292 -0
  12. package/dist/cjs/dom-bindings.cjs +700 -0
  13. package/dist/cjs/dom-focused-move.cjs +66 -0
  14. package/dist/cjs/dom-tables.cjs +4 -94
  15. package/dist/cjs/error-codes.client.generated.cjs +33 -0
  16. package/dist/cjs/error-codes.server.generated.cjs +19 -0
  17. package/dist/cjs/hydration/control-capture.cjs +244 -0
  18. package/dist/cjs/hydration/event-capture.cjs +125 -43
  19. package/dist/cjs/hydration/interaction-config.cjs +50 -2
  20. package/dist/cjs/hydration-markers.cjs +37 -0
  21. package/dist/cjs/independent-hydration-protocol.cjs +106 -0
  22. package/dist/cjs/index.cjs +6 -0
  23. package/dist/cjs/runtime.cjs +2791 -215
  24. package/dist/cjs/runtime.server.cjs +716 -76
  25. package/dist/cjs/server/early-signals.cjs +45 -0
  26. package/dist/cjs/server/index.cjs +44 -0
  27. package/dist/cjs/server/rpc-batch.cjs +149 -0
  28. package/dist/cjs/server/rpc-stream.cjs +146 -0
  29. package/dist/cjs/server/rpc.cjs +34 -15
  30. package/dist/cjs/server/signal-query-observation.cjs +158 -0
  31. package/dist/cjs/server/streamed-region.cjs +52 -0
  32. package/dist/cjs/server/streamed-signals.cjs +512 -0
  33. package/dist/cjs/server-call.cjs +103 -0
  34. package/dist/cjs/server-rpc-batch-client.cjs +141 -0
  35. package/dist/cjs/server-rpc-client.cjs +94 -27
  36. package/dist/cjs/server-rpc-protocol.cjs +141 -0
  37. package/dist/cjs/server-rpc-stream-client.cjs +118 -0
  38. package/dist/cjs/signals/actions.cjs +474 -0
  39. package/dist/cjs/signals/client.cjs +4 -1
  40. package/dist/cjs/signals/computations.cjs +460 -0
  41. package/dist/cjs/signals/control-binding.cjs +368 -0
  42. package/dist/cjs/signals/derived-facade.cjs +50 -0
  43. package/dist/cjs/signals/document-owner.cjs +71 -0
  44. package/dist/cjs/signals/early-values.cjs +155 -0
  45. package/dist/cjs/signals/encoding.cjs +6 -95
  46. package/dist/cjs/signals/engine.cjs +276 -12
  47. package/dist/cjs/signals/errors.cjs +18 -0
  48. package/dist/cjs/signals/facade.cjs +477 -0
  49. package/dist/cjs/signals/graph.cjs +163 -20
  50. package/dist/cjs/signals/handle-protocol.cjs +36 -0
  51. package/dist/cjs/signals/index.cjs +81 -2
  52. package/dist/cjs/signals/native-read-client.cjs +10 -0
  53. package/dist/cjs/signals/owner-context.cjs +112 -0
  54. package/dist/cjs/signals/query-attempt-observer.cjs +68 -0
  55. package/dist/cjs/signals/query-facade.cjs +72 -0
  56. package/dist/cjs/signals/read-protocol.cjs +32 -0
  57. package/dist/cjs/signals/requests.cjs +287 -14
  58. package/dist/cjs/signals/scalar-computations.cjs +76 -0
  59. package/dist/cjs/signals/server.cjs +4 -1
  60. package/dist/cjs/signals/transition-candidate.cjs +567 -0
  61. package/dist/cjs/signals/transition-state.cjs +106 -0
  62. package/dist/cjs/signals/types.cjs +50 -0
  63. package/dist/cjs/stream-protocol.cjs +3 -0
  64. package/dist/cjs/streamed-signals-protocol.cjs +159 -0
  65. package/dist/cjs/style-values.cjs +122 -0
  66. package/dist/cjs/version.cjs +1 -1
  67. package/dist/class-names.d.ts +5 -0
  68. package/dist/class-names.js +25 -0
  69. package/dist/compiler/bundler.js +34 -6
  70. package/dist/compiler/compile.js +2234 -559
  71. package/dist/compiler/dom-binding-program.js +935 -0
  72. package/dist/compiler/dom-binding-request.js +57 -0
  73. package/dist/compiler/dom-bindings.js +2245 -0
  74. package/dist/compiler/hook-deps.js +26 -0
  75. package/dist/compiler/hydrate-boundaries.js +358 -15
  76. package/dist/compiler/index.d.ts +38 -1
  77. package/dist/compiler/index.js +1 -0
  78. package/dist/compiler/native-attribute-reads.js +127 -0
  79. package/dist/compiler/native-read-diagnostics.js +48 -9
  80. package/dist/compiler/native-read-types.js +55 -32
  81. package/dist/compiler/server-context.js +118 -0
  82. package/dist/compiler/signal-attempt-reads.js +479 -0
  83. package/dist/compiler/signal-declarations.js +557 -0
  84. package/dist/compiler/signal-start-reads.js +413 -0
  85. package/dist/compiler/slot-hooks.js +57 -10
  86. package/dist/compiler/template-ir.js +200 -0
  87. package/dist/compiler/typescript.d.ts +2 -0
  88. package/dist/compiler/typescript.js +2 -0
  89. package/dist/compiler/vite.d.ts +3 -1
  90. package/dist/compiler/vite.js +122 -4
  91. package/dist/compiler/volar.d.ts +6 -1
  92. package/dist/compiler/volar.js +674 -143
  93. package/dist/constants.d.ts +1 -0
  94. package/dist/constants.js +10 -0
  95. package/dist/css.d.ts +2 -5
  96. package/dist/css.js +2 -23
  97. package/dist/data-encoding.d.ts +9 -0
  98. package/dist/data-encoding.js +134 -0
  99. package/dist/dom-binding-classes.d.ts +15 -0
  100. package/dist/dom-binding-classes.js +129 -0
  101. package/dist/dom-binding-controls.d.ts +2 -0
  102. package/dist/dom-binding-controls.js +6 -0
  103. package/dist/dom-binding-handoff.d.ts +55 -0
  104. package/dist/dom-binding-handoff.js +62 -0
  105. package/dist/dom-binding-program.d.ts +300 -0
  106. package/dist/dom-binding-program.js +1625 -0
  107. package/dist/dom-binding-projections.d.ts +15 -0
  108. package/dist/dom-binding-projections.js +187 -0
  109. package/dist/dom-binding-protocol.d.ts +13 -0
  110. package/dist/dom-binding-protocol.js +88 -0
  111. package/dist/dom-binding-signals.d.ts +21 -0
  112. package/dist/dom-binding-signals.js +109 -0
  113. package/dist/dom-binding-styles.d.ts +17 -0
  114. package/dist/dom-binding-styles.js +272 -0
  115. package/dist/dom-bindings.d.ts +89 -0
  116. package/dist/dom-bindings.js +670 -0
  117. package/dist/dom-focused-move.d.ts +6 -0
  118. package/dist/dom-focused-move.js +42 -0
  119. package/dist/dom-tables.d.ts +1 -3
  120. package/dist/dom-tables.js +1 -91
  121. package/dist/error-codes.client.generated.d.ts +9 -0
  122. package/dist/error-codes.client.generated.js +33 -0
  123. package/dist/error-codes.server.generated.d.ts +5 -0
  124. package/dist/error-codes.server.generated.js +19 -0
  125. package/dist/hydration/control-capture.d.ts +62 -0
  126. package/dist/hydration/control-capture.js +223 -0
  127. package/dist/hydration/document-lifecycle.d.ts +23 -0
  128. package/dist/hydration/document-lifecycle.js +80 -0
  129. package/dist/hydration/event-capture.d.ts +20 -1
  130. package/dist/hydration/event-capture.js +128 -42
  131. package/dist/hydration/independent-island.d.ts +45 -0
  132. package/dist/hydration/independent-island.js +233 -0
  133. package/dist/hydration/index.d.ts +8 -1
  134. package/dist/hydration/index.js +55 -1
  135. package/dist/hydration/interaction-config.d.ts +5 -0
  136. package/dist/hydration/interaction-config.js +44 -1
  137. package/dist/hydration/stream-delivery.d.ts +32 -0
  138. package/dist/hydration/stream-delivery.js +333 -0
  139. package/dist/hydration/stream-receiver.d.ts +26 -0
  140. package/dist/hydration/stream-receiver.js +204 -0
  141. package/dist/hydration/stream-result-receiver.d.ts +70 -0
  142. package/dist/hydration/stream-result-receiver.js +246 -0
  143. package/dist/hydration/streamed-signals.d.ts +44 -0
  144. package/dist/hydration/streamed-signals.js +186 -0
  145. package/dist/hydration/types.d.ts +6 -0
  146. package/dist/hydration-markers.d.ts +7 -0
  147. package/dist/hydration-markers.js +10 -0
  148. package/dist/independent-hydration-protocol.d.ts +31 -0
  149. package/dist/independent-hydration-protocol.js +80 -0
  150. package/dist/index.d.ts +2 -0
  151. package/dist/index.js +4 -0
  152. package/dist/internal/signal-read.d.ts +1 -0
  153. package/dist/internal/signal-read.js +4 -0
  154. package/dist/jsx-runtime.d.ts +45 -6
  155. package/dist/public-types.d.ts +15 -1
  156. package/dist/runtime.d.ts +259 -21
  157. package/dist/runtime.js +2812 -220
  158. package/dist/runtime.server.d.ts +86 -6
  159. package/dist/runtime.server.js +712 -76
  160. package/dist/server/early-signals.d.ts +14 -0
  161. package/dist/server/early-signals.js +34 -0
  162. package/dist/server/index.d.ts +10 -2
  163. package/dist/server/index.js +48 -1
  164. package/dist/server/rpc-batch.d.ts +17 -0
  165. package/dist/server/rpc-batch.js +129 -0
  166. package/dist/server/rpc-stream.d.ts +9 -0
  167. package/dist/server/rpc-stream.js +125 -0
  168. package/dist/server/rpc.d.ts +5 -1
  169. package/dist/server/rpc.js +37 -13
  170. package/dist/server/signal-query-observation.d.ts +3 -0
  171. package/dist/server/signal-query-observation.js +134 -0
  172. package/dist/server/streamed-region.d.ts +15 -0
  173. package/dist/server/streamed-region.js +30 -0
  174. package/dist/server/streamed-signals.d.ts +45 -0
  175. package/dist/server/streamed-signals.js +488 -0
  176. package/dist/server-call.d.ts +41 -0
  177. package/dist/server-call.js +75 -0
  178. package/dist/server-rpc-batch-client.d.ts +7 -0
  179. package/dist/server-rpc-batch-client.js +119 -0
  180. package/dist/server-rpc-client.d.ts +3 -1
  181. package/dist/server-rpc-client.js +99 -27
  182. package/dist/server-rpc-protocol.d.ts +47 -0
  183. package/dist/server-rpc-protocol.js +109 -0
  184. package/dist/server-rpc-stream-client.d.ts +5 -0
  185. package/dist/server-rpc-stream-client.js +98 -0
  186. package/dist/signals/actions.d.ts +12 -0
  187. package/dist/signals/actions.js +466 -0
  188. package/dist/signals/client.d.ts +2 -0
  189. package/dist/signals/client.js +1 -0
  190. package/dist/signals/computations.d.ts +37 -0
  191. package/dist/signals/computations.js +455 -0
  192. package/dist/signals/control-binding.d.ts +31 -0
  193. package/dist/signals/control-binding.js +353 -0
  194. package/dist/signals/derived-facade.d.ts +3 -0
  195. package/dist/signals/derived-facade.js +25 -0
  196. package/dist/signals/document-owner.d.ts +10 -0
  197. package/dist/signals/document-owner.js +43 -0
  198. package/dist/signals/early-values.d.ts +24 -0
  199. package/dist/signals/early-values.js +124 -0
  200. package/dist/signals/encoding.d.ts +1 -3
  201. package/dist/signals/encoding.js +3 -93
  202. package/dist/signals/engine.d.ts +53 -4
  203. package/dist/signals/engine.js +275 -16
  204. package/dist/signals/errors.d.ts +7 -0
  205. package/dist/signals/errors.js +16 -0
  206. package/dist/signals/facade.d.ts +74 -0
  207. package/dist/signals/facade.js +452 -0
  208. package/dist/signals/graph.d.ts +50 -5
  209. package/dist/signals/graph.js +170 -19
  210. package/dist/signals/handle-protocol.d.ts +4 -0
  211. package/dist/signals/handle-protocol.js +11 -0
  212. package/dist/signals/index.d.ts +12 -3
  213. package/dist/signals/index.js +71 -2
  214. package/dist/signals/native-read-client.d.ts +3 -0
  215. package/dist/signals/native-read-client.js +10 -0
  216. package/dist/signals/owner-context.d.ts +22 -0
  217. package/dist/signals/owner-context.js +77 -0
  218. package/dist/signals/query-attempt-observer.d.ts +49 -0
  219. package/dist/signals/query-attempt-observer.js +41 -0
  220. package/dist/signals/query-facade.d.ts +3 -0
  221. package/dist/signals/query-facade.js +49 -0
  222. package/dist/signals/read-protocol.d.ts +32 -3
  223. package/dist/signals/read-protocol.js +26 -0
  224. package/dist/signals/requests.d.ts +38 -5
  225. package/dist/signals/requests.js +298 -15
  226. package/dist/signals/scalar-computations.d.ts +2 -0
  227. package/dist/signals/scalar-computations.js +60 -0
  228. package/dist/signals/server.d.ts +2 -0
  229. package/dist/signals/server.js +1 -0
  230. package/dist/signals/transition-candidate.d.ts +71 -0
  231. package/dist/signals/transition-candidate.js +557 -0
  232. package/dist/signals/transition-state.d.ts +51 -0
  233. package/dist/signals/transition-state.js +70 -0
  234. package/dist/signals/types.d.ts +95 -5
  235. package/dist/signals/types.js +20 -0
  236. package/dist/stream-protocol.d.ts +0 -5
  237. package/dist/stream-protocol.js +3 -0
  238. package/dist/streamed-signals-protocol.d.ts +60 -0
  239. package/dist/streamed-signals-protocol.js +130 -0
  240. package/dist/style-values.d.ts +3 -0
  241. package/dist/style-values.js +96 -0
  242. package/dist/version.js +1 -1
  243. package/package.json +37 -1
@@ -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,6 +142,7 @@ __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,
@@ -162,6 +181,12 @@ __export(server_exports, {
162
181
  module.exports = __toCommonJS(server_exports);
163
182
  var import_trusted_html = require("../trusted-html.cjs");
164
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");
165
190
  var import_version = require("../version.cjs");
166
191
  var import_compatibility = require("../compatibility.cjs");
167
192
  var import_sub_slot = require("../sub-slot.cjs");
@@ -180,25 +205,39 @@ var import_runtime_server = require("../runtime.server.cjs");
180
205
  Suspense,
181
206
  ViewTransition,
182
207
  __methodDep,
208
+ __registerServerFunction,
209
+ __serverCall,
210
+ __setServerCallContextSource,
183
211
  __useLinkedStateWithGetter,
184
212
  __useReducerWithGetter,
185
213
  __useStateWithGetter,
186
214
  addTransitionType,
215
+ batchServerCalls,
187
216
  cloneElement,
217
+ createAutomaticStreamedSignalInjection,
188
218
  createContext,
189
219
  createElement,
190
220
  createPortal,
191
221
  createScopedElement,
192
222
  createScopedValue,
223
+ createStreamedRegionPlacementFrame,
224
+ createStreamedRendererFrameStream,
225
+ createStreamedSignalInjection,
226
+ createStreamedSignalResultFrames,
193
227
  createSubSlot,
194
228
  descriptorChildren,
229
+ earlySignalBootstrapScript,
230
+ enableServerSignalBindings,
195
231
  escapeAttr,
196
232
  escapeHtml,
197
233
  executeServerFunction,
234
+ executeServerFunctionBatch,
235
+ executeServerFunctionStream,
198
236
  flushSync,
199
237
  getSsrSuspenseTimeout,
200
238
  hookSlots,
201
239
  injectStyle,
240
+ installSignalOwnerEnvironment,
202
241
  invokeManualHook,
203
242
  isChildrenBlock,
204
243
  isValidElement,
@@ -225,6 +264,7 @@ var import_runtime_server = require("../runtime.server.cjs");
225
264
  renderToStaticMarkup,
226
265
  renderToString,
227
266
  requestFormReset,
267
+ retireSignalOwnerIdentity,
228
268
  setSsrSuspenseTimeout,
229
269
  ssrActivity,
230
270
  ssrArm,
@@ -261,6 +301,9 @@ var import_runtime_server = require("../runtime.server.cjs");
261
301
  ssrSelectAttrs,
262
302
  ssrSelectScope,
263
303
  ssrSelectScopeSources,
304
+ ssrSignalControlAttrs,
305
+ ssrSignalControlValue,
306
+ ssrSignalValue,
264
307
  ssrSnapshotSpread,
265
308
  ssrSpread,
266
309
  ssrSpreadContent,
@@ -275,6 +318,7 @@ var import_runtime_server = require("../runtime.server.cjs");
275
318
  ssrValueAttr,
276
319
  ssrVoidContent,
277
320
  startTransition,
321
+ streamedRendererFrameScript,
278
322
  styleMap,
279
323
  subSlot,
280
324
  touchStyleMap,
@@ -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
  });