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,80 @@
1
+ import { decodeSignalValue, encodeSignalValue } from "./data-encoding.js";
2
+ function plainRecord(value) {
3
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
4
+ const prototype = Object.getPrototypeOf(value);
5
+ if (prototype !== Object.prototype && prototype !== null) return false;
6
+ return Reflect.ownKeys(value).every((key2) => {
7
+ if (typeof key2 !== "string") return false;
8
+ const descriptor = Object.getOwnPropertyDescriptor(value, key2);
9
+ return descriptor.enumerable && "value" in descriptor;
10
+ });
11
+ }
12
+ function key(value) {
13
+ return typeof value === "string" && value.length > 0 && value.length <= 1024;
14
+ }
15
+ function uniqueKeys(value) {
16
+ return Array.isArray(value) && value.every(key) && new Set(value).size === value.length;
17
+ }
18
+ function captures(value, count) {
19
+ if (!Array.isArray(value) || value.length !== count) return false;
20
+ try {
21
+ for (const capture of value) decodeSignalValue(capture);
22
+ return true;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+ function isIndependentHydrateManifest(value) {
28
+ if (!plainRecord(value)) return false;
29
+ const allowed = /* @__PURE__ */ new Set([
30
+ "version",
31
+ "buildId",
32
+ "boundaryId",
33
+ "moduleId",
34
+ "exportName",
35
+ "captureSchema",
36
+ "captures",
37
+ "hookSeed",
38
+ "idSeed",
39
+ "signalSites",
40
+ "styles",
41
+ "parentDependencies"
42
+ ]);
43
+ if (!Object.keys(value).every((name) => allowed.has(name))) return false;
44
+ if (value.version !== 1 || !key(value.buildId) || !key(value.boundaryId) || !key(value.moduleId) || !key(value.exportName) || !Number.isSafeInteger(value.hookSeed) || value.hookSeed < 0 || !Number.isSafeInteger(value.idSeed) || value.idSeed < 0 || value.parentDependencies !== false || !uniqueKeys(value.signalSites) || !uniqueKeys(value.styles) || !Array.isArray(value.captureSchema)) {
45
+ return false;
46
+ }
47
+ const names = /* @__PURE__ */ new Set();
48
+ for (const capture of value.captureSchema) {
49
+ if (!plainRecord(capture) || Object.keys(capture).length !== 2 || !key(capture.name) || capture.type !== "json" || names.has(capture.name)) {
50
+ return false;
51
+ }
52
+ names.add(capture.name);
53
+ }
54
+ return captures(value.captures, value.captureSchema.length);
55
+ }
56
+ function createIndependentHydrateManifest(template, values, instanceBoundaryId, buildId, build) {
57
+ const manifest = {
58
+ ...template,
59
+ buildId,
60
+ boundaryId: instanceBoundaryId,
61
+ moduleId: build.moduleId,
62
+ captures: values.map((value) => encodeSignalValue(value)),
63
+ styles: build.styles
64
+ };
65
+ if (!isIndependentHydrateManifest(manifest)) {
66
+ throw new TypeError("Invalid independent Hydrate manifest inputs.");
67
+ }
68
+ return Object.freeze(manifest);
69
+ }
70
+ function serializeIndependentHydrateManifest(manifest) {
71
+ if (!isIndependentHydrateManifest(manifest)) {
72
+ throw new TypeError("Invalid independent Hydrate manifest.");
73
+ }
74
+ return JSON.stringify(manifest).replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
75
+ }
76
+ export {
77
+ createIndependentHydrateManifest,
78
+ isIndependentHydrateManifest,
79
+ serializeIndependentHydrateManifest
80
+ };
package/dist/index.d.ts CHANGED
@@ -9,4 +9,6 @@ export { createSubSlot, subSlot, type SubSlot, type SlotlessSubSlot, type SubSlo
9
9
  export { createRoot, hydrateRoot, flushSync, act, isInActScope, type Root, type RootContainer, type RootOptions, useState, useLinkedState, type LinkedStatePrevious, type LinkedStateOptions, useReducer, useEffect, useLayoutEffect, useInsertionEffect, useMemo, useCallback, useRef, useId, useImperativeHandle, useEffectEvent, useSyncExternalStore, useDeferredValue, useTransition, useActionState, useActionState as useFormState, useFormStatus, useOptimistic, useDebugValue, type FormStatus, startTransition, requestFormReset, memo, lazy, preload, preinit, preloadModule, preinitModule, preconnect, prefetchDNS, createContext, use, useContext, type Context, type ForeignHostContext, Suspense, ErrorBoundary, Hydrate, Activity, Activity as unstable_Activity, ViewTransition, addTransitionType, ViewTransition as unstable_ViewTransition, addTransitionType as unstable_addTransitionType, ViewTransitionPseudoElement, type ViewTransitionProps, type ViewTransitionInstance, Fragment, createPortal, type PortalDescriptor, createElement, cloneElement, isValidElement, isChildrenBlock, descriptorChildren, Children, type ElementDescriptor, type ComponentBody, type OctaneNode, TsrxErrorBoundary, __useStateWithGetter, __useLinkedStateWithGetter, __useReducerWithGetter, __createVoidRoot, bindRendererRegionOwner, EXTERNAL_HYDRATION_PROMISE, HYDRATION_RANGE_BOUNDARY, createHostContextRequest, __vtSeen, template, clone, drainFrag, bag0, bag1, bag2, bag3, bag4, bag5, bag6, bag7, bag8, bag9, bag10, bag11, bag12, bag13, bag14, bag15, bag16, bagOf, evt0, evt0u, evt1, evt1u, evt2, evt2u, evt1e, evt2e, evtN, evtNu, setEventHandler, devEventListener, devHtmlNesting, htext, htextSwap, child, sibling, setText, setScriptText, setHTML, setDangerouslySetInnerHTML, setDangerouslySetInnerHTMLSources, markDangerouslySetInnerHTMLChildren, setAttribute, setStringData, setBooleanAttribute, setAriaAttribute, setClassName, setClassAttr, normalizeClass, isHydratingStyle, setStyle, setStyleProperty, setStyleProperties, setSpread, snapshotSpread, setHostPropSources, queueNativeChangeDiagnostic, queueFormAuthoringDiagnostic, markNativeChangeDiagnosticStatic, setFormAction, setValue, setFormControlSources, setChecked, setCheckedCheckable, setSelectValue, setDefaultValue, setDefaultValueUncontrolled, setDefaultChecked, setAutoFocus, attachRef, queueRefAttach, queueRefDetach, replaceRef, queueOwnRefDetach, injectStyle, headBlock, stylesheetResource, styleResource, scriptResource, namespaceHead, namespaceHeadElement, delegateEvents, delegateCaptureEvents, fastForBlock, fastKeyedForBlock, fastMapSlot, forBlock, keyedForBlock, mapSlot, ifBlock, errorBlock, tryBlock, switchBlock, activityBlock, componentSlot, componentSlotVoid, componentSlotLite, compilerCacheArray, compilerCacheImmutableArrayFilter, compilerCacheMappedArray, compilerCacheContext, compilerOwnsContextProvider, markSingleRoot, markWarm, markSingleRoot as __s, markChildrenBlock, createScopedValue, createScopedElement, childSlot, positionalChildren, textSlot, textHole, childTextHole, hostComponent, renderBlock, portal, hookSlots, withSlot, manualHook, invokeManualHook, useBatch, registerWarmPlan, seedOrCreate, warmMemo, warmChild, puMiss, puTake0, puTake1, puTake2, puTake3, puTake4, puPub, provideContext, mountFragmentRef, FragmentInstance, hmr, HMR, hasPendingWork, type Scope, type Block, drainPassiveEffects, setIsOctaneActEnvironment, resetFloatResourceState, setTransitionFallbackTimeout, getTransitionFallbackTimeout, } from './runtime.js';
10
10
  export type { HydrateOptions, HydrateProps, HydrateWhen, HydrationInteractionEvent, HydrationInteractionEvents, HydrationPrefetchContext, HydrationPrefetchFunction, HydrationPrefetchStrategy, HydrationPrefetchWaitReason, HydrationStrategy, HydrationWhen, } from './hydration/types.js';
11
11
  export { __serverRpc } from './server-rpc-client.js';
12
+ export { ServerCallUncertainError } from './server-rpc-protocol.js';
13
+ export { batchServerCalls, type ServerCallBatchOptions } from './server-rpc-batch-client.js';
12
14
  export { __methodDep } from './method-dep.js';
package/dist/index.js CHANGED
@@ -221,6 +221,8 @@ import {
221
221
  getTransitionFallbackTimeout
222
222
  } from "./runtime.js";
223
223
  import { __serverRpc } from "./server-rpc-client.js";
224
+ import { ServerCallUncertainError } from "./server-rpc-protocol.js";
225
+ import { batchServerCalls } from "./server-rpc-batch-client.js";
224
226
  import { __methodDep } from "./method-dep.js";
225
227
  export {
226
228
  Activity,
@@ -232,6 +234,7 @@ export {
232
234
  HMR,
233
235
  HYDRATION_RANGE_BOUNDARY,
234
236
  Hydrate,
237
+ ServerCallUncertainError,
235
238
  StrictMode,
236
239
  Suspense,
237
240
  TsrxErrorBoundary,
@@ -268,6 +271,7 @@ export {
268
271
  bag8,
269
272
  bag9,
270
273
  bagOf,
274
+ batchServerCalls,
271
275
  bindRendererRegionOwner,
272
276
  child,
273
277
  childSlot,
@@ -0,0 +1 @@
1
+ export { readNativeDomValue } from '../signals/read-protocol.js';
@@ -0,0 +1,4 @@
1
+ import { readNativeDomValue } from "../signals/read-protocol.js";
2
+ export {
3
+ readNativeDomValue
4
+ };
@@ -145,6 +145,19 @@ type ExistingButtonAttribute<
145
145
  Fallback,
146
146
  > = K extends keyof React.ButtonHTMLAttributes<T> ? React.ButtonHTMLAttributes<T>[K] : Fallback;
147
147
 
148
+ /** Uncontrolled initialization and framework instructions are not live bindings. */
149
+ type UnboundProps =
150
+ | 'defaultValue'
151
+ | 'defaultChecked'
152
+ | 'dangerouslySetInnerHTML'
153
+ | 'suppressContentEditableWarning'
154
+ | 'suppressHydrationWarning'
155
+ | 'suppressNativeChangeWarning'
156
+ | '__octaneNativeChangeDiagnostic'
157
+ | 'ref'
158
+ | 'key'
159
+ | 'children';
160
+
148
161
  /** Octane's attribute transform over one React attribute interface. */
149
162
  type Transformed<P, T> = Omit<P, ReactSyntheticProps | 'className' | 'style' | 'children'> &
150
163
  NativeEventHandlers<P, T & EventTarget> & {
@@ -152,14 +165,32 @@ type Transformed<P, T> = Omit<P, ReactSyntheticProps | 'className' | 'style' | '
152
165
  className?: ClassValue;
153
166
  for?: string;
154
167
  xmlns?: string;
155
- style?:
156
- | string
157
- | CSSProperties
158
- | SignalCSSProperties
159
- | SignalHandle<string | CSSProperties | SignalCSSProperties | null | undefined>;
168
+ style?: string | CSSProperties;
160
169
  children?: unknown;
161
170
  };
162
171
 
172
+ type BoundStyle<S> = S | SignalCSSProperties | null | SignalHandle<S | SignalCSSProperties | null>;
173
+
174
+ /** Provider-owned compiler attributes. Augment without widening component props or signal types. */
175
+ export interface NativeAttributeExtensions {}
176
+
177
+ /**
178
+ * Only a host JSX site installs direct bindings. Keep reusable attribute and
179
+ * component-prop types scalar: their consumers may read values imperatively.
180
+ * A component can explicitly opt in with SignalHandle or this JSX namespace.
181
+ */
182
+ type BoundIntrinsicProps<P> = {
183
+ [K in keyof P]: K extends UnboundProps | ReactSyntheticProps
184
+ ? P[K]
185
+ : K extends 'style'
186
+ ? BoundStyle<P[K]>
187
+ : P[K] | SignalHandle<P[K]>;
188
+ } & NativeAttributeExtensions;
189
+
190
+ type BoundIntrinsicElements = {
191
+ [K in keyof Octane.JSX.IntrinsicElements]: BoundIntrinsicProps<Octane.JSX.IntrinsicElements[K]>;
192
+ };
193
+
163
194
  declare namespace Octane {
164
195
  type Key = string | number | bigint;
165
196
 
@@ -616,7 +647,15 @@ declare namespace Octane {
616
647
  }
617
648
  }
618
649
 
619
- export import JSX = Octane.JSX;
650
+ /** Automatic JSX runtime types include the host's direct signal bindings. */
651
+ export namespace JSX {
652
+ type ElementType = Octane.JSX.ElementType;
653
+ interface Element extends Octane.JSX.Element {}
654
+ interface ElementChildrenAttribute extends Octane.JSX.ElementChildrenAttribute {}
655
+ interface IntrinsicAttributes extends Octane.JSX.IntrinsicAttributes {}
656
+ interface IntrinsicClassAttributes<T> extends Octane.JSX.IntrinsicClassAttributes<T> {}
657
+ interface IntrinsicElements extends BoundIntrinsicElements {}
658
+ }
620
659
  export { Octane };
621
660
 
622
661
  // The automatic-runtime entry points, for type resolution only — octane's
@@ -2,7 +2,21 @@
2
2
  import type * as React from 'react';
3
3
  import type { Octane } from './jsx-runtime.js';
4
4
  import type { Activity, Context, ElementDescriptor, OctaneNode, PortalDescriptor, Suspense } from './runtime.js';
5
- export type { JSX, Octane, OctaneElement, ClassValue, CSSProperties, SignalCSSProperties, } from './jsx-runtime.js';
5
+ export type { Octane, OctaneElement, ClassValue, CSSProperties, SignalCSSProperties, } from './jsx-runtime.js';
6
+ /** Reusable component props remain scalar; the automatic JSX runtime adds bindings. */
7
+ export declare namespace JSX {
8
+ type ElementType = Octane.JSX.ElementType;
9
+ interface Element extends Octane.JSX.Element {
10
+ }
11
+ interface ElementChildrenAttribute extends Octane.JSX.ElementChildrenAttribute {
12
+ }
13
+ interface IntrinsicAttributes extends Octane.JSX.IntrinsicAttributes {
14
+ }
15
+ interface IntrinsicClassAttributes<T> extends Octane.JSX.IntrinsicClassAttributes<T> {
16
+ }
17
+ interface IntrinsicElements extends Octane.JSX.IntrinsicElements {
18
+ }
19
+ }
6
20
  /** Migration alias. New Octane code should use OctaneNode. */
7
21
  export type ReactNode = OctaneNode;
8
22
  export type ReactElement<P = any, T extends ElementDescriptor<P>['type'] = ElementDescriptor<P>['type']> = ElementDescriptor<P> & {