octane 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/cjs/constants.cjs +3 -0
  2. package/dist/cjs/dom-binding-handoff.cjs +2 -1
  3. package/dist/cjs/dom-binding-protocol.cjs +4 -3
  4. package/dist/cjs/dom-binding-styles.cjs +3 -2
  5. package/dist/cjs/dom-bindings.cjs +24 -23
  6. package/dist/cjs/error-codes.client.generated.cjs +7 -1
  7. package/dist/cjs/error-codes.server.generated.cjs +27 -1
  8. package/dist/cjs/hydration/event-capture.cjs +2 -1
  9. package/dist/cjs/independent-hydration-protocol.cjs +3 -2
  10. package/dist/cjs/index.cjs +2 -0
  11. package/dist/cjs/runtime.cjs +866 -370
  12. package/dist/cjs/runtime.server.cjs +250 -62
  13. package/dist/cjs/server/index.cjs +2 -0
  14. package/dist/cjs/server/rpc-stream.cjs +19 -12
  15. package/dist/cjs/server/streamed-signals.cjs +18 -1
  16. package/dist/cjs/shared-value-helpers.cjs +24 -2
  17. package/dist/cjs/signals/control-binding.cjs +7 -6
  18. package/dist/cjs/signals/derived-facade.cjs +2 -1
  19. package/dist/cjs/signals/document-owner.cjs +4 -3
  20. package/dist/cjs/signals/facade.cjs +10 -9
  21. package/dist/cjs/signals/graph.cjs +5 -4
  22. package/dist/cjs/signals/native-read-client.cjs +4 -3
  23. package/dist/cjs/signals/owner-context.cjs +4 -3
  24. package/dist/cjs/signals/query-attempt-observer.cjs +2 -1
  25. package/dist/cjs/signals/query-facade.cjs +2 -1
  26. package/dist/cjs/signals/scalar-computations.cjs +2 -1
  27. package/dist/cjs/signals/transition-action.cjs +10 -9
  28. package/dist/cjs/signals/transition-candidate.cjs +2 -1
  29. package/dist/cjs/version.cjs +1 -1
  30. package/dist/compiler/arm-exits.js +151 -0
  31. package/dist/compiler/compile-universal.js +262 -65
  32. package/dist/compiler/compile.js +1929 -306
  33. package/dist/compiler/deferred-snapshots.js +791 -0
  34. package/dist/compiler/strong-mode.js +59 -10
  35. package/dist/constants.d.ts +5 -1
  36. package/dist/constants.js +2 -0
  37. package/dist/error-codes.client.generated.d.ts +1 -0
  38. package/dist/error-codes.client.generated.js +5 -0
  39. package/dist/error-codes.server.generated.d.ts +5 -0
  40. package/dist/error-codes.server.generated.js +25 -0
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +2 -0
  43. package/dist/node/aria-diagnostics.js +92 -0
  44. package/dist/node/behavior-form-submissions.js +228 -0
  45. package/dist/node/behavior-root-types.js +0 -0
  46. package/dist/node/behavior-root.js +746 -0
  47. package/dist/node/class-names.js +25 -0
  48. package/dist/node/compatibility.js +10 -0
  49. package/dist/node/component-flags.js +23 -0
  50. package/dist/node/constants.js +115 -0
  51. package/dist/node/context-epoch.js +13 -0
  52. package/dist/node/context-identity.js +46 -0
  53. package/dist/node/css.js +80 -0
  54. package/dist/node/data-encoding.js +134 -0
  55. package/dist/node/devtools-hook.js +229 -0
  56. package/dist/node/dom-binding-claims.js +4 -0
  57. package/dist/node/dom-binding-classes.js +152 -0
  58. package/dist/node/dom-binding-controls.js +6 -0
  59. package/dist/node/dom-binding-handoff.js +77 -0
  60. package/dist/node/dom-binding-program.js +1617 -0
  61. package/dist/node/dom-binding-projections.js +204 -0
  62. package/dist/node/dom-binding-protocol.js +130 -0
  63. package/dist/node/dom-binding-signals.js +135 -0
  64. package/dist/node/dom-binding-styles.js +280 -0
  65. package/dist/node/dom-bindings.js +1087 -0
  66. package/dist/node/dom-focused-move.js +46 -0
  67. package/dist/node/dom-stage.js +878 -0
  68. package/dist/node/dom-tables.js +382 -0
  69. package/dist/node/error-codes.client.generated.js +1071 -0
  70. package/dist/node/error-codes.server.generated.js +761 -0
  71. package/dist/node/error-message.js +27 -0
  72. package/dist/node/event-names.js +15 -0
  73. package/dist/node/form-diagnostics.js +96 -0
  74. package/dist/node/form-submission.js +43 -0
  75. package/dist/node/has-own.js +4 -0
  76. package/dist/node/head-ownership.js +31 -0
  77. package/dist/node/hook-slot-cache.js +91 -0
  78. package/dist/node/host-property-diagnostics.js +189 -0
  79. package/dist/node/html-tree-validation.js +193 -0
  80. package/dist/node/hydration/condition.js +15 -0
  81. package/dist/node/hydration/control-capture.js +237 -0
  82. package/dist/node/hydration/document-lifecycle.js +89 -0
  83. package/dist/node/hydration/event-capture.js +362 -0
  84. package/dist/node/hydration/idle.js +23 -0
  85. package/dist/node/hydration/independent-island.js +317 -0
  86. package/dist/node/hydration/index.js +74 -0
  87. package/dist/node/hydration/interaction-config.js +61 -0
  88. package/dist/node/hydration/interaction.js +35 -0
  89. package/dist/node/hydration/load.js +15 -0
  90. package/dist/node/hydration/media.js +33 -0
  91. package/dist/node/hydration/native-intent.js +68 -0
  92. package/dist/node/hydration/never.js +12 -0
  93. package/dist/node/hydration/stream-delivery.js +345 -0
  94. package/dist/node/hydration/stream-receiver.js +190 -0
  95. package/dist/node/hydration/stream-result-receiver.js +276 -0
  96. package/dist/node/hydration/streamed-signals.js +186 -0
  97. package/dist/node/hydration/types.js +0 -0
  98. package/dist/node/hydration/visible.js +69 -0
  99. package/dist/node/hydration-markers.js +44 -0
  100. package/dist/node/independent-hydration-protocol.js +91 -0
  101. package/dist/node/index.js +463 -0
  102. package/dist/node/internal/client.js +7 -0
  103. package/dist/node/internal/context.js +5 -0
  104. package/dist/node/internal/server.js +5 -0
  105. package/dist/node/internal/signal-read.js +4 -0
  106. package/dist/node/method-dep.js +25 -0
  107. package/dist/node/profiling.js +432 -0
  108. package/dist/node/public-types.js +0 -0
  109. package/dist/node/react/fiber-adapter.js +57 -0
  110. package/dist/node/react/index.js +397 -0
  111. package/dist/node/react/react-compat-envelope.js +78 -0
  112. package/dist/node/react/react-compat-server.js +129 -0
  113. package/dist/node/react/react-compat-shared.js +104 -0
  114. package/dist/node/react/react-compat.js +223 -0
  115. package/dist/node/react/server.js +81 -0
  116. package/dist/node/react/shared.js +75 -0
  117. package/dist/node/renderer-bridge.js +35 -0
  118. package/dist/node/resize-observer.js +105 -0
  119. package/dist/node/resource-hint-diagnostics.js +67 -0
  120. package/dist/node/runtime-tags.js +22 -0
  121. package/dist/node/runtime.js +29364 -0
  122. package/dist/node/runtime.server.js +8200 -0
  123. package/dist/node/sanitize-url.js +34 -0
  124. package/dist/node/server/early-signals.js +54 -0
  125. package/dist/node/server/index.js +338 -0
  126. package/dist/node/server/rpc-batch.js +129 -0
  127. package/dist/node/server/rpc-stream.js +132 -0
  128. package/dist/node/server/rpc.js +48 -0
  129. package/dist/node/server/signal-query-observation.js +134 -0
  130. package/dist/node/server/streamed-region.js +31 -0
  131. package/dist/node/server/streamed-signals.js +574 -0
  132. package/dist/node/server-call.js +75 -0
  133. package/dist/node/server-rpc-batch-client.js +119 -0
  134. package/dist/node/server-rpc-client.js +108 -0
  135. package/dist/node/server-rpc-protocol.js +109 -0
  136. package/dist/node/server-rpc-stream-client.js +98 -0
  137. package/dist/node/shared-value-helpers.js +60 -0
  138. package/dist/node/signals/actions.js +463 -0
  139. package/dist/node/signals/client.js +22 -0
  140. package/dist/node/signals/computations.js +452 -0
  141. package/dist/node/signals/control-binding.js +388 -0
  142. package/dist/node/signals/control-handoff.js +12 -0
  143. package/dist/node/signals/derived-facade.js +25 -0
  144. package/dist/node/signals/document-owner.js +48 -0
  145. package/dist/node/signals/early-values.js +124 -0
  146. package/dist/node/signals/encoding.js +6 -0
  147. package/dist/node/signals/engine.js +668 -0
  148. package/dist/node/signals/errors.js +54 -0
  149. package/dist/node/signals/facade.js +441 -0
  150. package/dist/node/signals/graph.js +817 -0
  151. package/dist/node/signals/handle-protocol.js +11 -0
  152. package/dist/node/signals/index.js +87 -0
  153. package/dist/node/signals/native-read-client.js +319 -0
  154. package/dist/node/signals/native-read-collector.js +132 -0
  155. package/dist/node/signals/native-read-events.js +45 -0
  156. package/dist/node/signals/native-read-inspection.js +20 -0
  157. package/dist/node/signals/native-read-retry.js +30 -0
  158. package/dist/node/signals/native-read-seeds.js +243 -0
  159. package/dist/node/signals/native-read-server.js +99 -0
  160. package/dist/node/signals/owner-context.js +88 -0
  161. package/dist/node/signals/query-attempt-observer.js +42 -0
  162. package/dist/node/signals/query-facade.js +41 -0
  163. package/dist/node/signals/read-protocol.js +125 -0
  164. package/dist/node/signals/requests.js +716 -0
  165. package/dist/node/signals/scalar-computations.js +57 -0
  166. package/dist/node/signals/scope-streams.js +147 -0
  167. package/dist/node/signals/server.js +22 -0
  168. package/dist/node/signals/transition-action.js +555 -0
  169. package/dist/node/signals/transition-candidate.js +101 -0
  170. package/dist/node/signals/transition-coordinator.js +255 -0
  171. package/dist/node/signals/transition-state.js +82 -0
  172. package/dist/node/signals/types.js +20 -0
  173. package/dist/node/static/index.js +10 -0
  174. package/dist/node/stream-protocol.js +114 -0
  175. package/dist/node/streamed-signals-protocol.js +130 -0
  176. package/dist/node/style-values.js +96 -0
  177. package/dist/node/sub-slot.js +35 -0
  178. package/dist/node/testing.js +14 -0
  179. package/dist/node/trusted-html.js +6 -0
  180. package/dist/node/tsrx-iterable.js +5 -0
  181. package/dist/node/tsrx-spread.js +10 -0
  182. package/dist/node/universal-core.js +10138 -0
  183. package/dist/node/universal-dom-boundary.js +237 -0
  184. package/dist/node/universal-native.js +28 -0
  185. package/dist/node/universal.js +17 -0
  186. package/dist/node/version.js +4 -0
  187. package/dist/runtime.d.ts +219 -8
  188. package/dist/runtime.js +714 -220
  189. package/dist/runtime.server.d.ts +33 -2
  190. package/dist/runtime.server.js +217 -29
  191. package/dist/server/index.d.ts +1 -1
  192. package/dist/server/index.js +2 -0
  193. package/dist/server/rpc-stream.js +19 -12
  194. package/dist/server/streamed-signals.js +18 -1
  195. package/dist/shared-value-helpers.d.ts +11 -0
  196. package/dist/shared-value-helpers.js +21 -1
  197. package/dist/universal-core.d.ts +3 -1
  198. package/dist/universal-core.js +178 -50
  199. package/dist/version.js +1 -1
  200. package/package.json +62 -1
@@ -58,6 +58,7 @@ __export(constants_exports, {
58
58
  SUSPENSE_SCRIPT_ATTR: () => import_stream_protocol.SUSPENSE_SCRIPT_ATTR,
59
59
  SUSPENSE_SEED_WIRE_PREFIX: () => SUSPENSE_SEED_WIRE_PREFIX,
60
60
  SVG_ONLY_TAGS: () => SVG_ONLY_TAGS,
61
+ TEXT_SEPARATOR: () => TEXT_SEPARATOR,
61
62
  UNDEFINED_SENTINEL_KEY: () => UNDEFINED_SENTINEL_KEY,
62
63
  VALID_ATTR_NAME: () => VALID_ATTR_NAME,
63
64
  VOID_ELEMENTS: () => VOID_ELEMENTS,
@@ -79,6 +80,7 @@ const FOR_BLOCK_OPEN_EMPTY = `<!--${import_hydration_markers.HYDRATION_FOR_EMPTY
79
80
  const FOR_BLOCK_OPEN_ITEMS = `<!--${import_hydration_markers.HYDRATION_FOR_ITEMS}-->`;
80
81
  const EMPTY_COMMENT = "<!---->";
81
82
  const HYDRATION_TEXT_SEP = " ";
83
+ const TEXT_SEPARATOR = `<!--${HYDRATION_TEXT_SEP}-->`;
82
84
  const SUSPENSE_RESOLVED_COMMENT = "oct-suspense:";
83
85
  const SUSPENSE_RESOLVED_SEED_ATTR = "data-octane-suspense-seeds";
84
86
  const SUSPENSE_RESOLVED_NATIVE_ATTR = "data-octane-suspense-signals";
@@ -149,6 +151,7 @@ const cssStyleValue = import_dom_tables.cssStyleValue;
149
151
  SUSPENSE_SCRIPT_ATTR,
150
152
  SUSPENSE_SEED_WIRE_PREFIX,
151
153
  SVG_ONLY_TAGS,
154
+ TEXT_SEPARATOR,
152
155
  UNDEFINED_SENTINEL_KEY,
153
156
  VALID_ATTR_NAME,
154
157
  VOID_ELEMENTS,
@@ -29,6 +29,7 @@ __export(dom_binding_handoff_exports, {
29
29
  });
30
30
  module.exports = __toCommonJS(dom_binding_handoff_exports);
31
31
  var import_control_handoff = require("./signals/control-handoff.cjs");
32
+ const __octaneDev = process.env.NODE_ENV !== "production";
32
33
  function __octaneNoArgError(code) {
33
34
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
34
35
  }
@@ -51,7 +52,7 @@ function registerBindingEvent(node, type) {
51
52
  }
52
53
  function claimBindingHandoff(lease, owner) {
53
54
  if (!lease.active() || lease.owner !== void 0)
54
- throw new Error(process.env.NODE_ENV !== "production" ? "A DOM binding hydration lease must be active and have only one root owner." : __octaneNoArgError(277));
55
+ throw new Error(__octaneDev ? "A DOM binding hydration lease must be active and have only one root owner." : __octaneNoArgError(277));
55
56
  lease.owner = owner;
56
57
  }
57
58
  function releaseBindingHandoff(lease) {
@@ -28,6 +28,7 @@ __export(dom_binding_protocol_exports, {
28
28
  });
29
29
  module.exports = __toCommonJS(dom_binding_protocol_exports);
30
30
  var import_hydration_markers = require("./hydration-markers.cjs");
31
+ const __octaneDev = process.env.NODE_ENV !== "production";
31
32
  function __octaneNoArgError(code) {
32
33
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
33
34
  }
@@ -47,20 +48,20 @@ function encodeBindingKey(key) {
47
48
  return "s:" + JSON.stringify(key).replace(/-/g, "\\u002d").replace(/</g, "\\u003c");
48
49
  if (typeof key === "number" && Number.isFinite(key))
49
50
  return "n:" + String(key);
50
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM presentation key must be a string or finite number." : __octaneNoArgError(306));
51
+ throw new TypeError(__octaneDev ? "A DOM presentation key must be a string or finite number." : __octaneNoArgError(306));
51
52
  }
52
53
  function decodeBindingKey(encoded) {
53
54
  let key;
54
55
  try {
55
56
  key = JSON.parse(encoded.slice(2));
56
57
  } catch {
57
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM presentation key has invalid serialized identity." : __octaneNoArgError(307));
58
+ throw new TypeError(__octaneDev ? "A DOM presentation key has invalid serialized identity." : __octaneNoArgError(307));
58
59
  }
59
60
  if (encoded.startsWith("s:") && typeof key === "string" || encoded.startsWith("n:") && typeof key === "number" && Number.isFinite(key)) {
60
61
  if (encodeBindingKey(key) === encoded)
61
62
  return key;
62
63
  }
63
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM presentation key has invalid serialized identity." : __octaneNoArgError(307));
64
+ throw new TypeError(__octaneDev ? "A DOM presentation key has invalid serialized identity." : __octaneNoArgError(307));
64
65
  }
65
66
  function parseBindingMarker(data) {
66
67
  if (data.startsWith(BINDING_FOR_EMPTY_PREFIX) || data.startsWith(BINDING_FOR_ITEMS_PREFIX)) {
@@ -27,6 +27,7 @@ var import_style_values = require("./style-values.cjs");
27
27
  var import_dom_bindings = require("./dom-bindings.cjs");
28
28
  var import_owner_context = require("./signals/owner-context.cjs");
29
29
  var import_read_protocol = require("./signals/read-protocol.cjs");
30
+ const __octaneDev = process.env.NODE_ENV !== "production";
30
31
  function __octaneNoArgError(code) {
31
32
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
32
33
  }
@@ -89,7 +90,7 @@ function __normalizeBindingStyle(value) {
89
90
  if (typeof value === "string")
90
91
  return value;
91
92
  if (typeof value !== "object")
92
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A whole-style DOM binding requires a style object, CSS text or null." : __octaneNoArgError(311));
93
+ throw new TypeError(__octaneDev ? "A whole-style DOM binding requires a style object, CSS text or null." : __octaneNoArgError(311));
93
94
  const result = /* @__PURE__ */ Object.create(null);
94
95
  for (const name in value) {
95
96
  const property = value[name];
@@ -150,7 +151,7 @@ function __createBindingStyles() {
150
151
  notify();
151
152
  })));
152
153
  if (typeof stop !== "function")
153
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM style subscription must return cleanup." : __octaneNoArgError(312));
154
+ throw new TypeError(__octaneDev ? "A DOM style subscription must return cleanup." : __octaneNoArgError(312));
154
155
  const disposeSource = () => {
155
156
  active = false;
156
157
  stop();
@@ -39,6 +39,7 @@ var import_native_read_seeds = require("./signals/native-read-seeds.cjs");
39
39
  var import_control_handoff = require("./signals/control-handoff.cjs");
40
40
  var import_owner_context = require("./signals/owner-context.cjs");
41
41
  var import_read_protocol = require("./signals/read-protocol.cjs");
42
+ const __octaneDev = process.env.NODE_ENV !== "production";
42
43
  function __octaneNoArgError(code) {
43
44
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
44
45
  }
@@ -46,10 +47,10 @@ function unbound(value) {
46
47
  return value;
47
48
  }
48
49
  function adoptBindings(_root, _view, _source, _options) {
49
- throw new Error(process.env.NODE_ENV !== "production" ? "adoptBindings() requires an Octane-compiled .tsrx or .tsx call and a supported static view." : __octaneNoArgError(313));
50
+ throw new Error(__octaneDev ? "adoptBindings() requires an Octane-compiled .tsrx or .tsx call and a supported static view." : __octaneNoArgError(313));
50
51
  }
51
52
  function mountBindings(_target, _view, _source, _options) {
52
- throw new Error(process.env.NODE_ENV !== "production" ? "mountBindings() requires an Octane-compiled .tsrx or .tsx call." : __octaneNoArgError(314));
53
+ throw new Error(__octaneDev ? "mountBindings() requires an Octane-compiled .tsrx or .tsx call." : __octaneNoArgError(314));
53
54
  }
54
55
  function __mountBindings(target, descriptor, source, options) {
55
56
  return descriptor.mount(target, descriptor, source, options);
@@ -92,11 +93,11 @@ function conflicts(channels, binding, name) {
92
93
  }
93
94
  function __claimBinding(node, binding) {
94
95
  if (binding[1] === "classToken" && !/^\S+$/.test(binding[2]))
95
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM class token binding requires one nonempty class token." : __octaneNoArgError(315));
96
+ throw new TypeError(__octaneDev ? "A DOM class token binding requires one nonempty class token." : __octaneNoArgError(315));
96
97
  const name = channel(binding);
97
98
  let channels = claims.get(node);
98
99
  if (channels !== void 0 && conflicts(channels, binding, name))
99
- throw new Error(process.env.NODE_ENV !== "production" ? "This DOM property already has a binding. Dispose it before rebinding." : __octaneNoArgError(316));
100
+ throw new Error(__octaneDev ? "This DOM property already has a binding. Dispose it before rebinding." : __octaneNoArgError(316));
100
101
  if (channels === void 0)
101
102
  claims.set(node, channels = /* @__PURE__ */ new Set());
102
103
  channels.add(name);
@@ -116,7 +117,7 @@ function __releaseBinding(node, name) {
116
117
  }
117
118
  function assertBindingRoot(root, descriptor) {
118
119
  if (root?.nodeType !== 1 || root.getAttribute("data-octane-bindings") !== descriptor.id || descriptor.nodes.length === 0) {
119
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings require the matching compiler-stamped root." : __octaneNoArgError(317));
120
+ throw new Error(__octaneDev ? "DOM bindings require the matching compiler-stamped root." : __octaneNoArgError(317));
120
121
  }
121
122
  return root;
122
123
  }
@@ -128,14 +129,14 @@ function resolveFixedNodes(root, descriptor) {
128
129
  const [parent, tag, namespace, children, , text] = descriptor.nodes[i];
129
130
  const node = i === 0 ? parent === -1 ? root : void 0 : parent >= 0 && parent < i && descriptor.nodes[parent][3] !== null ? nodes[parent]?.children[childIndices[parent]++] : void 0;
130
131
  if (node === void 0 || descriptor.nodes[i][4] === true || node.localName !== tag || node.namespaceURI !== namespaces[namespace] || (text ? node.childNodes.length > 1 || node.firstChild !== null && node.firstChild.nodeType !== 3 : children !== null && (node.childNodes.length !== children || node.children.length !== children))) {
131
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings cannot adopt a mismatched static element topology." : __octaneNoArgError(318));
132
+ throw new Error(__octaneDev ? "DOM bindings cannot adopt a mismatched static element topology." : __octaneNoArgError(318));
132
133
  }
133
134
  nodes.push(node);
134
135
  childIndices.push(0);
135
136
  }
136
137
  for (let i = 0; i < nodes.length; i++) {
137
138
  if (childIndices[i] !== (descriptor.nodes[i][3] ?? 0)) {
138
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings cannot adopt an incomplete static element topology." : __octaneNoArgError(319));
139
+ throw new Error(__octaneDev ? "DOM bindings cannot adopt an incomplete static element topology." : __octaneNoArgError(319));
139
140
  }
140
141
  }
141
142
  return nodes;
@@ -151,7 +152,7 @@ function resolveAddressedNodes(root, descriptor) {
151
152
  if (marker?.startsWith(prefix)) {
152
153
  const index = Number(marker.slice(prefix.length));
153
154
  if (!Number.isSafeInteger(index) || index < 0 || index >= descriptor.nodes.length || marker !== `${prefix}${index}` || nodes[index] !== void 0) {
154
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings require unique compiler-issued target addresses." : __octaneNoArgError(320));
155
+ throw new Error(__octaneDev ? "DOM bindings require unique compiler-issued target addresses." : __octaneNoArgError(320));
155
156
  }
156
157
  nodes[index] = current;
157
158
  if (descriptor.nodes[index][3] === null)
@@ -173,14 +174,14 @@ function resolveAddressedNodes(root, descriptor) {
173
174
  const [parent, tag, namespace, children, openChildren, text] = descriptor.nodes[i];
174
175
  const node = nodes[i];
175
176
  if (node === void 0 || node.localName !== tag || node.namespaceURI !== namespaces[namespace] || (i === 0 ? parent !== -1 || node !== root : parent < 0 || parent >= i || descriptor.nodes[parent][3] === null || node.parentElement !== nodes[parent] || descriptor.nodes[parent][4] !== true && nodes[parent].children[childCounts[parent]] !== node) || openChildren && children === null || (text ? node.childNodes.length > 1 || node.firstChild !== null && node.firstChild.nodeType !== 3 : children !== null && !openChildren && (node.childNodes.length !== children || node.children.length !== children))) {
176
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings cannot adopt a mismatched addressed element topology." : __octaneNoArgError(321));
177
+ throw new Error(__octaneDev ? "DOM bindings cannot adopt a mismatched addressed element topology." : __octaneNoArgError(321));
177
178
  }
178
179
  if (parent !== -1)
179
180
  childCounts[parent]++;
180
181
  }
181
182
  for (let i = 0; i < descriptor.nodes.length; i++) {
182
183
  if (childCounts[i] !== (descriptor.nodes[i][3] ?? 0)) {
183
- throw new Error(process.env.NODE_ENV !== "production" ? "DOM bindings cannot adopt an incomplete addressed element topology." : __octaneNoArgError(322));
184
+ throw new Error(__octaneDev ? "DOM bindings cannot adopt an incomplete addressed element topology." : __octaneNoArgError(322));
184
185
  }
185
186
  }
186
187
  return nodes;
@@ -196,7 +197,7 @@ function normalizeFixedScalar(binding, value) {
196
197
  if (value == null || value === false)
197
198
  return "";
198
199
  if (type !== "string" && type !== "number" && type !== "bigint" && type !== "boolean")
199
- throw new TypeError(process.env.NODE_ENV !== "production" ? "DOM binding text must be a synchronous scalar." : __octaneNoArgError(323));
200
+ throw new TypeError(__octaneDev ? "DOM binding text must be a synchronous scalar." : __octaneNoArgError(323));
200
201
  return String(value);
201
202
  case "class":
202
203
  return value == null || value === false ? null : (0, import_class_names.normalizeClass)(value);
@@ -232,7 +233,7 @@ function normalize(binding, value) {
232
233
  if (value == null || value === false || value === "")
233
234
  return null;
234
235
  if (type !== "string")
235
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A whole-style DOM binding requires serialized CSS text or null." : __octaneNoArgError(324));
236
+ throw new TypeError(__octaneDev ? "A whole-style DOM binding requires serialized CSS text or null." : __octaneNoArgError(324));
236
237
  return value;
237
238
  case "classToken":
238
239
  return value ? "" : null;
@@ -337,7 +338,7 @@ function __adoptBindings(root, descriptor, source, options) {
337
338
  if ("root" in descriptor)
338
339
  return descriptor.adopt(root, descriptor, source, options);
339
340
  if (!source || typeof source.getSnapshot !== "function" || typeof source.subscribe !== "function")
340
- throw new TypeError(process.env.NODE_ENV !== "production" ? "DOM bindings require synchronous getSnapshot() and subscribe() methods." : __octaneNoArgError(325));
341
+ throw new TypeError(__octaneDev ? "DOM bindings require synchronous getSnapshot() and subscribe() methods." : __octaneNoArgError(325));
341
342
  const nodes = descriptor.addressed ? resolveAddressedNodes(assertBindingRoot(root, descriptor), descriptor) : resolveFixedNodes(root, descriptor);
342
343
  const bindings = descriptor.bindings;
343
344
  const owned = [];
@@ -545,14 +546,14 @@ function __adoptBindings(root, descriptor, source, options) {
545
546
  if (dirty || disposed)
546
547
  continue;
547
548
  if (snapshot !== null && (typeof snapshot === "object" || typeof snapshot === "function") && typeof snapshot.then === "function" && !dirty && !disposed)
548
- throw new TypeError(process.env.NODE_ENV !== "production" ? "DOM bindings require a synchronous snapshot, not a thenable." : __octaneNoArgError(326));
549
+ throw new TypeError(__octaneDev ? "DOM bindings require a synchronous snapshot, not a thenable." : __octaneNoArgError(326));
549
550
  if (dirty || disposed)
550
551
  continue;
551
552
  const values = descriptor.project(snapshot);
552
553
  if (dirty || disposed)
553
554
  continue;
554
555
  if (!Array.isArray(values) || values.length !== bindings.length)
555
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding projection must return its synchronous scalar values." : __octaneNoArgError(327));
556
+ throw new TypeError(__octaneDev ? "A DOM binding projection must return its synchronous scalar values." : __octaneNoArgError(327));
556
557
  let resolved = values;
557
558
  if (projectionFactory && descriptor.projectionGroups) {
558
559
  for (const group of descriptor.projectionGroups) {
@@ -825,7 +826,7 @@ function __adoptBindings(root, descriptor, source, options) {
825
826
  const binding = bindings[index];
826
827
  const node = nodes[binding[0]];
827
828
  if (node === void 0)
828
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding targets an unknown element." : __octaneNoArgError(328));
829
+ throw new TypeError(__octaneDev ? "A DOM binding targets an unknown element." : __octaneNoArgError(328));
829
830
  owned.push([node, __claimBinding(node, binding)]);
830
831
  if (binding[1] === "control") {
831
832
  controls.set(index, controlFactory.claim(node, binding[2], (0, import_read_protocol.forwardNativeTransitionConsumer)(refresh, () => {
@@ -844,7 +845,7 @@ function __adoptBindings(root, descriptor, source, options) {
844
845
  signal?.addEventListener("abort", dispose, { once: true });
845
846
  const stop = source.subscribe(refresh);
846
847
  if (typeof stop !== "function")
847
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding subscription must return a cleanup function." : __octaneNoArgError(329));
848
+ throw new TypeError(__octaneDev ? "A DOM binding subscription must return a cleanup function." : __octaneNoArgError(329));
848
849
  if (disposed)
849
850
  stop();
850
851
  else
@@ -862,9 +863,9 @@ function __adoptBindings(root, descriptor, source, options) {
862
863
  }
863
864
  function __adoptScalarBindings(root, descriptor, source, options) {
864
865
  if (descriptor.addressed || descriptor.handoff || descriptor.connectProjection || !descriptor.bindings.every(isFixedScalarChannel))
865
- throw new TypeError(process.env.NODE_ENV !== "production" ? "This DOM binding view requires the general adopter." : __octaneNoArgError(330));
866
+ throw new TypeError(__octaneDev ? "This DOM binding view requires the general adopter." : __octaneNoArgError(330));
866
867
  if (!source || typeof source.getSnapshot !== "function" || typeof source.subscribe !== "function")
867
- throw new TypeError(process.env.NODE_ENV !== "production" ? "DOM bindings require synchronous getSnapshot() and subscribe() methods." : __octaneNoArgError(325));
868
+ throw new TypeError(__octaneDev ? "DOM bindings require synchronous getSnapshot() and subscribe() methods." : __octaneNoArgError(325));
868
869
  const nodes = resolveFixedNodes(root, descriptor);
869
870
  const bindings = descriptor.bindings;
870
871
  const owned = [];
@@ -966,14 +967,14 @@ function __adoptScalarBindings(root, descriptor, source, options) {
966
967
  if (dirty || disposed)
967
968
  continue;
968
969
  if (snapshot !== null && (typeof snapshot === "object" || typeof snapshot === "function") && typeof snapshot.then === "function" && !dirty && !disposed)
969
- throw new TypeError(process.env.NODE_ENV !== "production" ? "DOM bindings require a synchronous snapshot, not a thenable." : __octaneNoArgError(326));
970
+ throw new TypeError(__octaneDev ? "DOM bindings require a synchronous snapshot, not a thenable." : __octaneNoArgError(326));
970
971
  if (dirty || disposed)
971
972
  continue;
972
973
  const values = descriptor.project(snapshot);
973
974
  if (dirty || disposed)
974
975
  continue;
975
976
  if (!Array.isArray(values) || values.length !== bindings.length)
976
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding projection must return its synchronous scalar values." : __octaneNoArgError(327));
977
+ throw new TypeError(__octaneDev ? "A DOM binding projection must return its synchronous scalar values." : __octaneNoArgError(327));
977
978
  let resolved = values;
978
979
  if (signalFactory && descriptor.signalIndices) {
979
980
  for (const index of descriptor.signalIndices) {
@@ -1082,13 +1083,13 @@ function __adoptScalarBindings(root, descriptor, source, options) {
1082
1083
  for (let index = 0; index < bindings.length; index++) {
1083
1084
  const node = nodes[bindings[index][0]];
1084
1085
  if (node === void 0)
1085
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding targets an unknown element." : __octaneNoArgError(328));
1086
+ throw new TypeError(__octaneDev ? "A DOM binding targets an unknown element." : __octaneNoArgError(328));
1086
1087
  owned.push([node, __claimBinding(node, bindings[index])]);
1087
1088
  }
1088
1089
  signal?.addEventListener("abort", dispose, { once: true });
1089
1090
  const stop = source.subscribe(refresh);
1090
1091
  if (typeof stop !== "function")
1091
- throw new TypeError(process.env.NODE_ENV !== "production" ? "A DOM binding subscription must return a cleanup function." : __octaneNoArgError(329));
1092
+ throw new TypeError(__octaneDev ? "A DOM binding subscription must return a cleanup function." : __octaneNoArgError(329));
1092
1093
  if (disposed)
1093
1094
  stop();
1094
1095
  else
@@ -22,8 +22,9 @@ __export(error_codes_client_generated_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(error_codes_client_generated_exports);
24
24
  var import_error_message = require("./error-message.cjs");
25
+ const __octaneDev = process.env.NODE_ENV !== "production";
25
26
  function formatClientError(code, ...args) {
26
- if (process.env.NODE_ENV !== "production") {
27
+ if (__octaneDev) {
27
28
  switch (code) {
28
29
  case 1:
29
30
  return (0, import_error_message.formatDevErrorMessage)(
@@ -1073,6 +1074,11 @@ function formatClientError(code, ...args) {
1073
1074
  return (0, import_error_message.formatDevErrorMessage)("This DOM binding view requires the general adopter.", args);
1074
1075
  case 331:
1075
1076
  return (0, import_error_message.formatDevErrorMessage)("Invalid independent Hydrate manifest inputs.", args);
1077
+ case 336:
1078
+ return (0, import_error_message.formatDevErrorMessage)(
1079
+ "`<textarea>` children must be text: strings, numbers, or arrays of them. One child was %s. A textarea's content is its default value, so it cannot contain elements; render them outside the textarea or pass a string.",
1080
+ args
1081
+ );
1076
1082
  default:
1077
1083
  return (0, import_error_message.formatUnknownDevErrorMessage)(code);
1078
1084
  }
@@ -22,8 +22,9 @@ __export(error_codes_server_generated_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(error_codes_server_generated_exports);
24
24
  var import_error_message = require("./error-message.cjs");
25
+ const __octaneDev = process.env.NODE_ENV !== "production";
25
26
  function formatServerError(code, ...args) {
26
- if (process.env.NODE_ENV !== "production") {
27
+ if (__octaneDev) {
27
28
  switch (code) {
28
29
  case 2:
29
30
  return (0, import_error_message.formatDevErrorMessage)(
@@ -743,6 +744,31 @@ function formatServerError(code, ...args) {
743
744
  );
744
745
  case 331:
745
746
  return (0, import_error_message.formatDevErrorMessage)("Invalid independent Hydrate manifest inputs.", args);
747
+ case 332:
748
+ return (0, import_error_message.formatDevErrorMessage)(
749
+ "octane SSR: a component kept throwing already-settled thenables outside use() for %sms. A resource reader should stop suspending once its data has settled.",
750
+ args
751
+ );
752
+ case 333:
753
+ return (0, import_error_message.formatDevErrorMessage)(
754
+ "octane SSR: exceeded %s suspense passes \u2014 a component kept throwing thenables outside use(). A resource reader should stop suspending once its data has settled.",
755
+ args
756
+ );
757
+ case 334:
758
+ return (0, import_error_message.formatDevErrorMessage)(
759
+ "octane SSR: %s consecutive streaming passes completed no boundary \u2014 a component kept throwing thenables outside use(). A resource reader should stop suspending once its data has settled.",
760
+ args
761
+ );
762
+ case 335:
763
+ return (0, import_error_message.formatDevErrorMessage)(
764
+ "octane SSR: %s root streaming passes completed without producing a shell \u2014 a component kept throwing thenables outside use(). A resource reader should stop suspending once its data has settled.",
765
+ args
766
+ );
767
+ case 336:
768
+ return (0, import_error_message.formatDevErrorMessage)(
769
+ "`<textarea>` children must be text: strings, numbers, or arrays of them. One child was %s. A textarea's content is its default value, so it cannot contain elements; render them outside the textarea or pass a string.",
770
+ args
771
+ );
746
772
  default:
747
773
  return (0, import_error_message.formatUnknownDevErrorMessage)(code);
748
774
  }
@@ -49,6 +49,7 @@ var import_control_capture2 = require("./control-capture.cjs");
49
49
  var import_stream_protocol = require("../stream-protocol.cjs");
50
50
  var import_hydration_markers2 = require("../hydration-markers.cjs");
51
51
  var import_interaction_config2 = require("./interaction-config.cjs");
52
+ const __octaneDev = process.env.NODE_ENV !== "production";
52
53
  function __octaneNoArgError(code) {
53
54
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
54
55
  }
@@ -322,7 +323,7 @@ function initializeHydrationEventCapture(ownerDocument) {
322
323
  };
323
324
  host[import_interaction_config.EARLY_HYDRATION_INTENTS_KEY] = claimed;
324
325
  if (mailbox?.overflow) {
325
- throw new RangeError(process.env.NODE_ENV !== "production" ? "Early independent Hydrate intent queue overflow; reload the document." : __octaneNoArgError(214));
326
+ throw new RangeError(__octaneDev ? "Early independent Hydrate intent queue overflow; reload the document." : __octaneNoArgError(214));
326
327
  }
327
328
  HYDRATE_INTENT_DOCUMENTS.add(targetDocument);
328
329
  for (let i = 0; i < import_interaction_config.HYDRATE_SUPPORTED_INTERACTION_EVENTS.length; i++) {
@@ -24,6 +24,7 @@ __export(independent_hydration_protocol_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(independent_hydration_protocol_exports);
26
26
  var import_data_encoding = require("./data-encoding.cjs");
27
+ const __octaneDev = process.env.NODE_ENV !== "production";
27
28
  function __octaneNoArgError(code) {
28
29
  return "Minified Octane error #" + code + "; visit https://octanejs.dev/errors/" + code + " for the full message or use a development build for full errors and additional helpful warnings.";
29
30
  }
@@ -98,13 +99,13 @@ function createIndependentHydrateManifest(template, values, instanceBoundaryId,
98
99
  styles: build.styles
99
100
  };
100
101
  if (!isIndependentHydrateManifest(manifest)) {
101
- throw new TypeError(process.env.NODE_ENV !== "production" ? "Invalid independent Hydrate manifest inputs." : __octaneNoArgError(331));
102
+ throw new TypeError(__octaneDev ? "Invalid independent Hydrate manifest inputs." : __octaneNoArgError(331));
102
103
  }
103
104
  return Object.freeze(manifest);
104
105
  }
105
106
  function serializeIndependentHydrateManifest(manifest) {
106
107
  if (!isIndependentHydrateManifest(manifest)) {
107
- throw new TypeError(process.env.NODE_ENV !== "production" ? "Invalid independent Hydrate manifest." : __octaneNoArgError(215));
108
+ throw new TypeError(__octaneDev ? "Invalid independent Hydrate manifest." : __octaneNoArgError(215));
108
109
  }
109
110
  return JSON.stringify(manifest).replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
110
111
  }
@@ -213,6 +213,7 @@ __export(index_exports, {
213
213
  template: () => import_runtime.template,
214
214
  textHole: () => import_runtime.textHole,
215
215
  textSlot: () => import_runtime.textSlot,
216
+ textareaText: () => import_runtime.textareaText,
216
217
  trustHTML: () => import_trusted_html.trustHTML,
217
218
  tryBlock: () => import_runtime.tryBlock,
218
219
  unstable_Activity: () => import_runtime.Activity,
@@ -458,6 +459,7 @@ var import_method_dep = require("./method-dep.cjs");
458
459
  template,
459
460
  textHole,
460
461
  textSlot,
462
+ textareaText,
461
463
  trustHTML,
462
464
  tryBlock,
463
465
  unstable_Activity,