signalium 2.3.2 → 3.0.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 (130) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/dist/cjs/development/component-shared-Cug2Y5YZ.js +33 -0
  3. package/dist/cjs/development/component-shared-Cug2Y5YZ.js.map +1 -0
  4. package/dist/cjs/development/{debug-ouT0N0E4.js → debug-C46WDxhL.js} +47 -195
  5. package/dist/cjs/development/debug-C46WDxhL.js.map +1 -0
  6. package/dist/cjs/development/debug.js +1 -1
  7. package/dist/cjs/development/index.js +3 -2
  8. package/dist/cjs/development/index.js.map +1 -1
  9. package/dist/cjs/development/react/index.js +256 -87
  10. package/dist/cjs/development/react/index.js.map +1 -1
  11. package/dist/cjs/development/react/index.server.js +14 -0
  12. package/dist/cjs/development/react/index.server.js.map +1 -0
  13. package/dist/cjs/development/react/server.js +37 -0
  14. package/dist/cjs/development/react/server.js.map +1 -0
  15. package/dist/cjs/development/{snapshot-BPJ-qw6l.js → snapshot-48aGePMZ.js} +2 -2
  16. package/dist/cjs/development/{snapshot-BPJ-qw6l.js.map → snapshot-48aGePMZ.js.map} +1 -1
  17. package/dist/cjs/development/transform/index.js +196 -13
  18. package/dist/cjs/development/transform/index.js.map +1 -1
  19. package/dist/cjs/development/utils.js +6 -6
  20. package/dist/cjs/development/utils.js.map +1 -1
  21. package/dist/cjs/production/component-shared-D0J85PUi.js +33 -0
  22. package/dist/cjs/production/component-shared-D0J85PUi.js.map +1 -0
  23. package/dist/cjs/production/{contexts-DtQMtXO7.js → contexts-CM3QLfV8.js} +47 -198
  24. package/dist/cjs/production/contexts-CM3QLfV8.js.map +1 -0
  25. package/dist/cjs/production/debug.js +1 -1
  26. package/dist/cjs/production/index.js +3 -2
  27. package/dist/cjs/production/index.js.map +1 -1
  28. package/dist/cjs/production/react/index.js +242 -89
  29. package/dist/cjs/production/react/index.js.map +1 -1
  30. package/dist/cjs/production/react/index.server.js +14 -0
  31. package/dist/cjs/production/react/index.server.js.map +1 -0
  32. package/dist/cjs/production/react/server.js +37 -0
  33. package/dist/cjs/production/react/server.js.map +1 -0
  34. package/dist/cjs/production/{snapshot-Dw62eSpw.js → snapshot-BCESZVAP.js} +2 -2
  35. package/dist/cjs/production/{snapshot-Dw62eSpw.js.map → snapshot-BCESZVAP.js.map} +1 -1
  36. package/dist/cjs/production/transform/index.js +196 -13
  37. package/dist/cjs/production/transform/index.js.map +1 -1
  38. package/dist/cjs/production/utils.js +6 -6
  39. package/dist/cjs/production/utils.js.map +1 -1
  40. package/dist/esm/development/component-shared-CLSmdnGU.js +34 -0
  41. package/dist/esm/development/component-shared-CLSmdnGU.js.map +1 -0
  42. package/dist/esm/development/{debug-DaK9qsbI.js → debug-BTLbgTPK.js} +79 -227
  43. package/dist/esm/development/debug-BTLbgTPK.js.map +1 -0
  44. package/dist/esm/development/debug.js +9 -9
  45. package/dist/esm/development/index.js +14 -13
  46. package/dist/esm/development/react/index.js +232 -79
  47. package/dist/esm/development/react/index.js.map +1 -1
  48. package/dist/esm/development/react/index.server.js +14 -0
  49. package/dist/esm/development/react/index.server.js.map +1 -0
  50. package/dist/esm/development/react/server.js +20 -0
  51. package/dist/esm/development/react/server.js.map +1 -0
  52. package/dist/esm/development/{snapshot-D8ZJEbwO.js → snapshot-Ca_rQa4c.js} +2 -2
  53. package/dist/esm/development/{snapshot-D8ZJEbwO.js.map → snapshot-Ca_rQa4c.js.map} +1 -1
  54. package/dist/esm/development/transform/index.js +197 -14
  55. package/dist/esm/development/transform/index.js.map +1 -1
  56. package/dist/esm/development/utils.js +11 -11
  57. package/dist/esm/development/utils.js.map +1 -1
  58. package/dist/esm/index.d.ts +2 -2
  59. package/dist/esm/index.d.ts.map +1 -1
  60. package/dist/esm/internals/async.d.ts +3 -3
  61. package/dist/esm/internals/async.d.ts.map +1 -1
  62. package/dist/esm/internals/contexts.d.ts +10 -6
  63. package/dist/esm/internals/contexts.d.ts.map +1 -1
  64. package/dist/esm/internals/core-api.d.ts +2 -2
  65. package/dist/esm/internals/core-api.d.ts.map +1 -1
  66. package/dist/esm/internals/get.d.ts.map +1 -1
  67. package/dist/esm/internals/reactive.d.ts +3 -9
  68. package/dist/esm/internals/reactive.d.ts.map +1 -1
  69. package/dist/esm/internals/scheduling.d.ts +0 -2
  70. package/dist/esm/internals/scheduling.d.ts.map +1 -1
  71. package/dist/esm/internals/watch.d.ts +3 -4
  72. package/dist/esm/internals/watch.d.ts.map +1 -1
  73. package/dist/esm/production/component-shared-Dva0S5e3.js +34 -0
  74. package/dist/esm/production/component-shared-Dva0S5e3.js.map +1 -0
  75. package/dist/esm/production/{contexts-US_h2nBi.js → contexts-FxCndlvf.js} +71 -222
  76. package/dist/esm/production/contexts-FxCndlvf.js.map +1 -0
  77. package/dist/esm/production/debug.js +1 -1
  78. package/dist/esm/production/index.js +14 -13
  79. package/dist/esm/production/react/index.js +219 -82
  80. package/dist/esm/production/react/index.js.map +1 -1
  81. package/dist/esm/production/react/index.server.js +14 -0
  82. package/dist/esm/production/react/index.server.js.map +1 -0
  83. package/dist/esm/production/react/server.js +20 -0
  84. package/dist/esm/production/react/server.js.map +1 -0
  85. package/dist/esm/production/{snapshot-CfJGJCvW.js → snapshot-TYiTYPGB.js} +2 -2
  86. package/dist/esm/production/{snapshot-CfJGJCvW.js.map → snapshot-TYiTYPGB.js.map} +1 -1
  87. package/dist/esm/production/transform/index.js +197 -14
  88. package/dist/esm/production/transform/index.js.map +1 -1
  89. package/dist/esm/production/utils.js +11 -11
  90. package/dist/esm/production/utils.js.map +1 -1
  91. package/dist/esm/react/async-component.d.ts +42 -0
  92. package/dist/esm/react/async-component.d.ts.map +1 -0
  93. package/dist/esm/react/component-server.d.ts +4 -0
  94. package/dist/esm/react/component-server.d.ts.map +1 -0
  95. package/dist/esm/react/component-shared.d.ts +21 -0
  96. package/dist/esm/react/component-shared.d.ts.map +1 -0
  97. package/dist/esm/react/component.d.ts +5 -1
  98. package/dist/esm/react/component.d.ts.map +1 -1
  99. package/dist/esm/react/index.d.ts +3 -4
  100. package/dist/esm/react/index.d.ts.map +1 -1
  101. package/dist/esm/react/index.server.d.ts +8 -0
  102. package/dist/esm/react/index.server.d.ts.map +1 -0
  103. package/dist/esm/react/pause-signals-context.d.ts +18 -0
  104. package/dist/esm/react/pause-signals-context.d.ts.map +1 -0
  105. package/dist/esm/react/server.d.ts +12 -0
  106. package/dist/esm/react/server.d.ts.map +1 -0
  107. package/dist/esm/react/use-reactive.d.ts +36 -7
  108. package/dist/esm/react/use-reactive.d.ts.map +1 -1
  109. package/dist/esm/transform/async.d.ts.map +1 -1
  110. package/dist/esm/transform/callback.d.ts.map +1 -1
  111. package/dist/esm/transform/index.d.ts +1 -0
  112. package/dist/esm/transform/index.d.ts.map +1 -1
  113. package/dist/esm/transform/preset.d.ts +1 -0
  114. package/dist/esm/transform/preset.d.ts.map +1 -1
  115. package/dist/esm/transform/use-reactive.d.ts +9 -0
  116. package/dist/esm/transform/use-reactive.d.ts.map +1 -0
  117. package/dist/esm/types.d.ts +33 -10
  118. package/dist/esm/types.d.ts.map +1 -1
  119. package/dist/esm/utils.d.ts +2 -2
  120. package/dist/esm/utils.d.ts.map +1 -1
  121. package/package.json +35 -4
  122. package/react-server.js +15 -0
  123. package/dist/cjs/development/debug-ouT0N0E4.js.map +0 -1
  124. package/dist/cjs/production/contexts-DtQMtXO7.js.map +0 -1
  125. package/dist/esm/development/debug-DaK9qsbI.js.map +0 -1
  126. package/dist/esm/internals/weakref.d.ts +0 -3
  127. package/dist/esm/internals/weakref.d.ts.map +0 -1
  128. package/dist/esm/production/contexts-US_h2nBi.js.map +0 -1
  129. package/dist/esm/react/suspend-signals-context.d.ts +0 -3
  130. package/dist/esm/react/suspend-signals-context.d.ts.map +0 -1
@@ -0,0 +1,42 @@
1
+ import type * as ReactTypes from 'react';
2
+ import { ReactiveSignal } from '../internals/reactive.js';
3
+ /** Marked on the outer wrapper returned by `component()` for async (generator) definitions. */
4
+ export declare const SIGNALIUM_ASYNC_COMPONENT: unique symbol;
5
+ /**
6
+ * Call from wrappers around `use()` if you might receive a Signalium async component by mistake.
7
+ * React's `use()` does not support Signalium async `component()` wrappers — render them under
8
+ * `<Suspense>` and use `await` inside the component (after the async transform) instead.
9
+ */
10
+ export declare function throwIfSignaliumAsyncComponentPassedToUse(resource: unknown): void;
11
+ export { isGeneratorFunction, isAsyncFunctionWithoutTransform } from './component-shared.js';
12
+ /**
13
+ * Synchronous replay driver for async `component()` (authoring: `async`/`await`; Babel rewrites to a generator).
14
+ *
15
+ * Each React render starts a **new** iterator and walks it in a tight loop. Each `yield` (from
16
+ * the compiled generator, originally `await`) is treated like `use(promise)` / Suspense: pending
17
+ * thenables **throw** (interrupting the render); settled `ReactivePromise` values are injected via
18
+ * `next(value)` and the loop continues in the same turn.
19
+ *
20
+ * **Hooks after a suspending `await`:** Same family as React `use()` — the throw aborts before
21
+ * later code runs; the next attempt replays from the top. Do not use conditional hooks without
22
+ * Suspense on paths that skip them.
23
+ *
24
+ * **Plain `Promise` / other thenables:** First time pending, **throw** for Suspense and register
25
+ * the outcome in a `WeakMap` keyed by thenable identity. After settlement, the **same** object
26
+ * replays inject the value (or throw the rejection) synchronously. Keep **stable thenable
27
+ * identity** across replays (e.g. store in a ref). Thenables may expose React `use()`-style
28
+ * `status` / `value` / `reason` for synchronous reads when present.
29
+ *
30
+ * **Generator `let` / `const`:** Reset every replay; durable state should use React hooks, refs, or
31
+ * Signalium signals.
32
+ *
33
+ * `ownerSignal` is set as `CURRENT_CONSUMER` so reads inside the generator participate in the
34
+ * reactive graph like `compute` in `runSignal`.
35
+ */
36
+ export declare function runSyncReplayAsyncComponent<P extends object>(fn: (props: P) => Generator<any, ReactTypes.ReactNode | ReactTypes.ReactNode[] | null, unknown>, props: P, ownerSignal: ReactiveSignal<ReactTypes.ReactNode | ReactTypes.ReactNode[] | null, []>): ReactTypes.ReactNode | ReactTypes.ReactNode[] | null;
37
+ /**
38
+ * Async Signalium `component()`: one lazy reactive signal per **instance** (same as sync
39
+ * `component()`), outer `useMemo` keyed by `hashValue(props)`. No definition-scoped props map.
40
+ */
41
+ export declare function createAsyncComponentWrapper<P extends object>(fn: (props: P) => Generator<any, ReactTypes.ReactNode | ReactTypes.ReactNode[] | null, unknown>): (props: P) => ReactTypes.ReactNode;
42
+ //# sourceMappingURL=async-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-component.d.ts","sourceRoot":"","sources":["../../../src/react/async-component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,UAAU,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAwB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAiDhF,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,eAAyC,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,yCAAyC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CASjF;AAED,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAC1D,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,EAC/F,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,GACpF,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAoCtD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAC1D,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,GAC9F,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,SAAS,CAwDpC"}
@@ -0,0 +1,4 @@
1
+ import { type ComponentRender } from './component-shared.js';
2
+ export default function component<Props extends object>(fn: (props: Props) => Promise<ComponentRender>): (props: Props) => Promise<ComponentRender>;
3
+ export default function component<Props extends object>(fn: (props: Props) => ComponentRender): (props: Props) => ComponentRender;
4
+ //# sourceMappingURL=component-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-server.d.ts","sourceRoot":"","sources":["../../../src/react/component-server.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EACpD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,GAC7C,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAC9C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EACpD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,eAAe,GACpC,CAAC,KAAK,EAAE,KAAK,KAAK,eAAe,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Shared helpers for `component()` — used by both the client entry (`component.tsx`)
3
+ * and the server entry (`component-server.ts`). No React hook imports so it's safe
4
+ * for the `react-server` bundle condition.
5
+ */
6
+ import type { ReactNode } from 'react';
7
+ export type ComponentRender = ReactNode | ReactNode[] | null;
8
+ export declare function isGeneratorFunction(fn: unknown): fn is (props: never) => Generator<any, ComponentRender, unknown>;
9
+ export declare function isAsyncFunctionWithoutTransform(fn: unknown): boolean;
10
+ /**
11
+ * Wrap a Babel-transformed async generator in a real `async function` that drives it
12
+ * with {@link generatorResultToPromiseWithConsumer}. Used on the server (RSC + SSR)
13
+ * where hooks-based Suspense replay is not appropriate.
14
+ */
15
+ export declare function createServerAsyncComponentWrapper<P extends object>(fn: (props: P) => Generator<any, ComponentRender, unknown>): (props: P) => Promise<ComponentRender>;
16
+ /**
17
+ * Wrap a sync render function with consumer/scope tracking. Used by the server
18
+ * `component()` for non-generator definitions.
19
+ */
20
+ export declare function createServerSyncComponentWrapper<P extends object>(fn: (props: P) => ComponentRender): (props: P) => ComponentRender;
21
+ //# sourceMappingURL=component-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-shared.d.ts","sourceRoot":"","sources":["../../../src/react/component-shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;AAE7D,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,CAIjH;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,SAAS,MAAM,EAChE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,GACzD,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,CAWxC;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,MAAM,EAC/D,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,GAChC,CAAC,KAAK,EAAE,CAAC,KAAK,eAAe,CAiB/B"}
@@ -1,2 +1,6 @@
1
- export default function component<Props extends object>(fn: (props: Props) => React.ReactNode | React.ReactNode[] | null): (props: Props) => import("react/jsx-runtime").JSX.Element;
1
+ import type { ReactNode } from 'react';
2
+ import { type ComponentRender } from './component-shared.js';
3
+ export { isAsyncFunctionWithoutTransform, runSyncReplayAsyncComponent, SIGNALIUM_ASYNC_COMPONENT, throwIfSignaliumAsyncComponentPassedToUse, } from './async-component.js';
4
+ export default function component<Props extends object>(fn: (props: Props) => Promise<ComponentRender>): (props: Props) => ReactNode;
5
+ export default function component<Props extends object>(fn: (props: Props) => ComponentRender): (props: Props) => ReactNode;
2
6
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/react/component.tsx"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EACpD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,WA6CjD,KAAK,6CAMrB"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/react/component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EACpD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,GAC7C,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;AAC/B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,SAAS,MAAM,EACpD,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,eAAe,GACpC,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC"}
@@ -1,8 +1,7 @@
1
1
  export { ContextProvider } from './provider.js';
2
- export { default as component } from './component.js';
2
+ export { default as component, isAsyncFunctionWithoutTransform, runSyncReplayAsyncComponent, SIGNALIUM_ASYNC_COMPONENT, throwIfSignaliumAsyncComponentPassedToUse, } from './component.js';
3
3
  export { useContext } from './context.js';
4
4
  export { useSignal } from './use-signal.js';
5
- export { useReactive, useReactiveDeep } from './use-reactive.js';
6
- export { SuspendSignalsProvider } from './suspend-signals-context.js';
7
- export { useSignalsSuspended } from './suspend-signals-context.js';
5
+ export { useReactive, useReactiveShallow, useReactiveDeep } from './use-reactive.js';
6
+ export { PauseSignalsProvider } from './pause-signals-context.js';
8
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Server-safe entry for `signalium/react` (activated by the `react-server` export condition).
3
+ *
4
+ * Re-exports the server variant of `component()` which returns real async function components
5
+ * instead of hooks-based Suspense wrappers. No React hook imports — safe for RSC bundles.
6
+ */
7
+ export { default as component } from './component-server.js';
8
+ //# sourceMappingURL=index.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../../src/react/index.server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { ReactiveSignal } from '../internals/reactive.js';
3
+ declare class PauseSignalsManager {
4
+ private signals;
5
+ private _paused;
6
+ constructor(initialPaused: boolean);
7
+ get paused(): boolean;
8
+ register(signal: ReactiveSignal<any, any>): void;
9
+ unregister(signal: ReactiveSignal<any, any>): void;
10
+ setPaused(value: boolean): void;
11
+ }
12
+ export declare function PauseSignalsProvider({ value, children }: {
13
+ value: boolean;
14
+ children: React.ReactNode;
15
+ }): React.FunctionComponentElement<React.ProviderProps<PauseSignalsManager | null>>;
16
+ export declare function usePauseSignalsManager(): PauseSignalsManager | null;
17
+ export {};
18
+ //# sourceMappingURL=pause-signals-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-signals-context.d.ts","sourceRoot":"","sources":["../../../src/react/pause-signals-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,cAAM,mBAAmB;IACvB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAU;gBAEb,aAAa,EAAE,OAAO;IAIlC,IAAI,MAAM,YAET;IAED,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;IAIzC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;IAI3C,SAAS,CAAC,KAAK,EAAE,OAAO;CAYzB;AAID,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,mFAatG;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Register a per-request {@link SignalScope} for server `reactive()` / `task()` / `relay()` using
3
+ * React's `cache` (same lifetime as other per-request memoization in RSC / Flight).
4
+ *
5
+ * Call **once** per server bundle before any server-side reactive work (e.g. top of root layout or
6
+ * `instrumentation.ts`). Safe to call multiple times; the last registration wins.
7
+ *
8
+ * Requires **React 19+** (`React.cache`). Does not run in the browser: import this module only from
9
+ * server code paths.
10
+ */
11
+ export declare function setupRscRequestScope(): void;
12
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/react/server.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}
@@ -1,8 +1,37 @@
1
- import { Signal, ReactivePromise } from '../types.js';
2
- type Narrowable = string | number | boolean | null | undefined | bigint | symbol | {};
3
- export declare function useReactive<R>(signal: Signal<R>): R;
4
- export declare function useReactive<R>(signal: ReactivePromise<R>): ReactivePromise<R>;
5
- export declare function useReactive<R, Args extends readonly Narrowable[]>(fn: (...args: Args) => R, ...args: Args): R;
6
- export declare function useReactiveDeep<R, Args extends readonly Narrowable[]>(fn: (...args: Args) => R, ...args: Args): R;
7
- export {};
1
+ import { ReactiveValue } from '../types.js';
2
+ /**
3
+ * Subscribe to a reactive thunk without structural cloning. The thunk's
4
+ * `ReactiveDefinition` is memoized by fn identity in a `WeakMap`, so a
5
+ * memoized thunk (via `useCallback` or the Signalium Babel preset) reuses the
6
+ * same scope-cached signal across renders.
7
+ *
8
+ * This is a minimal wrapper: the returned value is whatever the thunk
9
+ * returned, by reference. In particular, when the thunk returns a
10
+ * `ReactivePromise`, re-renders only fire when the underlying signal itself
11
+ * re-evaluates (e.g. a new promise replaces the old one) — not when the
12
+ * existing promise transitions from pending to resolved. If you need promise
13
+ * state transitions to drive React, read its fields inside the thunk (e.g.
14
+ * `useReactiveShallow(() => { const p = fetchThing(); return { value: p.value,
15
+ * isPending: p.isPending }; })`) or use {@link useReactive} for the
16
+ * structurally-shared snapshot that handles this automatically.
17
+ */
18
+ export declare function useReactiveShallow<R>(fn: () => R): ReactiveValue<R>;
19
+ /**
20
+ * Subscribe to a reactive thunk and return a structurally-shared snapshot of
21
+ * its value. Nested objects/arrays/Maps/Sets are deep-cloned; unchanged
22
+ * subtrees keep the same reference, so React's referential equality works as
23
+ * expected. ReactivePromise values are flattened to plain objects.
24
+ *
25
+ * This is the default hook for reading reactive values inside a React
26
+ * component — it gives you safe equality semantics at the React boundary.
27
+ * Use {@link useReactiveShallow} if you know you don't need structural
28
+ * sharing.
29
+ */
30
+ export declare function useReactive<R>(fn: () => R): ReactiveValue<R>;
31
+ /**
32
+ * @deprecated Use {@link useReactive} instead. `useReactive` is now
33
+ * deep-by-default; `useReactiveDeep` is a thin alias kept for back-compat and
34
+ * will be removed in a future major release.
35
+ */
36
+ export declare function useReactiveDeep<R>(fn: () => R): ReactiveValue<R>;
8
37
  //# sourceMappingURL=use-reactive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-reactive.d.ts","sourceRoot":"","sources":["../../../src/react/use-reactive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,MAAM,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AA0ErF,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AAEtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/E,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AAwB/G,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAuCjH"}
1
+ {"version":3,"file":"use-reactive.d.ts","sourceRoot":"","sources":["../../../src/react/use-reactive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0B5C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAanE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CA4C5D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAKhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/transform/async.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,SAAS,EAAc,MAAM,aAAa,CAAC;AAGnE,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACnC;AAkGD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;AACpG,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/transform/async.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,SAAS,EAAc,MAAM,aAAa,CAAC;AAGnE,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACnC;AAsGD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;AACpG,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/transform/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,SAAS,EAAc,MAAM,aAAa,CAAC;AAG9E,MAAM,WAAW,iCAAiC;IAChD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAiWD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,iCAAiC,GAAG,SAAS,CAAC;AAC1G,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iCAAiC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC"}
1
+ {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/transform/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,SAAS,EAAc,MAAM,aAAa,CAAC;AAG9E,MAAM,WAAW,iCAAiC;IAChD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAoXD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,iCAAiC,GAAG,SAAS,CAAC;AAC1G,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iCAAiC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC"}
@@ -2,4 +2,5 @@ export { signaliumPreset } from './preset.js';
2
2
  export { signaliumAsyncTransform } from './async.js';
3
3
  export { signaliumCallbackTransform } from './callback.js';
4
4
  export { signaliumPromiseMethodsTransform } from './promise.js';
5
+ export { signaliumUseReactiveTransform } from './use-reactive.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC"}
@@ -3,6 +3,7 @@ export interface SignaliumTransformOptions {
3
3
  importPaths?: (string | RegExp)[];
4
4
  callbackImportPath?: string;
5
5
  promiseImportPath?: string;
6
+ reactImportPath?: string;
6
7
  }
7
8
  export declare function signaliumPreset(api: any, opts?: SignaliumTransformOptions): any;
8
9
  export declare function signaliumPreset(opts?: SignaliumTransformOptions): (api: any) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../src/transform/preset.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAsBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,GAAG,CAAC;AACjF,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../src/transform/preset.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA2BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,GAAG,CAAC;AACjF,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PluginObj } from '@babel/core';
2
+ export interface SignaliumUseReactiveTransformOptions {
3
+ transformedImports: [string, string | RegExp][];
4
+ importPaths?: (string | RegExp)[];
5
+ reactImportPath?: string;
6
+ }
7
+ export declare function signaliumUseReactiveTransform(api: any, opts?: SignaliumUseReactiveTransformOptions): PluginObj;
8
+ export declare function signaliumUseReactiveTransform(opts?: SignaliumUseReactiveTransformOptions): (api: any) => PluginObj;
9
+ //# sourceMappingURL=use-reactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-reactive.d.ts","sourceRoot":"","sources":["../../../src/transform/use-reactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,SAAS,EAAc,MAAM,aAAa,CAAC;AAGnE,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA8MD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,oCAAoC,GAAG,SAAS,CAAC;AAChH,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,oCAAoC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC"}
@@ -11,7 +11,6 @@ export interface Watcher<T> {
11
11
  addListener(listener: () => void, opts?: {
12
12
  skipInitial?: boolean;
13
13
  }): () => void;
14
- setSuspended(suspended: boolean): void;
15
14
  }
16
15
  export interface Notifier {
17
16
  consume(): void;
@@ -38,28 +37,52 @@ export interface SignalOptions<T> {
38
37
  export interface ReactiveOptions<T, Params extends unknown[]> extends SignalOptions<T> {
39
38
  paramKey?: (...params: Params) => string | number;
40
39
  }
41
- export interface ReactivePromise<T> extends Promise<T> {
42
- readonly value: T | undefined;
40
+ /**
41
+ * Internal shape shared by both branches of the {@link ReactivePromise} union.
42
+ * Not part of the public API — consumers should use {@link ReactivePromise},
43
+ * {@link PendingReactivePromise}, or {@link ReadyReactivePromise}.
44
+ */
45
+ export interface BaseReactivePromise<T> extends Promise<T> {
43
46
  readonly error: unknown;
44
47
  readonly isPending: boolean;
45
48
  readonly isRejected: boolean;
46
49
  readonly isResolved: boolean;
47
50
  readonly isSettled: boolean;
48
- readonly isReady: boolean;
49
51
  }
50
- export interface PendingReactivePromise<T> extends ReactivePromise<T> {
52
+ export interface PendingReactivePromise<T> extends BaseReactivePromise<T> {
51
53
  readonly value: undefined;
52
54
  readonly isReady: false;
53
55
  }
54
- export interface ReadyReactivePromise<T> extends ReactivePromise<T> {
56
+ export interface ReadyReactivePromise<T> extends BaseReactivePromise<T> {
55
57
  readonly value: T;
56
58
  readonly isReady: true;
57
59
  }
58
- export type DiscriminatedReactivePromise<T> = PendingReactivePromise<T> | ReadyReactivePromise<T>;
59
- export type ReactiveTask<T, Params extends unknown[]> = DiscriminatedReactivePromise<T> & {
60
- run(...params: Params): DiscriminatedReactivePromise<T>;
60
+ export type ReactivePromise<T> = PendingReactivePromise<T> | ReadyReactivePromise<T>;
61
+ export interface ReactivePromiseConstructor {
62
+ readonly prototype: ReactivePromise<any>;
63
+ new <T>(executor?: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason: unknown) => void) => void): ReactivePromise<T>;
64
+ all<T extends readonly unknown[] | []>(values: T): ReactivePromise<{
65
+ -readonly [P in keyof T]: Awaited<T[P]>;
66
+ }>;
67
+ race<T extends readonly unknown[] | []>(values: T): ReactivePromise<Awaited<T[number]>>;
68
+ any<T>(values: Iterable<T | PromiseLike<T>>): ReactivePromise<Awaited<T>>;
69
+ any<T extends readonly unknown[] | []>(values: T): ReactivePromise<Awaited<T[number]>>;
70
+ allSettled<T>(values: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]>;
71
+ allSettled<T extends readonly unknown[] | []>(values: T): Promise<{
72
+ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>;
73
+ }>;
74
+ resolve<T>(value: T): ReactivePromise<T>;
75
+ reject<T = never>(reason: any): ReactivePromise<T>;
76
+ withResolvers<T>(): {
77
+ promise: ReactivePromise<T>;
78
+ resolve: (value: T | PromiseLike<T>) => void;
79
+ reject: (reason: unknown) => void;
80
+ };
81
+ }
82
+ export type ReactiveTask<T, Params extends unknown[]> = ReactivePromise<T> & {
83
+ run(...params: Params): ReactivePromise<T>;
61
84
  };
62
- export type ReactiveValue<T> = T extends ReactiveTask<infer U, infer Args> ? ReactiveTask<U, Args> : T extends Promise<infer U> ? DiscriminatedReactivePromise<U> : T extends Generator<any, infer U> ? DiscriminatedReactivePromise<U> : T;
85
+ export type ReactiveValue<T> = T extends ReactiveTask<infer U, infer Args> ? ReactiveTask<U, Args> : T extends Promise<infer U> ? ReactivePromise<U> : T extends Generator<any, infer U> ? ReactivePromise<U> : T;
63
86
  export interface Context<T> {
64
87
  readonly defaultValue: T;
65
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;AAExF,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAEzG,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACpF,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAErF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;IAEzC,KAAK,CAAC,EACJ,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,GACnG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEtB,GAAG,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC;QAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,CAAC;IAChH,IAAI,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,GAAG,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvF,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjG,UAAU,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,EAC1C,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;QAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACnD,aAAa,CAAC,CAAC,KAAK;QAClB,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC7C,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACnC,CAAC;CACH;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;IAC3E,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAEzB,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,GACvC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,GACrB,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACxB,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAC/B,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,CAAC;AAEZ,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;CAC1B"}
@@ -1,6 +1,6 @@
1
1
  export { hashValue, registerCustomHash } from './internals/utils/hash.js';
2
2
  export { snapshot, registerCustomSnapshot } from './internals/utils/snapshot.js';
3
- import { RelayState, DiscriminatedReactivePromise } from './types.js';
3
+ import { RelayState, ReactivePromise } from './types.js';
4
4
  /**
5
5
  * Watches a function once in a reactive context, activating any relays,
6
6
  * then automatically tears down the watcher when complete.
@@ -55,5 +55,5 @@ export { setReactivePromise } from './internals/async.js';
55
55
  * });
56
56
  * ```
57
57
  */
58
- export declare function forwardRelay<T>(state: RelayState<T>, sourceRelay: DiscriminatedReactivePromise<T>): void;
58
+ export declare function forwardRelay<T>(state: RelayState<T>, sourceRelay: ReactivePromise<T>): void;
59
59
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAQjF,OAAO,EAAiB,UAAU,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAwB3C;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI,CA8BxG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAQjF,OAAO,EAAiB,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAwB3C;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CA8B3F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "signalium",
3
- "version": "2.3.2",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -68,6 +68,20 @@
68
68
  "default": "./dist/esm/production/debug.js"
69
69
  },
70
70
  "./react": {
71
+ "react-server": {
72
+ "types": "./dist/esm/react/index.server.d.ts",
73
+ "development": {
74
+ "import": "./dist/esm/development/react/index.server.js",
75
+ "require": "./dist/cjs/development/react/index.server.js"
76
+ },
77
+ "production": {
78
+ "import": "./dist/esm/production/react/index.server.js",
79
+ "require": "./dist/cjs/production/react/index.server.js"
80
+ },
81
+ "import": "./dist/esm/production/react/index.server.js",
82
+ "require": "./dist/cjs/production/react/index.server.js",
83
+ "default": "./dist/esm/production/react/index.server.js"
84
+ },
71
85
  "types": "./dist/esm/react/index.d.ts",
72
86
  "development": {
73
87
  "import": "./dist/esm/development/react/index.js",
@@ -81,6 +95,20 @@
81
95
  "require": "./dist/cjs/production/react/index.js",
82
96
  "default": "./dist/esm/production/react/index.js"
83
97
  },
98
+ "./react/server": {
99
+ "types": "./dist/esm/react/server.d.ts",
100
+ "development": {
101
+ "import": "./dist/esm/development/react/server.js",
102
+ "require": "./dist/cjs/development/react/server.js"
103
+ },
104
+ "production": {
105
+ "import": "./dist/esm/production/react/server.js",
106
+ "require": "./dist/cjs/production/react/server.js"
107
+ },
108
+ "import": "./dist/esm/production/react/server.js",
109
+ "require": "./dist/cjs/production/react/server.js",
110
+ "default": "./dist/esm/production/react/server.js"
111
+ },
84
112
  "./transform": {
85
113
  "types": "./dist/esm/transform/index.d.ts",
86
114
  "development": {
@@ -101,6 +129,7 @@
101
129
  "dist/esm/**",
102
130
  "dist/cjs/**",
103
131
  "react.js",
132
+ "react-server.js",
104
133
  "transform.js",
105
134
  "debug.js",
106
135
  "utils.js",
@@ -110,7 +139,7 @@
110
139
  "LICENSE*"
111
140
  ],
112
141
  "peerDependencies": {
113
- "react": ">=18.3.1"
142
+ "react": ">=19.0.0"
114
143
  },
115
144
  "peerDependenciesMeta": {
116
145
  "react": {
@@ -137,12 +166,14 @@
137
166
  "author": "Kristen Hewell Garrett <me@pzuraq.com>",
138
167
  "license": "ISC",
139
168
  "devDependencies": {
169
+ "@types/react": "^19.0.0",
170
+ "@types/react-dom": "^19.0.0",
140
171
  "@babel/core": "^7.23.6",
141
172
  "@vitejs/plugin-react": "^5.0.0",
142
173
  "@vitest/browser": "^3.0.6",
143
174
  "playwright": "^1.50.1",
144
- "react": "^18.3.1",
145
- "react-dom": "^18.3.1",
175
+ "react": "^19.0.0",
176
+ "react-dom": "^19.0.0",
146
177
  "vite": "^7.1.2",
147
178
  "vite-plugin-babel": "^1.3.0",
148
179
  "vitest": "^3.2.4",
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', {
3
+ value: true,
4
+ });
5
+ var _index = require('./dist/cjs/production/react/server.js');
6
+ Object.keys(_index).forEach(function (key) {
7
+ if (key === 'default' || key === '__esModule') return;
8
+ if (key in exports && exports[key] === _index[key]) return;
9
+ Object.defineProperty(exports, key, {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _index[key];
13
+ },
14
+ });
15
+ });