signalium 3.0.2 → 3.0.3
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.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/development/{component-shared-Cug2Y5YZ.js → component-shared-DzjqSRY-.js} +2 -2
- package/dist/cjs/development/{component-shared-Cug2Y5YZ.js.map → component-shared-DzjqSRY-.js.map} +1 -1
- package/dist/cjs/development/{debug-C46WDxhL.js → debug-CDy1L3Id.js} +14 -13
- package/dist/cjs/development/debug-CDy1L3Id.js.map +1 -0
- package/dist/cjs/development/debug.js +1 -1
- package/dist/cjs/development/index.js +2 -2
- package/dist/cjs/development/react/index.js +4 -4
- package/dist/cjs/development/react/index.js.map +1 -1
- package/dist/cjs/development/react/index.server.js +1 -1
- package/dist/cjs/development/react/server.js +1 -1
- package/dist/cjs/development/{snapshot-CbZ6IH3B.js → snapshot-D8Ydfj9E.js} +2 -2
- package/dist/cjs/development/{snapshot-CbZ6IH3B.js.map → snapshot-D8Ydfj9E.js.map} +1 -1
- package/dist/cjs/development/utils.js +2 -2
- package/dist/cjs/production/{component-shared-D0J85PUi.js → component-shared-BuDl2V-v.js} +2 -2
- package/dist/cjs/production/{component-shared-D0J85PUi.js.map → component-shared-BuDl2V-v.js.map} +1 -1
- package/dist/cjs/production/{contexts-CM3QLfV8.js → contexts-CMvA-Ae9.js} +14 -13
- package/dist/cjs/production/contexts-CMvA-Ae9.js.map +1 -0
- package/dist/cjs/production/debug.js +1 -1
- package/dist/cjs/production/index.js +2 -2
- package/dist/cjs/production/react/index.js +4 -4
- package/dist/cjs/production/react/index.js.map +1 -1
- package/dist/cjs/production/react/index.server.js +1 -1
- package/dist/cjs/production/react/server.js +1 -1
- package/dist/cjs/production/{snapshot-DWwH7_9y.js → snapshot-I8W4cb8t.js} +2 -2
- package/dist/cjs/production/{snapshot-DWwH7_9y.js.map → snapshot-I8W4cb8t.js.map} +1 -1
- package/dist/cjs/production/utils.js +2 -2
- package/dist/esm/development/{component-shared-CLSmdnGU.js → component-shared-D_i2IMKF.js} +2 -2
- package/dist/esm/development/{component-shared-CLSmdnGU.js.map → component-shared-D_i2IMKF.js.map} +1 -1
- package/dist/esm/development/{debug-BTLbgTPK.js → debug-DCgp_XPm.js} +14 -13
- package/dist/esm/development/debug-DCgp_XPm.js.map +1 -0
- package/dist/esm/development/debug.js +1 -1
- package/dist/esm/development/index.js +2 -2
- package/dist/esm/development/react/index.js +4 -4
- package/dist/esm/development/react/index.js.map +1 -1
- package/dist/esm/development/react/index.server.js +1 -1
- package/dist/esm/development/react/server.js +1 -1
- package/dist/esm/development/{snapshot-CkndI4Hh.js → snapshot-D19Mgcgz.js} +2 -2
- package/dist/esm/development/{snapshot-CkndI4Hh.js.map → snapshot-D19Mgcgz.js.map} +1 -1
- package/dist/esm/development/utils.js +4 -4
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/async.d.ts.map +1 -1
- package/dist/esm/internals/scheduling.d.ts +2 -1
- package/dist/esm/internals/scheduling.d.ts.map +1 -1
- package/dist/esm/internals/watch.d.ts +3 -2
- package/dist/esm/internals/watch.d.ts.map +1 -1
- package/dist/esm/production/{component-shared-Dva0S5e3.js → component-shared-XZnx53QZ.js} +2 -2
- package/dist/esm/production/{component-shared-Dva0S5e3.js.map → component-shared-XZnx53QZ.js.map} +1 -1
- package/dist/esm/production/{contexts-FxCndlvf.js → contexts-Cpo7QZDe.js} +14 -13
- package/dist/esm/production/contexts-Cpo7QZDe.js.map +1 -0
- package/dist/esm/production/debug.js +1 -1
- package/dist/esm/production/index.js +2 -2
- package/dist/esm/production/react/index.js +4 -4
- package/dist/esm/production/react/index.js.map +1 -1
- package/dist/esm/production/react/index.server.js +1 -1
- package/dist/esm/production/react/server.js +1 -1
- package/dist/esm/production/{snapshot-CdCaJJ0L.js → snapshot-CZTu3qTo.js} +2 -2
- package/dist/esm/production/{snapshot-CdCaJJ0L.js.map → snapshot-CZTu3qTo.js.map} +1 -1
- package/dist/esm/production/utils.js +4 -4
- package/dist/esm/types.d.ts +20 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/development/debug-C46WDxhL.js.map +0 -1
- package/dist/cjs/production/contexts-CM3QLfV8.js.map +0 -1
- package/dist/esm/development/debug-BTLbgTPK.js.map +0 -1
- package/dist/esm/production/contexts-FxCndlvf.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# signalium
|
|
2
2
|
|
|
3
|
+
## 3.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- bad3258: `RelayHooks.deactivate` now receives a `DeactivateOptions` object with an `isPausing` flag, distinguishing a temporary pause (e.g. `PauseSignalsProvider`) from a genuine cleanup. Relays can use it to skip destructive work like garbage collection while pausing. `DeactivateOptions` is exported.
|
|
8
|
+
|
|
3
9
|
## 3.0.2
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const debug = require("./debug-
|
|
2
|
+
const debug = require("./debug-CDy1L3Id.js");
|
|
3
3
|
function isGeneratorFunction(fn) {
|
|
4
4
|
return typeof fn === "function" && fn.constructor?.name === "GeneratorFunction";
|
|
5
5
|
}
|
|
@@ -30,4 +30,4 @@ exports.createServerAsyncComponentWrapper = createServerAsyncComponentWrapper;
|
|
|
30
30
|
exports.createServerSyncComponentWrapper = createServerSyncComponentWrapper;
|
|
31
31
|
exports.isAsyncFunctionWithoutTransform = isAsyncFunctionWithoutTransform;
|
|
32
32
|
exports.isGeneratorFunction = isGeneratorFunction;
|
|
33
|
-
//# sourceMappingURL=component-shared-
|
|
33
|
+
//# sourceMappingURL=component-shared-DzjqSRY-.js.map
|
package/dist/cjs/development/{component-shared-Cug2Y5YZ.js.map → component-shared-DzjqSRY-.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-shared-
|
|
1
|
+
{"version":3,"file":"component-shared-DzjqSRY-.js","sources":["../../../.tsc-out/react/component-shared.js"],"sourcesContent":["import { getCurrentConsumer, setCurrentConsumer } from '../internals/consumer.js';\nimport { getCurrentScope } from '../internals/contexts.js';\nimport { createReactiveSignal } from '../internals/reactive.js';\nimport { generatorResultToPromiseWithConsumer } from '../internals/generators.js';\nexport function isGeneratorFunction(fn) {\n return (typeof fn === 'function' && fn.constructor?.name === 'GeneratorFunction');\n}\nexport function isAsyncFunctionWithoutTransform(fn) {\n return typeof fn === 'function' && fn.constructor?.name === 'AsyncFunction';\n}\n/**\n * Wrap a Babel-transformed async generator in a real `async function` that drives it\n * with {@link generatorResultToPromiseWithConsumer}. Used on the server (RSC + SSR)\n * where hooks-based Suspense replay is not appropriate.\n */\nexport function createServerAsyncComponentWrapper(fn) {\n return async function (props) {\n const scope = getCurrentScope();\n const owned = createReactiveSignal({ compute: () => null, equals: () => true, isRelay: false, tracer: undefined }, [], undefined, scope);\n return generatorResultToPromiseWithConsumer(fn(props), owned);\n };\n}\n/**\n * Wrap a sync render function with consumer/scope tracking. Used by the server\n * `component()` for non-generator definitions.\n */\nexport function createServerSyncComponentWrapper(fn) {\n return function (props) {\n const scope = getCurrentScope();\n const owned = createReactiveSignal({ compute: () => null, equals: () => true, isRelay: false, tracer: undefined }, [], undefined, scope);\n const prevConsumer = getCurrentConsumer();\n try {\n setCurrentConsumer(owned);\n return fn(props);\n }\n finally {\n setCurrentConsumer(prevConsumer);\n }\n };\n}\n"],"names":["getCurrentScope","createReactiveSignal","generatorResultToPromiseWithConsumer","getCurrentConsumer","setCurrentConsumer"],"mappings":";;AAIO,SAAS,oBAAoB,IAAI;AACpC,SAAQ,OAAO,OAAO,cAAc,GAAG,aAAa,SAAS;AACjE;AACO,SAAS,gCAAgC,IAAI;AAChD,SAAO,OAAO,OAAO,cAAc,GAAG,aAAa,SAAS;AAChE;AAMO,SAAS,kCAAkC,IAAI;AAClD,SAAO,eAAgB,OAAO;AAC1B,UAAM,QAAQA,MAAAA,gBAAe;AAC7B,UAAM,QAAQC,MAAAA,qBAAqB,EAAE,SAAS,MAAM,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,QAAQ,OAAS,GAAI,CAAA,GAAI,QAAW,KAAK;AACvI,WAAOC,2CAAqC,GAAG,KAAK,GAAG,KAAK;AAAA,EAChE;AACJ;AAKO,SAAS,iCAAiC,IAAI;AACjD,SAAO,SAAU,OAAO;AACpB,UAAM,QAAQF,MAAAA,gBAAe;AAC7B,UAAM,QAAQC,MAAAA,qBAAqB,EAAE,SAAS,MAAM,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,QAAQ,OAAS,GAAI,CAAA,GAAI,QAAW,KAAK;AACvI,UAAM,eAAeE,MAAAA,mBAAkB;AACvC,QAAI;AACAC,YAAAA,mBAAmB,KAAK;AACxB,aAAO,GAAG,KAAK;AAAA,IACnB,UACR;AACYA,YAAAA,mBAAmB,YAAY;AAAA,IACnC;AAAA,EACJ;AACJ;;;;;"}
|
|
@@ -428,12 +428,12 @@ function watchSignal(signal2) {
|
|
|
428
428
|
}
|
|
429
429
|
activateSignal(signal2);
|
|
430
430
|
}
|
|
431
|
-
function unwatchSignal(signal2) {
|
|
431
|
+
function unwatchSignal(signal2, options = {}) {
|
|
432
432
|
const { watchCount } = signal2;
|
|
433
433
|
const newWatchCount = Math.max(watchCount - 1, 0);
|
|
434
434
|
signal2.watchCount = newWatchCount;
|
|
435
435
|
if (newWatchCount === 0) {
|
|
436
|
-
scheduleDeactivate(signal2);
|
|
436
|
+
scheduleDeactivate(signal2, options);
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
439
|
function activateSignal(signal2) {
|
|
@@ -443,22 +443,22 @@ function activateSignal(signal2) {
|
|
|
443
443
|
checkSignal(signal2);
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
|
-
function deactivateSignal(signal2) {
|
|
446
|
+
function deactivateSignal(signal2, options = {}) {
|
|
447
447
|
signal2._isActive = false;
|
|
448
448
|
for (const dep of signal2.deps.keys()) {
|
|
449
449
|
const newWatchCount = Math.max(dep.watchCount - 1, 0);
|
|
450
450
|
dep.watchCount = newWatchCount;
|
|
451
451
|
if (newWatchCount === 0) {
|
|
452
|
-
deactivateSignal(dep);
|
|
452
|
+
deactivateSignal(dep, options);
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
if (isRelay(signal2)) {
|
|
456
|
-
signal2._value?.();
|
|
456
|
+
signal2._value?.(options);
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
let PENDING_PULLS = /* @__PURE__ */ new Set();
|
|
460
460
|
let PENDING_ASYNC_PULLS = [];
|
|
461
|
-
let PENDING_DEACTIVE = /* @__PURE__ */ new
|
|
461
|
+
let PENDING_DEACTIVE = /* @__PURE__ */ new Map();
|
|
462
462
|
let PENDING_LISTENERS = [];
|
|
463
463
|
let PENDING_TRACERS = [];
|
|
464
464
|
const microtask = () => Promise.resolve();
|
|
@@ -482,8 +482,9 @@ const scheduleAsyncPull = (signal2) => {
|
|
|
482
482
|
PENDING_ASYNC_PULLS.push(signal2);
|
|
483
483
|
scheduleFlush();
|
|
484
484
|
};
|
|
485
|
-
const scheduleDeactivate = (signal2) => {
|
|
486
|
-
PENDING_DEACTIVE.
|
|
485
|
+
const scheduleDeactivate = (signal2, options = {}) => {
|
|
486
|
+
const existing = PENDING_DEACTIVE.get(signal2);
|
|
487
|
+
PENDING_DEACTIVE.set(signal2, existing === void 0 ? options : { isPausing: Boolean(existing.isPausing && options.isPausing) });
|
|
487
488
|
scheduleFlush();
|
|
488
489
|
};
|
|
489
490
|
const cancelDeactivate = (signal2) => {
|
|
@@ -518,8 +519,8 @@ const flushWatchers = async () => {
|
|
|
518
519
|
}
|
|
519
520
|
currentFlush = null;
|
|
520
521
|
config.runBatch(() => {
|
|
521
|
-
for (const signal2 of PENDING_DEACTIVE) {
|
|
522
|
-
deactivateSignal(signal2);
|
|
522
|
+
for (const [signal2, options] of PENDING_DEACTIVE) {
|
|
523
|
+
deactivateSignal(signal2, options);
|
|
523
524
|
}
|
|
524
525
|
PENDING_DEACTIVE.clear();
|
|
525
526
|
for (const signal2 of PENDING_LISTENERS) {
|
|
@@ -1299,11 +1300,11 @@ function createRelay(activate, scope, opts) {
|
|
|
1299
1300
|
const p = new ReactivePromiseImpl();
|
|
1300
1301
|
let active = false;
|
|
1301
1302
|
let currentSub;
|
|
1302
|
-
const unsubscribe = () => {
|
|
1303
|
+
const unsubscribe = (options) => {
|
|
1303
1304
|
if (typeof currentSub === "function") {
|
|
1304
1305
|
currentSub();
|
|
1305
1306
|
} else if (currentSub !== void 0) {
|
|
1306
|
-
currentSub.deactivate?.();
|
|
1307
|
+
currentSub.deactivate?.(options);
|
|
1307
1308
|
}
|
|
1308
1309
|
const signal2 = p["_signal"];
|
|
1309
1310
|
signal2.subs = /* @__PURE__ */ new Map();
|
|
@@ -2166,4 +2167,4 @@ exports.signal = signal;
|
|
|
2166
2167
|
exports.unwatchSignal = unwatchSignal;
|
|
2167
2168
|
exports.watchSignal = watchSignal;
|
|
2168
2169
|
exports.withContexts = withContexts;
|
|
2169
|
-
//# sourceMappingURL=debug-
|
|
2170
|
+
//# sourceMappingURL=debug-CDy1L3Id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-CDy1L3Id.js","sources":["../../../.tsc-out/internals/utils/debug-name.js","../../../.tsc-out/internals/trace.js","../../../.tsc-out/internals/consumer.js","../../../.tsc-out/internals/utils/equals.js","../../../.tsc-out/internals/signal.js","../../../.tsc-out/internals/watch.js","../../../.tsc-out/internals/scheduling.js","../../../.tsc-out/internals/dirty.js","../../../.tsc-out/internals/edge.js","../../../.tsc-out/internals/utils/type-utils.js","../../../.tsc-out/internals/generators.js","../../../.tsc-out/internals/callback.js","../../../.tsc-out/internals/async.js","../../../.tsc-out/internals/get.js","../../../.tsc-out/internals/utils/hash.js","../../../.tsc-out/internals/utils/stringify.js","../../../.tsc-out/internals/reactive.js","../../../.tsc-out/internals/contexts.js"],"sourcesContent":["let UNKNOWN_SIGNAL_ID = 0;\nconst UNKNOWN_SIGNAL_NAMES = new Map();\nexport function getUnknownSignalFnName(fn) {\n let name = UNKNOWN_SIGNAL_NAMES.get(fn);\n if (name === undefined) {\n name = `unknownSignal${UNKNOWN_SIGNAL_ID++}`;\n UNKNOWN_SIGNAL_NAMES.set(fn, name);\n }\n return name;\n}\n","import { scheduleTracer } from './scheduling.js';\nlet TRACER;\nexport const getTracerProxy = () => {\n return TRACER;\n};\nexport var TracerEventType;\n(function (TracerEventType) {\n TracerEventType[\"StartUpdate\"] = \"StartUpdate\";\n TracerEventType[\"EndUpdate\"] = \"EndUpdate\";\n TracerEventType[\"StartLoading\"] = \"StartLoading\";\n TracerEventType[\"EndLoading\"] = \"EndLoading\";\n TracerEventType[\"Connected\"] = \"Connected\";\n TracerEventType[\"Disconnected\"] = \"Disconnected\";\n TracerEventType[\"ConsumeState\"] = \"ConsumeState\";\n})(TracerEventType || (TracerEventType = {}));\nexport var SignalType;\n(function (SignalType) {\n SignalType[\"State\"] = \"state\";\n SignalType[\"Reactive\"] = \"reactive\";\n SignalType[\"Watcher\"] = \"watcher\";\n})(SignalType || (SignalType = {}));\nexport class VisualizerNode {\n tracer;\n depth;\n type;\n id;\n value;\n name;\n params;\n _setValue;\n subscribers = [];\n nextStateChildren = [];\n stateChildren = [];\n children = [];\n updating = true;\n loading = false;\n version = 0;\n updatingVersion = 0;\n didConnect = false;\n constructor(tracer, depth, type, id, value, name, params, _setValue) {\n this.tracer = tracer;\n this.depth = depth;\n this.type = type;\n this.id = id;\n this.value = value;\n this.name = name;\n this.params = params;\n this._setValue = _setValue;\n this.tracer.maxDepth = Math.max(this.tracer.maxDepth, this.depth);\n }\n get showParams() {\n return this.tracer.showParams;\n }\n get showValue() {\n return this.tracer.showValue;\n }\n get interactive() {\n return this.tracer.interactive;\n }\n setValue(value) {\n if (this.type !== SignalType.State) {\n throw new Error('setValue is only allowed on state nodes');\n }\n this._setValue?.(value);\n this.notify();\n // scheduleTracer(this.tracer);\n }\n connectChild(child) {\n let childLink = this.children.find(link => link.node.id === child.id || (link.node.name === child.name && link.version !== this.updatingVersion));\n let shouldSkip = false;\n if (childLink) {\n if (!child.didConnect) {\n child.value = childLink.node.value;\n child.children = childLink.node.children.map(link => ({\n ...link,\n version: child.version,\n }));\n }\n childLink.node = child;\n childLink.connected = true;\n childLink.version = this.updatingVersion;\n shouldSkip = true;\n }\n else {\n this.children.push({\n connected: true,\n node: child,\n version: this.updatingVersion,\n });\n }\n child.didConnect = true;\n this.notify();\n return shouldSkip;\n }\n disconnectChild(childId) {\n const childLink = this.children.find(link => link.node.id === childId);\n if (!childLink) {\n return;\n }\n childLink.connected = false;\n this.notify();\n }\n startUpdate() {\n this.updating = true;\n this.updatingVersion++;\n this.notify();\n }\n endUpdate(value, preserveChildren = false) {\n this.updating = false;\n this.value = value;\n if (!preserveChildren) {\n this.stateChildren = this.nextStateChildren;\n }\n this.nextStateChildren = [];\n this.notify();\n }\n startLoading() {\n this.loading = true;\n this.notify();\n }\n endLoading(value) {\n this.loading = false;\n this.value = value;\n this.notify();\n }\n consumeState(id, name, value, setValue) {\n const existing = this.stateChildren.find(child => child.id === id);\n if (existing) {\n existing.value = value;\n this.nextStateChildren.push(existing);\n existing.notify();\n }\n else {\n const node = new VisualizerNode(this.tracer, this.depth + 1, SignalType.State, id, value, name, undefined, setValue);\n node.updating = false;\n this.nextStateChildren.push(node);\n }\n }\n notify() {\n this.version++;\n for (const subscriber of this.subscribers) {\n subscriber();\n }\n }\n subscribe(subscriber) {\n this.subscribers.push(subscriber);\n return () => {\n this.subscribers = this.subscribers.filter(s => s !== subscriber);\n };\n }\n}\nlet ID = 0;\nclass TraceFlush {\n forceComplete = false;\n promise;\n id = ID++;\n constructor(tracer, queue, previousFlush) {\n this.promise = this.runFlush(tracer, queue, previousFlush);\n }\n complete() {\n this.forceComplete = true;\n return this.promise;\n }\n async runFlush(tracer, queue, previousFlush) {\n if (previousFlush) {\n await previousFlush.complete();\n }\n for (let i = 0; i < queue.length; i++) {\n const event = queue[i];\n const nextEvent = queue[i + 1];\n const skipDelay = tracer.handleEvent(event, nextEvent);\n if (!this.forceComplete && !skipDelay && tracer.delay > 0 && !document.hidden) {\n await new Promise(resolve => setTimeout(resolve, tracer.delay));\n }\n }\n }\n}\nexport class Tracer {\n showParams;\n showValue;\n interactive;\n nodeMap = new Map();\n delay = 200;\n maxDepth = 0;\n initialized = false;\n constructor(id, immediate = false, showParams = true, showValue = true, interactive = true) {\n this.showParams = showParams;\n this.showValue = showValue;\n this.interactive = interactive;\n // If it's immediate, we should run the first flush immediately, skipping animations\n this.initialized = !immediate;\n const node = new VisualizerNode(this, 0, SignalType.Watcher, id, '');\n this.rootNode = node;\n this.nodeMap.set(id, node);\n }\n rootNode;\n eventQueue = [];\n currentFlush;\n emit(event) {\n if (event.type === TracerEventType.Connected || event.type === TracerEventType.ConsumeState) {\n const node = this.nodeMap.get(event.id);\n if (!node || (event.type === TracerEventType.Connected && !event.name)) {\n return;\n }\n if (!this.nodeMap.has(event.childId)) {\n const name = event.type === TracerEventType.Connected ? event.name : undefined;\n const params = event.type === TracerEventType.Connected ? event.params : undefined;\n const nodeType = event.type === TracerEventType.Connected ? event.nodeType : SignalType.State;\n this.nodeMap.set(event.childId, new VisualizerNode(this, node.depth + 1, nodeType, event.childId, '', name, params));\n }\n }\n if (event.type === TracerEventType.StartLoading || event.type === TracerEventType.EndLoading) {\n scheduleTracer(this);\n }\n if (this.initialized) {\n this.eventQueue.push(event);\n }\n else {\n this.handleEvent(event);\n }\n }\n handleEvent(event, nextEvent) {\n const node = this.nodeMap.get(event.id);\n if (!node) {\n return true;\n }\n let skipDelay = nextEvent?.type === TracerEventType.StartLoading;\n if (event.type === TracerEventType.Connected) {\n let child = this.nodeMap.get(event.childId);\n if (!child) {\n throw new Error(`Child node ${event.childId} not found`);\n }\n skipDelay = node.connectChild(child);\n }\n else if (event.type === TracerEventType.Disconnected) {\n node.disconnectChild(event.childId);\n }\n else if (event.type === TracerEventType.StartUpdate) {\n node.startUpdate();\n if (nextEvent &&\n nextEvent.id === event.id &&\n (nextEvent.type === TracerEventType.EndUpdate || nextEvent.type === TracerEventType.StartLoading)) {\n skipDelay = true;\n }\n }\n else if (event.type === TracerEventType.EndUpdate) {\n node.endUpdate(event.value, event.preserveChildren);\n }\n else if (event.type === TracerEventType.StartLoading) {\n node.startLoading();\n skipDelay = true;\n }\n else if (event.type === TracerEventType.EndLoading) {\n node.endLoading(event.value);\n }\n else if (event.type === TracerEventType.ConsumeState) {\n node.consumeState(event.childId, event.name, event.value, event.setValue);\n }\n return skipDelay;\n }\n async flush() {\n if (this.eventQueue.length === 0) {\n return;\n }\n this.currentFlush = new TraceFlush(this, this.eventQueue, this.currentFlush);\n this.eventQueue = [];\n }\n addListener(listener) {\n this.initialized = true;\n return this.rootNode.subscribe(listener);\n }\n}\nclass TracerProxy {\n tracers = [];\n constructor() { }\n emit(event) {\n this.tracers.forEach(tracer => tracer.emit(event));\n }\n createTracer(id, immediate = false) {\n const tracer = new Tracer(id, immediate);\n this.tracers.push(tracer);\n return tracer;\n }\n removeTracer(tracer) {\n this.tracers = this.tracers.filter(t => t !== tracer);\n }\n flush() {\n this.tracers.forEach(tracer => tracer.flush());\n }\n}\nexport function setTracing(enabled) {\n if (enabled) {\n TRACER = new TracerProxy();\n }\n else {\n TRACER = undefined;\n }\n}\nexport function createTracer(_signal, immediate = false) {\n const signal = _signal;\n return createTracerFromId(signal.tracerMeta.id, immediate);\n}\nexport function createTracerFromId(id, immediate = false) {\n if (!TRACER) {\n throw new Error('Tracing is not enabled');\n }\n return TRACER.createTracer(id, immediate);\n}\nexport function removeTracer(tracer) {\n if (!TRACER) {\n throw new Error('Tracing is not enabled');\n }\n TRACER.removeTracer(tracer);\n}\n","let CURRENT_CONSUMER;\nlet IS_WATCHING = false;\nexport const setIsWatching = (isWatching) => {\n IS_WATCHING = isWatching;\n};\nexport const setCurrentConsumer = (consumer) => {\n CURRENT_CONSUMER = consumer;\n};\nexport const getCurrentConsumer = () => {\n return CURRENT_CONSUMER;\n};\nexport const getIsWatching = () => {\n return IS_WATCHING;\n};\nexport const untrack = (fn) => {\n const prevConsumer = CURRENT_CONSUMER;\n CURRENT_CONSUMER = undefined;\n try {\n return fn();\n }\n finally {\n CURRENT_CONSUMER = prevConsumer;\n }\n};\n","export const DEFAULT_EQUALS = (a, b) => a === b;\nexport const FALSE_EQUALS = () => false;\nexport const equalsFrom = (equals) => {\n if (equals === false) {\n return FALSE_EQUALS;\n }\n return equals ?? DEFAULT_EQUALS;\n};\n","import { getTracerProxy, TracerEventType } from './trace.js';\nimport { dirtySignal } from './dirty.js';\nimport { getCurrentConsumer } from './consumer.js';\nimport { scheduleListeners } from './scheduling.js';\nimport { FALSE_EQUALS } from './utils/equals.js';\nlet STATE_ID = 0;\nconst SIGNAL_BRAND = Symbol.for('signalium.signal');\nexport function isSignal(value) {\n return typeof value === 'object' && value !== null && value[SIGNAL_BRAND] === true;\n}\nexport class StateSignal {\n [SIGNAL_BRAND] = true;\n _value;\n _equals;\n _subs = new Map();\n _desc;\n _id;\n _listeners = null;\n constructor(value, equals = (a, b) => a === b, desc = 'signal') {\n this._value = value;\n this._equals = equals;\n if (IS_DEV) {\n this._id = STATE_ID++;\n this._desc = desc;\n }\n }\n get value() {\n this.consume();\n return this._value;\n }\n update(fn) {\n this.value = fn(this._value);\n }\n set value(value) {\n if (this._equals(value, this._value)) {\n return;\n }\n this._value = value;\n this.notify();\n }\n consume() {\n const currentConsumer = getCurrentConsumer();\n if (currentConsumer !== undefined) {\n if (IS_DEV) {\n const tracer = getTracerProxy();\n tracer?.emit({\n type: TracerEventType.ConsumeState,\n id: currentConsumer.tracerMeta.id,\n name: this._desc,\n childId: this._id,\n value: this._value,\n setValue: (value) => {\n this.value = value;\n },\n });\n }\n this._subs.set(currentConsumer.ref, currentConsumer.computedCount);\n }\n }\n notify() {\n const { _subs: subs } = this;\n for (const [subRef, consumedAt] of subs.entries()) {\n const sub = subRef.deref();\n if (sub === undefined || consumedAt !== sub.computedCount) {\n continue;\n }\n dirtySignal(sub);\n }\n this._subs.clear();\n scheduleListeners(this);\n }\n addListener(listener) {\n let listeners = this._listeners;\n if (listeners === null) {\n this._listeners = listeners = new Set();\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n}\nexport function runListeners(signal) {\n const listeners = signal['_listeners'];\n if (listeners === null) {\n return;\n }\n for (const listener of listeners) {\n listener();\n }\n}\nexport function signal(initialValue, opts) {\n const equals = opts?.equals === false ? FALSE_EQUALS : (opts?.equals ?? ((a, b) => a === b));\n return new StateSignal(initialValue, equals, opts?.desc);\n}\nexport const notifier = (opts) => {\n return new StateSignal(undefined, FALSE_EQUALS, opts?.desc);\n};\n","import { isRelay } from './reactive.js';\nimport { checkSignal } from './get.js';\nimport { cancelDeactivate, scheduleDeactivate } from './scheduling.js';\nexport function watchSignal(signal) {\n const { watchCount } = signal;\n signal.watchCount = watchCount + 1;\n cancelDeactivate(signal);\n if (signal._isActive) {\n return;\n }\n for (const dep of signal.deps.keys()) {\n watchSignal(dep);\n }\n activateSignal(signal);\n}\nexport function unwatchSignal(signal, options = {}) {\n const { watchCount } = signal;\n const newWatchCount = Math.max(watchCount - 1, 0);\n signal.watchCount = newWatchCount;\n if (newWatchCount === 0) {\n scheduleDeactivate(signal, options);\n }\n}\nexport function activateSignal(signal) {\n cancelDeactivate(signal);\n signal._isActive = true;\n if (isRelay(signal)) {\n checkSignal(signal);\n }\n}\nexport function deactivateSignal(signal, options = {}) {\n signal._isActive = false;\n for (const dep of signal.deps.keys()) {\n const newWatchCount = Math.max(dep.watchCount - 1, 0);\n dep.watchCount = newWatchCount;\n if (newWatchCount === 0) {\n deactivateSignal(dep, options);\n }\n }\n if (isRelay(signal)) {\n signal._value?.(options);\n }\n}\n","import { scheduleFlush as _scheduleFlush, runBatch } from './config.js';\nimport { ReactiveSignal } from './reactive.js';\nimport { checkAndRunListeners, checkSignal } from './get.js';\nimport { runListeners as runDerivedListeners } from './reactive.js';\nimport { runListeners as runStateListeners } from './signal.js';\nimport { deactivateSignal } from './watch.js';\nlet PENDING_PULLS = new Set();\nlet PENDING_ASYNC_PULLS = [];\n// Maps each pending signal to its deactivation context (pause vs cleanup).\n// Clean wins on conflict.\nlet PENDING_DEACTIVE = new Map();\nlet PENDING_LISTENERS = [];\nlet PENDING_TRACERS = IS_DEV ? [] : undefined;\nconst microtask = () => Promise.resolve();\nlet currentFlush = null;\nconst scheduleFlush = (fn) => {\n if (currentFlush)\n return;\n let resolve;\n const promise = new Promise(r => (resolve = r));\n currentFlush = { promise, resolve: resolve };\n _scheduleFlush(flushWatchers);\n};\nexport const schedulePull = (signal) => {\n PENDING_PULLS.add(signal);\n scheduleFlush(flushWatchers);\n};\nexport const cancelPull = (signal) => {\n PENDING_PULLS.delete(signal);\n};\nexport const scheduleAsyncPull = (signal) => {\n PENDING_ASYNC_PULLS.push(signal);\n scheduleFlush(flushWatchers);\n};\nexport const scheduleDeactivate = (signal, options = {}) => {\n const existing = PENDING_DEACTIVE.get(signal);\n // A genuine cleanup must never be downgraded to a pause: if this signal was\n // already scheduled as a clean, keep it a clean.\n PENDING_DEACTIVE.set(signal, existing === undefined ? options : { isPausing: Boolean(existing.isPausing && options.isPausing) });\n scheduleFlush(flushWatchers);\n};\nexport const cancelDeactivate = (signal) => {\n PENDING_DEACTIVE.delete(signal);\n};\nexport const scheduleListeners = (signal) => {\n PENDING_LISTENERS.push(signal);\n scheduleFlush(flushWatchers);\n};\nexport const scheduleTracer = (tracer) => {\n if (IS_DEV) {\n PENDING_TRACERS.push(tracer);\n scheduleFlush(flushWatchers);\n }\n};\nconst flushWatchers = async () => {\n const flush = currentFlush;\n if (!flush)\n return;\n // Flush all auto-pulled signals recursively, clearing\n // the microtask queue until they are all settled\n while (PENDING_ASYNC_PULLS.length > 0 || PENDING_PULLS.size > 0) {\n const asyncPulls = PENDING_ASYNC_PULLS;\n PENDING_ASYNC_PULLS = [];\n for (const pull of asyncPulls) {\n checkSignal(pull);\n }\n const pulls = PENDING_PULLS;\n PENDING_PULLS = new Set();\n for (const pull of pulls) {\n checkAndRunListeners(pull);\n }\n // This is used to tell the scheduler to wait if any async values have been resolved\n // since the last tick. If they have, we wait an extra microtask to ensure that the\n // async values have recursivey flushed before moving on to pulling watchers.\n await microtask();\n }\n // Clear the flush so that if any more watchers are scheduled,\n // they will be flushed in the next tick\n currentFlush = null;\n runBatch(() => {\n for (const [signal, options] of PENDING_DEACTIVE) {\n deactivateSignal(signal, options);\n }\n PENDING_DEACTIVE.clear();\n for (const signal of PENDING_LISTENERS) {\n if (signal instanceof ReactiveSignal) {\n runDerivedListeners(signal);\n }\n else {\n runStateListeners(signal);\n }\n }\n if (IS_DEV) {\n for (const tracer of PENDING_TRACERS) {\n tracer.flush();\n }\n PENDING_TRACERS = [];\n }\n PENDING_LISTENERS = [];\n });\n // resolve the flush promise\n flush.resolve();\n};\nexport const settled = async () => {\n while (currentFlush) {\n await currentFlush.promise;\n }\n};\nlet _pendingAsyncCount = 0;\nlet _pendingAsyncResolvers = [];\nexport const trackPendingStart = () => {\n _pendingAsyncCount++;\n};\nexport const trackPendingEnd = () => {\n _pendingAsyncCount--;\n if (_pendingAsyncCount === 0) {\n const resolvers = _pendingAsyncResolvers;\n _pendingAsyncResolvers = [];\n for (const resolve of resolvers)\n resolve();\n }\n};\nexport const asyncSettled = async (timeout = 100) => {\n const deadline = Date.now() + timeout;\n while (true) {\n await settled();\n if (_pendingAsyncCount === 0)\n break;\n const remaining = deadline - Date.now();\n if (remaining <= 0) {\n throw new Error(`asyncSettled timed out: ${_pendingAsyncCount} reactive promises still pending after ${timeout}ms`);\n }\n await Promise.race([\n new Promise(resolve => _pendingAsyncResolvers.push(resolve)),\n new Promise((_, reject) => setTimeout(() => reject(new Error(`asyncSettled timed out: ${_pendingAsyncCount} reactive promises still pending after ${timeout}ms`)), remaining)),\n ]);\n }\n};\nexport const batch = (fn) => {\n const prevFlush = currentFlush;\n let resolve;\n const promise = new Promise(r => (resolve = r));\n currentFlush = { promise, resolve: resolve };\n fn();\n flushWatchers();\n if (prevFlush) {\n promise.then(prevFlush.resolve);\n }\n};\n","import { scheduleAsyncPull, schedulePull } from './scheduling.js';\nimport { isRelay } from './reactive.js';\nimport { getCurrentConsumer } from './consumer.js';\nexport function dirtySignal(signal) {\n const prevState = signal._state;\n if (prevState === 2 /* ReactiveFnState.Dirty */) {\n return;\n }\n signal._state = 2 /* ReactiveFnState.Dirty */;\n if (prevState < 3 /* ReactiveFnState.MaybeDirty */) {\n propagateDirty(signal);\n }\n}\nfunction propagateDirty(signal) {\n if (getCurrentConsumer() === signal) {\n throw new Error('A signal was dirtied after it was consumed by the current function. This can cause race conditions and infinite rerenders and is not allowed.');\n }\n if (isRelay(signal)) {\n if (signal.watchCount > 0) {\n scheduleAsyncPull(signal);\n }\n // else do nothing, only schedule if connected\n }\n else {\n if (signal._isListener && signal.watchCount > 0) {\n schedulePull(signal);\n }\n dirtySignalConsumers(signal.subs);\n signal.subs.clear();\n }\n}\nexport function dirtySignalConsumers(map) {\n for (const [subRef, edge] of map) {\n const sub = subRef.deref();\n if (sub === undefined || sub.computedCount !== edge.consumedAt)\n continue;\n const dirtyState = sub._state;\n switch (dirtyState) {\n case 0 /* ReactiveFnState.Clean */:\n sub._state = 3 /* ReactiveFnState.MaybeDirty */;\n sub.dirtyHead = edge;\n edge.nextDirty = undefined;\n propagateDirty(sub);\n break;\n case 1 /* ReactiveFnState.Pending */:\n case 3 /* ReactiveFnState.MaybeDirty */:\n case 4 /* ReactiveFnState.PendingDirty */: {\n let subEdge = sub.dirtyHead;\n const ord = edge.ord;\n if (subEdge.ord > ord) {\n sub.dirtyHead = edge;\n edge.nextDirty = subEdge;\n if (dirtyState === 1 /* ReactiveFnState.Pending */ || dirtyState === 4 /* ReactiveFnState.PendingDirty */) {\n // If the signal is pending, the first edge is the halt edge. If the\n // new dirty edge is BEFORE the halt edge, then it means that something\n // changed before the current halt, so we need to cancel the current computation\n // and recompute.\n sub._state = 3 /* ReactiveFnState.MaybeDirty */;\n propagateDirty(sub);\n }\n }\n else {\n let nextDirty = subEdge.nextDirty;\n while (nextDirty !== undefined && nextDirty.ord < ord) {\n subEdge = nextDirty;\n nextDirty = subEdge.nextDirty;\n }\n if (IS_DEV && edge === nextDirty) {\n throw new Error('Edge already inserted, this should not happen. Please open an issue on GitHub.');\n }\n edge.nextDirty = nextDirty;\n subEdge.nextDirty = edge;\n }\n break;\n }\n }\n }\n}\n","let CURRENT_ORD = 0;\nexport class EdgeBase {\n type;\n dep;\n ord;\n updatedAt;\n consumedAt;\n nextDirty;\n constructor(type, dep, updatedAt, consumedAt) {\n this.type = type;\n this.dep = dep;\n this.ord = CURRENT_ORD++;\n this.updatedAt = updatedAt;\n this.consumedAt = consumedAt;\n this.nextDirty = undefined;\n }\n}\nexport function createEdge(prevEdge, type, dep, updatedAt, consumedAt) {\n if (prevEdge === undefined) {\n return new EdgeBase(type, dep, updatedAt, consumedAt);\n }\n prevEdge.ord = CURRENT_ORD++;\n prevEdge.updatedAt = updatedAt;\n prevEdge.consumedAt = consumedAt;\n prevEdge.nextDirty = undefined;\n return prevEdge;\n}\nexport function findAndRemoveDirty(sub, dep) {\n let edge = sub.dirtyHead;\n if (edge === undefined) {\n return undefined;\n }\n if (edge.dep === dep) {\n sub.dirtyHead = edge.nextDirty;\n return edge;\n }\n let nextLink = edge.nextDirty;\n while (nextLink !== undefined) {\n if (nextLink.dep === dep) {\n edge.nextDirty = nextLink.nextDirty;\n return nextLink;\n }\n edge = nextLink;\n nextLink = edge.nextDirty;\n }\n return undefined;\n}\n","export const unreachable = (value) => {\n throw new Error(`Unreachable code: ${value}`);\n};\nconst GeneratorResultConstructor = (function* () { })().constructor;\nexport function isGeneratorResult(value) {\n return value.constructor === GeneratorResultConstructor;\n}\nexport function isPromise(value) {\n return value.constructor === Promise;\n}\nexport function isThennable(value) {\n return value !== null && typeof value === 'object' && typeof value.then === 'function';\n}\n","import { isReactivePromise } from './async.js';\nimport { getCurrentConsumer, setCurrentConsumer } from './consumer.js';\nimport { getInternalCurrentScope, setCurrentScope } from './contexts.js';\nimport { isPromise } from './utils/type-utils.js';\nexport function generatorResultToPromiseWithConsumer(generator, savedConsumer) {\n function adopt(value) {\n return typeof value === 'object' && value !== null && (isPromise(value) || isReactivePromise(value))\n ? value\n : Promise.resolve(value);\n }\n return new Promise((resolve, reject) => {\n function step(fn, value) {\n const prevConsumer = getCurrentConsumer();\n try {\n setCurrentConsumer(savedConsumer);\n const result = fn(value);\n if (result.done) {\n resolve(result.value);\n }\n else {\n adopt(result.value).then(fulfilled, rejected);\n }\n }\n catch (e) {\n reject(e);\n }\n finally {\n setCurrentConsumer(prevConsumer);\n }\n }\n const nextFn = generator.next.bind(generator);\n const throwFn = generator.throw.bind(generator);\n function fulfilled(value) {\n step(nextFn, value);\n }\n function rejected(value) {\n step(throwFn, value);\n }\n step(nextFn);\n });\n}\nexport function generatorResultToPromiseWithScope(generator, savedScope) {\n function adopt(value) {\n return typeof value === 'object' && value !== null && (isPromise(value) || isReactivePromise(value))\n ? value\n : Promise.resolve(value);\n }\n return new Promise((resolve, reject) => {\n function step(fn, value) {\n const prevScope = getInternalCurrentScope();\n try {\n setCurrentScope(savedScope);\n const result = fn(value);\n if (result.done) {\n resolve(result.value);\n }\n else {\n adopt(result.value).then(fulfilled, rejected);\n }\n }\n catch (e) {\n reject(e);\n }\n finally {\n setCurrentScope(prevScope);\n }\n }\n const nextFn = generator.next.bind(generator);\n const throwFn = generator.throw.bind(generator);\n function fulfilled(value) {\n step(nextFn, value);\n }\n function rejected(value) {\n step(throwFn, value);\n }\n step(nextFn);\n });\n}\n","import { getCurrentConsumer } from './consumer.js';\nimport { getCurrentScope, getInternalCurrentScope, setCurrentScope } from './contexts.js';\nimport { generatorResultToPromiseWithScope } from './generators.js';\nimport { isGeneratorResult } from './utils/type-utils.js';\nlet CURRENT_CALLBACK = undefined;\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport class Callback {\n scope;\n deps;\n _callbacks;\n fn;\n constructor(fn, scope, deps) {\n this.deps = deps;\n this.scope = scope;\n this.setFn(fn);\n }\n get callbacks() {\n return this._callbacks ?? (this._callbacks = []);\n }\n setFn(fn) {\n this.fn = ((...args) => {\n const scope = this.scope;\n const prevScope = getInternalCurrentScope();\n const prevCallback = CURRENT_CALLBACK;\n try {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n CURRENT_CALLBACK = this;\n setCurrentScope(scope);\n const result = fn(...args);\n return typeof result === 'object' && result !== null && isGeneratorResult(result)\n ? generatorResultToPromiseWithScope(result, scope)\n : result;\n }\n finally {\n CURRENT_CALLBACK = prevCallback;\n setCurrentScope(prevScope);\n }\n });\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function createCallback(fn, scope, deps) {\n return new Callback(fn, scope, deps);\n}\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function callback(fn, idx, deps) {\n let callbacks;\n if (CURRENT_CALLBACK !== undefined) {\n callbacks = CURRENT_CALLBACK.callbacks;\n }\n else {\n const currentConsumer = getCurrentConsumer();\n if (currentConsumer === undefined) {\n throw new Error('callback must be used within a reactive function, component, or nested callback');\n }\n callbacks = currentConsumer.callbacks ?? (currentConsumer.callbacks = []);\n }\n let callback = callbacks[idx];\n if (callback === undefined) {\n callback = callbacks[idx] = createCallback(fn, getCurrentScope(), deps);\n }\n else if (deps && callback.deps?.findIndex((dep, i) => dep !== deps[i]) !== -1) {\n callback.setFn(fn);\n callback.deps = deps;\n }\n return callback.fn;\n}\n","import { createReactiveSignal } from './reactive.js';\nimport { disconnectSignal, getSignal } from './get.js';\nimport { dirtySignal, dirtySignalConsumers } from './dirty.js';\nimport { scheduleAsyncPull, trackPendingStart, trackPendingEnd } from './scheduling.js';\nimport { createEdge, findAndRemoveDirty } from './edge.js';\nimport { signal } from './signal.js';\nimport { DEFAULT_EQUALS, equalsFrom } from './utils/equals.js';\nimport { getCurrentConsumer } from './consumer.js';\nimport { createCallback } from './callback.js';\nimport { getTracerProxy, TracerEventType } from './trace.js';\nconst arrayFrom = Array.from;\nfunction isThenable(v) {\n return v !== null && typeof v === 'object' && typeof v.then === 'function';\n}\nfunction thenLoop(v, onFulfill, onReject) {\n if (isThenable(v)) {\n v.then(onFulfill, onReject);\n }\n else {\n onFulfill(v);\n }\n}\nexport class ReactivePromiseImpl {\n _value = undefined;\n _error = undefined;\n _flags = 1 /* AsyncFlags.Pending */;\n _signal = undefined;\n _equals = DEFAULT_EQUALS;\n _promise;\n _pending = [];\n _stateSubs = new Map();\n _awaitSubs = new Map();\n _updatedCount = 0;\n // Version is not really needed in a pure signal world, but when integrating\n // with non-signal code, it's sometimes needed to entangle changes to the promise.\n // For example, in React we need to entangle each promise immediately after it\n // was used because we can't dynamically call hooks.\n _version = signal(0);\n // Private but exposed for the ReactiveTask interface so we don't have to create a new\n // class and make all this code polypmorphic\n run = undefined;\n constructor(executor) {\n setReactivePromise(this);\n // If an executor is provided, behave like Promise constructor\n if (executor) {\n const resolve = (value) => {\n if (value && typeof value.then === 'function') {\n this._setPromise(value);\n }\n else {\n this._setValue(value);\n }\n };\n const reject = (reason) => {\n this._setError(reason);\n };\n try {\n executor(resolve, reject);\n }\n catch (e) {\n reject(e);\n }\n }\n }\n static all(values) {\n const p = new ReactivePromiseImpl();\n const arr = arrayFrom(values);\n const len = arr.length;\n if (len === 0) {\n p._setValue([]);\n return p;\n }\n const results = new Array(len);\n let remaining = len;\n let rejected = false;\n const onFulfillAt = (i) => (v) => {\n if (rejected)\n return;\n results[i] = v;\n if (--remaining === 0)\n p._setValue(results);\n };\n const onReject = (r) => {\n if (rejected)\n return;\n rejected = true;\n p._setError(r);\n };\n for (let i = 0; i < len; i++) {\n thenLoop(arr[i], onFulfillAt(i), onReject);\n }\n return p;\n }\n static race(values) {\n const p = new ReactivePromiseImpl();\n const arr = arrayFrom(values);\n const len = arr.length;\n if (len === 0)\n return p;\n let settled = false;\n const onFulfill = (v) => {\n if (settled)\n return;\n settled = true;\n p._setValue(v);\n };\n const onReject = (r) => {\n if (settled)\n return;\n settled = true;\n p._setError(r);\n };\n for (let i = 0; i < len; i++) {\n thenLoop(arr[i], onFulfill, onReject);\n }\n return p;\n }\n static any(values) {\n const p = new ReactivePromiseImpl();\n const arr = arrayFrom(values);\n const len = arr.length;\n if (len === 0) {\n // Like native Promise.any([]): reject with AggregateError\n p._setError(new AggregateError([], 'No promises were provided to ReactivePromise.any'));\n return p;\n }\n let pending = len;\n const errors = new Array(len);\n let fulfilled = false;\n const onFulfill = (value) => {\n if (fulfilled)\n return;\n fulfilled = true;\n p._setValue(value);\n };\n const onRejectAt = (index) => (reason) => {\n if (fulfilled)\n return;\n errors[index] = reason;\n if (--pending === 0) {\n p._setError(new AggregateError(errors, 'All promises were rejected in ReactivePromise.any'));\n }\n };\n for (let i = 0; i < len; i++) {\n thenLoop(arr[i], onFulfill, onRejectAt(i));\n }\n return p;\n }\n static allSettled(values) {\n const p = new ReactivePromiseImpl();\n const arr = arrayFrom(values);\n const len = arr.length;\n if (len === 0) {\n p._setValue([]);\n return p;\n }\n const results = new Array(len);\n let remaining = len;\n const onFulfillAt = (index) => (value) => {\n results[index] = { status: 'fulfilled', value };\n if (--remaining === 0)\n p._setValue(results);\n };\n const onRejectAt = (index) => (reason) => {\n results[index] = { status: 'rejected', reason };\n if (--remaining === 0)\n p._setValue(results);\n };\n for (let i = 0; i < len; i++) {\n thenLoop(arr[i], onFulfillAt(i), onRejectAt(i));\n }\n return p;\n }\n static resolve(value) {\n if (value instanceof ReactivePromiseImpl)\n return value;\n return new ReactivePromiseImpl(resolve => resolve(value));\n }\n static reject(reason) {\n return new ReactivePromiseImpl((_resolve, reject) => reject(reason));\n }\n static withResolvers() {\n const p = new ReactivePromiseImpl();\n p._equals = DEFAULT_EQUALS;\n p._initFlags(1 /* AsyncFlags.Pending */);\n const resolve = (value) => {\n if (value && typeof value.then === 'function') {\n p._setPromise(value);\n }\n else {\n p._setValue(value);\n }\n };\n const reject = (reason) => {\n p._setError(reason);\n };\n return { promise: p, resolve, reject };\n }\n _initFlags(baseFlags) {\n if (IS_DEV) {\n const tracer = getTracerProxy();\n if (tracer !== undefined && this._signal !== undefined && (baseFlags & 1 /* AsyncFlags.Pending */) !== 0) {\n tracer.emit({\n type: TracerEventType.StartLoading,\n id: this._signal.tracerMeta.id,\n });\n }\n }\n if (IS_LOCAL_DEV) {\n if (baseFlags & 1 /* AsyncFlags.Pending */) {\n trackPendingStart();\n }\n }\n this._flags = baseFlags;\n }\n _consumeFlags(flags) {\n const currentConsumer = getCurrentConsumer();\n if (currentConsumer === undefined)\n return;\n if ((this._flags & 128 /* AsyncFlags.isRelay */) !== 0) {\n this._connect();\n }\n const ref = currentConsumer.ref;\n const subs = this._stateSubs;\n const subbedFlags = subs.get(ref) ?? 0;\n subs.set(ref, subbedFlags | flags);\n }\n _connect() {\n const signal = this._signal;\n const currentConsumer = getCurrentConsumer();\n // A relay's update function may read its own ReactivePromise (e.g. to check\n // isPending/value). Skip self-subscription to avoid a dependency cycle.\n if (currentConsumer === signal)\n return;\n if (currentConsumer?.watchCount === 0) {\n const { ref, computedCount, deps } = currentConsumer;\n const prevEdge = deps.get(signal);\n if (prevEdge?.consumedAt !== computedCount) {\n const newEdge = createEdge(prevEdge, 0 /* EdgeType.Signal */, signal, signal.updatedCount, computedCount);\n signal.subs.set(ref, newEdge);\n deps.set(signal, newEdge);\n }\n }\n else {\n getSignal(signal);\n }\n }\n _setFlags(setTrue, setFalse = 0, notify = 0) {\n const prevFlags = this._flags;\n const nextFlags = (prevFlags & ~setFalse) | setTrue;\n const allChanged = (prevFlags ^ nextFlags) | notify;\n this._flags = nextFlags;\n if (IS_LOCAL_DEV) {\n const pendingChanged = allChanged & 1 /* AsyncFlags.Pending */;\n if (pendingChanged) {\n if (nextFlags & 1 /* AsyncFlags.Pending */) {\n trackPendingStart();\n }\n else {\n trackPendingEnd();\n }\n }\n }\n if (allChanged === 0) {\n return;\n }\n if ((allChanged & (16 /* AsyncFlags.Value */ | 32 /* AsyncFlags.Error */)) !== 0) {\n this._updatedCount++;\n }\n const subs = this._stateSubs;\n for (const [signalRef, subbedFlags] of subs) {\n if ((subbedFlags & allChanged) !== 0) {\n const signal = signalRef.deref();\n if (signal) {\n dirtySignal(signal);\n }\n subs.delete(signalRef);\n }\n }\n this._version.update(v => v + 1);\n if (IS_DEV) {\n const tracer = getTracerProxy();\n if (tracer !== undefined && this._signal !== undefined) {\n if (setTrue & 1 /* AsyncFlags.Pending */ && allChanged & 1 /* AsyncFlags.Pending */) {\n tracer.emit({\n type: TracerEventType.StartLoading,\n id: this._signal.tracerMeta.id,\n });\n }\n else if (setFalse & 1 /* AsyncFlags.Pending */ && allChanged & 1 /* AsyncFlags.Pending */) {\n tracer.emit({\n type: TracerEventType.EndLoading,\n id: this._signal.tracerMeta.id,\n value: isRelay(this) ? '...' : this._value,\n });\n }\n }\n }\n }\n _getPending() {\n return (this._flags & 1 /* AsyncFlags.Pending */) !== 0;\n }\n _setPending() {\n if (this._getPending()) {\n return this._awaitSubs;\n }\n this._setFlags(1 /* AsyncFlags.Pending */);\n // We need to dirty the consumers of the promise so that we insert the promise edge\n // into the dirty list of the consumers. This way, when the reactive function is\n // called again, it will see the promise edge and halt computation. This way we\n // ensure that we recompute the promises _in order_, without calling subsequent\n // dirty promises until the previous promise is resolved.\n dirtySignalConsumers(this._awaitSubs);\n return (this._awaitSubs = new Map());\n }\n _clearPending() {\n this._setValue(this._value);\n }\n async _setPromise(promise) {\n // Store the current promise so we can check if it's the same promise in the\n // then handlers. If it's not the same promise, it means that the promise has\n // been recomputed and replaced, so we should not update state.\n this._promise = promise;\n const flags = this._flags;\n let awaitSubs = this._awaitSubs;\n try {\n // If we were not already pending, we need to propagate the dirty state to any\n // consumers that were added since the promise was resolved last.\n if ((flags & 1 /* AsyncFlags.Pending */) === 0) {\n awaitSubs = this._setPending();\n }\n const nextValue = await promise;\n if (promise !== this._promise) {\n return;\n }\n this._setValue(nextValue, awaitSubs);\n }\n catch (nextError) {\n if (promise !== this._promise) {\n return;\n }\n this._setError(nextError, awaitSubs);\n }\n }\n _setValue(nextValue, awaitSubs = this._awaitSubs) {\n let flags = this._flags;\n let value = this._value;\n let notifyFlags = 0;\n if ((flags & 8 /* AsyncFlags.Ready */) === 0 || this._equals(value, nextValue) === false) {\n this._value = value = nextValue;\n notifyFlags = 16 /* AsyncFlags.Value */;\n }\n if (flags & 2 /* AsyncFlags.Rejected */) {\n notifyFlags = 32 /* AsyncFlags.Error */;\n this._error = undefined;\n }\n if ((flags & 1 /* AsyncFlags.Pending */) !== 0) {\n this._scheduleSubs(awaitSubs, notifyFlags !== 0);\n }\n else if (notifyFlags !== 0) {\n dirtySignalConsumers(awaitSubs);\n }\n this._awaitSubs = awaitSubs = new Map();\n this._setFlags(4 /* AsyncFlags.Resolved */ | 8 /* AsyncFlags.Ready */, 1 /* AsyncFlags.Pending */ | 2 /* AsyncFlags.Rejected */, notifyFlags);\n const pending = this._pending;\n this._pending = [];\n const updatedAt = this._updatedCount;\n for (const { ref, edge, resolve } of pending) {\n resolve?.(value);\n if (ref !== undefined) {\n edge.updatedAt = updatedAt;\n awaitSubs.set(ref, edge);\n }\n }\n const signal = this._signal;\n if (signal !== undefined) {\n disconnectSignal(signal);\n }\n }\n _setError(nextError, awaitSubs = this._awaitSubs) {\n let error = this._error;\n let notifyFlags = 0;\n if (error !== nextError) {\n this._error = error = nextError;\n notifyFlags = 32 /* AsyncFlags.Error */;\n }\n if ((this._flags & 1 /* AsyncFlags.Pending */) !== 0) {\n this._scheduleSubs(awaitSubs, notifyFlags !== 0);\n }\n else if (notifyFlags !== 0) {\n dirtySignalConsumers(awaitSubs);\n }\n this._awaitSubs = awaitSubs = new Map();\n this._setFlags(2 /* AsyncFlags.Rejected */, 1 /* AsyncFlags.Pending */ | 4 /* AsyncFlags.Resolved */, notifyFlags);\n const pending = this._pending;\n this._pending = [];\n const updatedAt = this._updatedCount;\n for (const { ref, edge, reject } of pending) {\n reject?.(error);\n if (ref !== undefined) {\n edge.updatedAt = updatedAt;\n awaitSubs.set(ref, edge);\n }\n }\n const signal = this._signal;\n if (signal !== undefined) {\n disconnectSignal(signal);\n }\n }\n _scheduleSubs(awaitSubs, dirty) {\n /**\n * Await subscribers represent `await` statements, which is why they have a bit\n * of a different notification path in general. But this area in particular is\n * very nuanced.\n *\n * Basically, there are two places where an Await subscriber can be added:\n *\n * 1. `.then()` on the ReactivePromise, e.g. a real `await` statement\n * 2. `checkSignal` on a signal that is a dependency of the ReactivePromise\n *\n * In the first case, we're actually executing the parent function, so when it\n * halts on that `await` statement, it'll automatically start running again\n * when we resolve the promise. This is why we push that subscriber into `pending`,\n * because we don't need to notify that promise until the _next change_.\n *\n * In the second case, we're not actually executing the parent function, we're just\n * checking the signal's dependencies. So to continue \"executing\" the parent\n * function, we need to schedule it to continue where we left off.\n *\n * So the `_awaitSubs` map we're capturing here is _just_ the subscribers\n * added in the second case, which is why we schedule them eagerly.\n */\n const newState = dirty ? 2 /* ReactiveFnState.Dirty */ : 4 /* ReactiveFnState.PendingDirty */;\n for (const ref of awaitSubs.keys()) {\n const signal = ref.deref();\n if (signal === undefined) {\n continue;\n }\n signal._state = newState;\n scheduleAsyncPull(signal);\n }\n }\n get value() {\n this._consumeFlags(16 /* AsyncFlags.Value */);\n return this._value;\n }\n get error() {\n this._consumeFlags(32 /* AsyncFlags.Error */);\n return this._error;\n }\n get isPending() {\n this._consumeFlags(1 /* AsyncFlags.Pending */);\n return (this._flags & 1 /* AsyncFlags.Pending */) !== 0;\n }\n get isRejected() {\n this._consumeFlags(2 /* AsyncFlags.Rejected */);\n return (this._flags & 2 /* AsyncFlags.Rejected */) !== 0;\n }\n get isResolved() {\n this._consumeFlags(4 /* AsyncFlags.Resolved */);\n return (this._flags & 4 /* AsyncFlags.Resolved */) !== 0;\n }\n get isReady() {\n this._consumeFlags(8 /* AsyncFlags.Ready */);\n return (this._flags & 8 /* AsyncFlags.Ready */) !== 0;\n }\n get isSettled() {\n this._consumeFlags(6 /* AsyncFlags.Settled */);\n return (this._flags & 6 /* AsyncFlags.Settled */) !== 0;\n }\n then(onfulfilled, onrejected) {\n let flags = this._flags;\n // Create a new Promise that will be returned\n return new Promise((resolve, reject) => {\n let ref, edge;\n const currentConsumer = getCurrentConsumer();\n if (currentConsumer !== undefined) {\n if ((flags & 128 /* AsyncFlags.isRelay */) !== 0) {\n this._connect();\n flags = this._flags;\n }\n ref = currentConsumer.ref;\n const prevEdge = this._awaitSubs.get(ref) ?? findAndRemoveDirty(currentConsumer, this);\n edge = createEdge(prevEdge, 1 /* EdgeType.Promise */, this, this._updatedCount, currentConsumer.computedCount);\n }\n // Create wrapper functions that will call the original callbacks and then resolve/reject the new Promise\n const wrappedFulfilled = onfulfilled\n ? (value) => {\n try {\n const result = onfulfilled(value);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n }\n : resolve;\n const wrappedRejected = onrejected\n ? (reason) => {\n try {\n const result = onrejected(reason);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n }\n : reject;\n if (flags & 1 /* AsyncFlags.Pending */) {\n this._pending.push({ ref, edge, resolve: wrappedFulfilled, reject: wrappedRejected });\n }\n else {\n if (flags & 4 /* AsyncFlags.Resolved */) {\n wrappedFulfilled(this._value);\n }\n else if (flags & 2 /* AsyncFlags.Rejected */) {\n wrappedRejected(this._error);\n }\n if (ref) {\n this._awaitSubs.set(ref, edge);\n }\n }\n });\n }\n catch(onrejected) {\n return this.then(null, onrejected);\n }\n finally(onfinally) {\n return this.then(value => {\n onfinally?.();\n return value;\n }, reason => {\n onfinally?.();\n throw reason;\n });\n }\n get [Symbol.toStringTag]() {\n return `ReactivePromise`;\n }\n}\nconst REACTIVE_PROMISE_SET = new WeakSet();\n/**\n * This is a utility function to mark a value as a ReactivePromise, primarily to enable _proxy_\n * wrapping of ReactivePromises to add additional functionality (see: Signalium Query)\n */\nexport function setReactivePromise(value) {\n REACTIVE_PROMISE_SET.add(value);\n}\nexport function isReactivePromise(value) {\n return REACTIVE_PROMISE_SET.has(value);\n}\nexport function isRelay(obj) {\n return isReactivePromise(obj) && (obj['_flags'] & 128 /* AsyncFlags.isRelay */) !== 0;\n}\nexport function createPromise(promise, signal) {\n const p = new ReactivePromiseImpl();\n p['_signal'] = signal;\n p['_equals'] = signal.def.equals;\n p['_initFlags'](1 /* AsyncFlags.Pending */);\n p['_setPromise'](promise);\n return p;\n}\nexport function createRelay(activate, scope, opts) {\n const p = new ReactivePromiseImpl();\n let active = false;\n let currentSub;\n const unsubscribe = (options) => {\n if (typeof currentSub === 'function') {\n currentSub();\n }\n else if (currentSub !== undefined) {\n currentSub.deactivate?.(options);\n }\n const signal = p['_signal'];\n // Reset the signal state, preparing it for next activation\n signal.subs = new Map();\n signal._state = 2 /* ReactiveFnState.Dirty */;\n active = false;\n currentSub = undefined;\n };\n const state = {\n get isPending() {\n return (p['_flags'] & 1 /* AsyncFlags.Pending */) !== 0;\n },\n get value() {\n return p['_value'];\n },\n set value(value) {\n p['_setValue'](value);\n },\n setPromise: (promise) => {\n p['_setPromise'](promise);\n },\n setError: (error) => {\n p['_setError'](error);\n },\n };\n const def = {\n compute: () => {\n if (active === false) {\n currentSub = activate(state);\n active = true;\n }\n else if (typeof currentSub === 'function' || currentSub === undefined) {\n currentSub?.();\n currentSub = activate(state);\n }\n else {\n currentSub.update?.();\n }\n return unsubscribe;\n },\n equals: DEFAULT_EQUALS,\n isRelay: true,\n paramKey: opts?.paramKey,\n id: opts?.id,\n desc: opts?.desc,\n tracer: undefined,\n };\n p['_signal'] = createReactiveSignal(def, [], undefined, scope);\n p['_equals'] = equalsFrom(opts?.equals);\n p['_initFlags'](128 /* AsyncFlags.isRelay */ | 1 /* AsyncFlags.Pending */);\n return p;\n}\nexport function createTask(task, scope, opts) {\n const p = new ReactivePromiseImpl();\n const { fn } = createCallback(task, scope);\n p['_equals'] = equalsFrom(opts?.equals);\n p['_initFlags'](64 /* AsyncFlags.isRunnable */);\n const throwIfRunning = opts?.throwIfRunning === true;\n p['run'] = ((...args) => {\n if (throwIfRunning && (p['_flags'] & 1 /* AsyncFlags.Pending */) !== 0) {\n throw new Error('Task is already running');\n }\n p._setPromise(fn(...args));\n return p;\n });\n return p;\n}\n// We mirror the standard `Promise` pattern in lib.es5.d.ts: declare a value\n// (the constructor) and a generic type with the same name, side-by-side, in\n// the same module. This way they merge into one identifier — re-exporting\n// `{ ReactivePromise }` from `index.ts` carries both meanings.\n//\n// - The value is the implementation class cast to `ReactivePromiseConstructor`\n// (so `new ReactivePromise<T>()`, the statics, and `instanceof` are all\n// typed against the public `Pending | Ready` union with internals hidden).\n// - The type is just the public discriminated union from `types.ts`.\nexport const ReactivePromise = ReactivePromiseImpl;\n","import { createPromise, isReactivePromise } from './async.js';\nimport { getCurrentConsumer, setCurrentConsumer } from './consumer.js';\nimport { createEdge } from './edge.js';\nimport { generatorResultToPromiseWithConsumer } from './generators.js';\nimport { isRelay } from './reactive.js';\nimport { scheduleListeners, scheduleTracer } from './scheduling.js';\nimport { getTracerProxy, SignalType, TracerEventType } from './trace.js';\nimport { isGeneratorResult, isPromise } from './utils/type-utils.js';\nimport { unwatchSignal, watchSignal } from './watch.js';\nexport function getSignal(signal) {\n const currentConsumer = getCurrentConsumer();\n if (currentConsumer !== undefined) {\n const { ref, computedCount, deps } = currentConsumer;\n const prevEdge = deps.get(signal);\n const prevConsumedAt = prevEdge?.consumedAt;\n if (prevConsumedAt !== computedCount) {\n if (prevEdge === undefined) {\n if (IS_DEV) {\n getTracerProxy()?.emit({\n type: TracerEventType.Connected,\n id: currentConsumer.tracerMeta.id,\n childId: signal.tracerMeta.id,\n name: signal.tracerMeta.desc,\n params: signal.tracerMeta.params,\n nodeType: SignalType.Reactive,\n });\n }\n if (currentConsumer.watchCount > 0) {\n watchSignal(signal);\n }\n }\n const updatedAt = checkSignal(signal);\n const newEdge = createEdge(prevEdge, 0 /* EdgeType.Signal */, signal, updatedAt, computedCount);\n signal.subs.set(ref, newEdge);\n deps.set(signal, newEdge);\n }\n else {\n const updatedAt = checkSignal(signal);\n if (prevEdge !== undefined) {\n prevEdge.updatedAt = updatedAt;\n }\n }\n }\n else {\n checkSignal(signal);\n }\n return signal._value;\n}\nexport function checkSignal(signal) {\n const { ref, _state: state } = signal;\n if (state < 2 /* ReactiveFnState.Dirty */) {\n return signal.updatedCount;\n }\n if (state >= 3 /* ReactiveFnState.MaybeDirty */) {\n let edge = signal.dirtyHead;\n while (edge !== undefined) {\n if (edge.type === 1 /* EdgeType.Promise */) {\n const dep = edge.dep;\n // If the dependency is pending, then we need to propagate the pending state to the\n // parent signal, and we halt the computation here.\n if (dep._getPending()) {\n const value = signal._value;\n // Add the signal to the awaitSubs map to be notified when the promise is resolved\n dep['_awaitSubs'].set(ref, edge);\n // Propagate the pending state to the parent signal\n value._setPending();\n signal._state = 1 /* ReactiveFnState.Pending */;\n signal.dirtyHead = edge;\n // Early return to prevent the signal from being computed and to preserve the dirty state\n return signal.updatedCount;\n }\n else if (edge.updatedAt === edge.dep._updatedCount) {\n // Add the signal to the awaitSubs map as its still a dependency, just not dirty\n dep['_awaitSubs'].set(ref, edge);\n }\n else {\n signal.dirtyHead = edge.nextDirty;\n signal._state = 2 /* ReactiveFnState.Dirty */;\n break;\n }\n edge = edge.nextDirty;\n continue;\n }\n const dep = edge.dep;\n const updatedAt = checkSignal(dep);\n dep.subs.set(ref, edge);\n if (edge.updatedAt !== updatedAt) {\n signal.dirtyHead = edge.nextDirty;\n signal._state = 2 /* ReactiveFnState.Dirty */;\n break;\n }\n edge = edge.nextDirty;\n }\n }\n const newState = signal._state;\n // If the signal is dirty, we need to run it. This should always be checked\n // directly on the signal instance, because the state could have been changed\n // mid computation and not just through direct dependencies.\n if (newState === 2 /* ReactiveFnState.Dirty */) {\n if (signal._isLazy) {\n signal.updatedCount++;\n }\n else {\n runSignal(signal);\n }\n }\n else if (newState === 4 /* ReactiveFnState.PendingDirty */) {\n signal._value._clearPending();\n }\n signal._state = 0 /* ReactiveFnState.Clean */;\n signal.dirtyHead = undefined;\n if (IS_DEV && getTracerProxy() !== undefined && signal.tracerMeta?.tracer) {\n scheduleTracer(signal.tracerMeta.tracer);\n }\n return signal.updatedCount;\n}\nexport function runSignal(signal) {\n let tracer;\n if (IS_DEV) {\n tracer = getTracerProxy();\n tracer?.emit({\n type: TracerEventType.StartUpdate,\n id: signal.tracerMeta.id,\n });\n }\n const prevConsumer = getCurrentConsumer();\n const updatedCount = signal.updatedCount;\n const computedCount = ++signal.computedCount;\n try {\n setCurrentConsumer(signal);\n const initialized = updatedCount !== 0;\n const prevValue = signal._value;\n let nextValue = signal.def.compute(...signal.args);\n let valueIsPromise = false;\n if (nextValue !== null && typeof nextValue === 'object') {\n if (isGeneratorResult(nextValue)) {\n nextValue = generatorResultToPromiseWithConsumer(nextValue, signal);\n valueIsPromise = true;\n }\n else if (isPromise(nextValue)) {\n valueIsPromise = true;\n }\n }\n if (valueIsPromise) {\n if (prevValue !== null && typeof prevValue === 'object' && isReactivePromise(prevValue)) {\n // Update the AsyncSignal with the new promise. Since the value\n // returned from the function is the same AsyncSignal instance,\n // we don't need to increment the updatedCount, because the returned\n // value is the same. _setPromise will update the nested values on the\n // AsyncSignal instance, and consumers of those values will be notified\n // of the change through that.\n prevValue['_setPromise'](nextValue);\n }\n else {\n signal._value = createPromise(nextValue, signal);\n signal.updatedCount = updatedCount + 1;\n }\n }\n else {\n if (!initialized || !signal.def.equals(prevValue, nextValue)) {\n signal._value = nextValue;\n // If the signal is lazy, we don't want to increment the updatedCount, it\n // has already been updated\n signal.updatedCount = signal._isLazy ? updatedCount : updatedCount + 1;\n }\n // Disconnect the signal from all its previous dependencies synchronously\n disconnectSignal(signal, computedCount);\n }\n }\n finally {\n setCurrentConsumer(prevConsumer);\n if (IS_DEV) {\n tracer?.emit({\n type: TracerEventType.EndUpdate,\n id: signal.tracerMeta.id,\n value: isRelay(signal) ? '...' : signal._value,\n });\n }\n }\n}\nexport function disconnectSignal(signal, computedCount = signal.computedCount) {\n const { ref, deps } = signal;\n for (const [dep, edge] of deps) {\n if (edge.consumedAt !== computedCount) {\n unwatchSignal(dep);\n dep.subs.delete(ref);\n deps.delete(dep);\n // Mark disconnected dep as Dirty so it revalidates when re-read.\n // Its subscription chain is broken and it may miss notifications.\n if (dep._state < 2 /* ReactiveFnState.Dirty */) {\n dep._state = 2 /* ReactiveFnState.Dirty */;\n }\n }\n }\n}\nexport function checkAndRunListeners(signal) {\n const listeners = signal.listeners;\n let updatedCount = checkSignal(signal);\n if (listeners !== null && listeners.updatedAt !== updatedCount) {\n listeners.updatedAt = updatedCount;\n scheduleListeners(signal);\n }\n return updatedCount;\n}\n","const { log, floor, imul, abs } = Math;\nfunction hashStr(key, seed = 0) {\n let h = seed ^ key.length;\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n let i = 0;\n // Process 2 UTF-16 code units (= 32 bits) at a time\n while (i + 2 <= key.length) {\n let k = (key.charCodeAt(i) & 0xffff) | ((key.charCodeAt(i + 1) & 0xffff) << 16);\n k = imul(k, c1);\n k = (k << 15) | (k >>> 17);\n k = imul(k, c2);\n h ^= k;\n h = (h << 13) | (h >>> 19);\n h = imul(h, 5) + 0xe6546b64;\n i += 2;\n }\n // Handle odd-length strings: one remaining UTF-16 code unit\n if (key.length & 1) {\n let k = key.charCodeAt(i) & 0xffff;\n k = imul(k, c1);\n k = (k << 15) | (k >>> 17);\n k = imul(k, c2);\n h ^= k;\n }\n h ^= key.length;\n h ^= h >>> 16;\n h = imul(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = imul(h, 0xc2b2ae35);\n h ^= h >>> 16;\n return h >>> 0; // Convert to unsigned 32-bit integer\n}\nfunction hashNumber(num, seed = 0) {\n let h = num < 0 ? seed ^ 0x80000000 : seed;\n num = abs(num);\n const origNum = num;\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n // Process 4 bytes at a time\n while (num >= 0xffffffff) {\n // Extract the lowest 32 bits\n let k = num & 0xffffffff;\n num = floor(num / 0x100000000);\n k = imul(k, c1);\n k = (k << 15) | (k >>> 17);\n k = imul(k, c2);\n h ^= k;\n h = (h << 13) | (h >>> 19);\n h = imul(h, 5) + 0xe6546b64;\n }\n // Process the remaining bytes (up to 4 bytes)\n if (num > 0) {\n let k = num & 0xffffffff;\n k = imul(k, c1);\n k = (k << 15) | (k >>> 17);\n k = imul(k, c2);\n h ^= k;\n }\n // Mix in the byte-length of the original number\n const numBytes = origNum === 0 ? 1 : floor(log(origNum) / log(256)) + 1;\n h ^= numBytes;\n h ^= h >>> 16;\n h = imul(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = imul(h, 0xc2b2ae35);\n h ^= h >>> 16;\n return h >>> 0; // Convert to unsigned 32-bit integer\n}\nfunction hashArray(arr, seen) {\n let h = ARRAY;\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n // Process 4 bytes at a time\n for (const item of arr) {\n // Extract the lowest 32 bits\n let k = hashValue(item, seen);\n k = imul(k, c1);\n k = (k << 15) | (k >>> 17);\n k = imul(k, c2);\n h ^= k;\n h = (h << 13) | (h >>> 19);\n h = imul(h, 5) + 0xe6546b64;\n }\n h ^= arr.length;\n h ^= h >>> 16;\n h = imul(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = imul(h, 0xc2b2ae35);\n h ^= h >>> 16;\n return h >>> 0; // Convert to unsigned 32-bit integer\n}\nfunction hashObject(obj, seen) {\n let sum = OBJECT;\n const keys = Object.keys(obj);\n for (const key of keys) {\n sum += imul(hashValue(key, seen), 0x9e3779b9) ^ hashValue(obj[key], seen);\n }\n return sum >>> 0;\n}\nfunction hashSet(set, seen) {\n let sum = SET;\n for (const value of set) {\n sum += hashValue(value, seen);\n }\n return sum >>> 0;\n}\nfunction hashMap(map, seen) {\n let sum = MAP;\n for (const [key, value] of map) {\n sum += imul(hashValue(key, seen), 0x9e3779b9) ^ hashValue(value, seen);\n }\n return sum >>> 0;\n}\nfunction hashDate(date, _seen) {\n return hashNumber(date.getTime(), 14 /* HashType.DATE */);\n}\nfunction hashRegExp(regexp, _seen) {\n const h = hashStr(regexp.source + regexp.flags, 15 /* HashType.REGEXP */);\n return (h ^ regexp.lastIndex) >>> 0;\n}\nconst UNDEFINED = hashStr('undefined', 0 /* HashType.UNDEFINED */);\nconst NULL = hashStr('null', 1 /* HashType.NULL */);\nconst TRUE = hashStr('true', 2 /* HashType.TRUE */);\nconst FALSE = hashStr('false', 3 /* HashType.FALSE */);\nconst ARRAY = hashStr('array', 7 /* HashType.ARRAY */);\nconst OBJECT = hashStr('object', 8 /* HashType.OBJECT */);\nconst SET = hashStr('set', 13 /* HashType.SET */);\nconst MAP = hashStr('map', 12 /* HashType.MAP */);\nconst getObjectProto = Object.getPrototypeOf;\nconst PROTO_TO_HASH = new Map([\n [Object.prototype, hashObject],\n [Array.prototype, hashArray],\n [Map.prototype, hashMap],\n [Set.prototype, hashSet],\n [Date.prototype, hashDate],\n [RegExp.prototype, hashRegExp],\n]);\nexport const registerCustomHash = (ctor, hashFn) => {\n PROTO_TO_HASH.set(ctor.prototype, (obj, _seen) => hashFn(obj));\n};\nexport function hashValue(node, seen = []) {\n switch (typeof node) {\n case 'undefined':\n return UNDEFINED;\n case 'boolean':\n return node ? TRUE : FALSE;\n case 'number':\n return hashStr(String(node), 4 /* HashType.NUMBER */);\n case 'string':\n return hashStr(node, 5 /* HashType.STRING */);\n case 'bigint':\n return hashStr(node.toString(), 6 /* HashType.BIGINT */);\n case 'object': {\n if (node === null) {\n return NULL;\n }\n const index = seen.indexOf(node);\n if (index !== -1) {\n return hashStr(String(index), 11 /* HashType.CYCLE */);\n }\n const hashFn = PROTO_TO_HASH.get(getObjectProto(node));\n if (hashFn) {\n seen.push(node);\n const hash = hashFn(node, seen);\n seen.pop();\n return hash;\n }\n return getObjectHash(node);\n }\n case 'function':\n return getObjectHash(node);\n case 'symbol':\n return hashStr(node.toString(), 10 /* HashType.SYMBOL */);\n }\n}\nconst objectToHashMap = new WeakMap();\nlet nextHashMapId = 1;\nexport function getObjectHash(obj) {\n let id = objectToHashMap.get(obj);\n if (id === undefined) {\n id = hashNumber(nextHashMapId++, 9 /* HashType.REFERENCE */);\n objectToHashMap.set(obj, id);\n }\n return id;\n}\nconst EMPTY_ARRAY_HASH = hashArray([], []);\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function hashReactiveFn(fn, args) {\n const argsHash = args.length > 0 ? hashArray(args, []) : EMPTY_ARRAY_HASH;\n // Mix argsHash into fnHash using a single MurmurHash3 block round,\n // avoiding the XOR cancellation that occurs when fnHash === argsHash.\n let k = imul(argsHash, 0xcc9e2d51);\n k = (k << 15) | (k >>> 17);\n k = imul(k, 0x1b873593);\n let h = getObjectHash(fn);\n h ^= k;\n h = (h << 13) | (h >>> 19);\n return (imul(h, 5) + 0xe6546b64) >>> 0;\n}\n","const objectToIdMap = new WeakMap();\nlet nextId = 1;\nexport function getObjectId(obj) {\n let id = objectToIdMap.get(obj);\n if (id === undefined) {\n id = `obj-${nextId++}`;\n objectToIdMap.set(obj, id);\n }\n return id;\n}\n// Handle basic POJOs and arrays recursively\nfunction isPOJO(obj) {\n return Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction isPlainArray(arr) {\n return Array.isArray(arr);\n}\nexport function stringifyValue(value) {\n if (value === null)\n return 'null';\n if (value === undefined)\n return 'undefined';\n switch (typeof value) {\n case 'number':\n case 'boolean':\n case 'string':\n return String(value);\n case 'bigint':\n return value.toString();\n case 'symbol':\n return String(value);\n case 'object': {\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (isPlainArray(value)) {\n return `[${value.map(stringifyValue).join(',')}]`;\n }\n if (isPOJO(value)) {\n const entries = [\n ...Object.entries(value),\n ...Object.getOwnPropertySymbols(value).map(sym => [sym, value[sym]]),\n ].sort(([a], [b]) => (String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0));\n return `{ ${entries.map(([k, v]) => `${String(k)}: ${stringifyValue(v)}`).join(', ')} }`;\n }\n return getObjectId(value);\n }\n case 'function':\n return getObjectId(value);\n default:\n return getObjectId(value);\n }\n}\n","import { getUnknownSignalFnName } from './utils/debug-name.js';\nimport { getSignal } from './get.js';\nimport { cancelPull, schedulePull } from './scheduling.js';\nimport { hashValue } from './utils/hash.js';\nimport { stringifyValue } from './utils/stringify.js';\nimport { unwatchSignal, watchSignal } from './watch.js';\nimport { equalsFrom } from './utils/equals.js';\nlet ID = 0;\n/**\n * Unified way to create a reactive definition (protects shaping)\n */\nexport function createReactiveDefinition(id, desc, compute, equals, isRelay, paramKey, tracer) {\n const def = {\n compute,\n equals: equalsFrom(equals),\n isRelay,\n paramKey,\n tracer: undefined,\n };\n if (IS_DEV) {\n def.id = id;\n def.desc = desc;\n def.tracer = tracer;\n }\n return def;\n}\nexport class ReactiveSignal {\n // Bitmask containing state in the first 2 bits and boolean properties in the remaining bits\n flags;\n scope = undefined;\n id = ++ID;\n subs = new Map();\n deps = new Map();\n ref = new WeakRef(this);\n dirtyHead = undefined;\n updatedCount = 0;\n computedCount = 0;\n watchCount = 0;\n key;\n args;\n callbacks = undefined;\n _listeners = null;\n _value = undefined;\n tracerMeta;\n desc;\n // Reference to the shared definition\n def;\n constructor(def, args, key, scope) {\n this.flags = (def.isRelay ? 8 /* ReactiveFnFlags.isRelay */ : 0) | 2 /* ReactiveFnState.Dirty */;\n this.scope = scope;\n this.key = key;\n this.args = args;\n this.def = def;\n this.desc = def.desc;\n if (IS_DEV) {\n this.tracerMeta = {\n id: def.id ?? key ?? hashValue([def.compute, ID++]),\n desc: def.desc ?? def.compute.name ?? getUnknownSignalFnName(def.compute),\n params: args.map(arg => stringifyValue(arg)).join(', '),\n tracer: def.tracer,\n };\n }\n }\n get _state() {\n return this.flags & 7 /* ReactiveFnFlags.State */;\n }\n set _state(state) {\n this.flags = (this.flags & ~7 /* ReactiveFnFlags.State */) | state;\n }\n get _isListener() {\n return (this.flags & 16 /* ReactiveFnFlags.isListener */) !== 0;\n }\n get _isActive() {\n return (this.flags & 32 /* ReactiveFnFlags.isActive */) !== 0;\n }\n set _isActive(isActive) {\n if (isActive) {\n this.flags |= 32 /* ReactiveFnFlags.isActive */;\n }\n else {\n this.flags &= ~32 /* ReactiveFnFlags.isActive */;\n }\n }\n get _isLazy() {\n return (this.flags & 64 /* ReactiveFnFlags.isLazy */) !== 0;\n }\n set _isLazy(isLazy) {\n if (isLazy) {\n this.flags |= 64 /* ReactiveFnFlags.isLazy */;\n }\n else {\n this.flags &= ~64 /* ReactiveFnFlags.isLazy */;\n }\n }\n get listeners() {\n return (this._listeners ??\n (this._listeners = {\n updatedAt: 0,\n current: new Map(),\n cachedBoundAdd: this.addListener.bind(this),\n }));\n }\n get value() {\n return getSignal(this);\n }\n addListener(listener, opts) {\n const { current } = this.listeners;\n if (!current.has(listener)) {\n let effective = listener;\n if (opts?.skipInitial) {\n let initial = true;\n effective = () => {\n if (initial) {\n initial = false;\n return;\n }\n listener();\n };\n }\n if (!this._isListener) {\n watchSignal(this);\n this.flags |= 16 /* ReactiveFnFlags.isListener */;\n }\n if (this.watchCount > 0) {\n schedulePull(this);\n }\n current.set(listener, effective);\n }\n return () => {\n if (current.has(listener)) {\n current.delete(listener);\n if (current.size === 0) {\n cancelPull(this);\n unwatchSignal(this);\n this.flags &= ~16 /* ReactiveFnFlags.isListener */;\n this.listeners.updatedAt = 0;\n }\n }\n };\n }\n // This method is used in React hooks specifically. It returns a bound add method\n // that is cached to avoid creating a new one on each call, and it eagerly sets\n // the listener as watched so that relays that are accessed will be activated.\n addListenerLazy(watch = true) {\n if (!this._isListener) {\n if (watch) {\n watchSignal(this);\n }\n this.flags |= 16 /* ReactiveFnFlags.isListener */;\n }\n return this.listeners.cachedBoundAdd;\n }\n}\nexport const runListeners = (signal) => {\n const { listeners } = signal;\n if (listeners === null) {\n return;\n }\n const { current } = listeners;\n for (const listener of current.values()) {\n listener();\n }\n};\nexport const isRelay = (signal) => {\n return (signal['flags'] & 8 /* ReactiveFnFlags.isRelay */) !== 0;\n};\nexport function createReactiveSignal(def, args = [], key, scope) {\n return new ReactiveSignal(def, args, key, scope);\n}\n","import { createReactiveSignal } from './reactive.js';\nimport { hashReactiveFn, hashValue } from './utils/hash.js';\nimport { getCurrentConsumer } from './consumer.js';\nlet requestScopeGetter;\n/**\n * Install or clear an optional source for a per-request (or per-environment) {@link SignalScope}\n * consulted by {@link getCurrentScope} after `CURRENT_SCOPE` and the reactive consumer's scope,\n * but before the definition-time fallback. Pass `undefined` to restore default behavior.\n *\n * React Server Components: use `setupRscRequestScope()` from `signalium/react/server` instead of\n * calling this directly.\n */\nexport function setRequestScopeGetter(get) {\n requestScopeGetter = get;\n}\nlet CONTEXT_ID = 0;\nexport class ContextImpl {\n defaultValue;\n _key;\n _description;\n constructor(defaultValue, desc) {\n this.defaultValue = defaultValue;\n this._description = desc ?? `context:${CONTEXT_ID++}`;\n this._key = Symbol(this._description);\n }\n}\nexport const context = (initialValue, description) => {\n return new ContextImpl(initialValue, description);\n};\nexport function withContexts(contexts, fn) {\n const prevScope = CURRENT_SCOPE;\n const currentScope = getCurrentScope();\n try {\n CURRENT_SCOPE = currentScope.getChild(contexts);\n return fn();\n }\n finally {\n CURRENT_SCOPE = prevScope;\n }\n}\nexport const getContext = (context) => {\n const scope = CURRENT_SCOPE ?? getCurrentConsumer()?.scope;\n if (scope === undefined) {\n throw new Error('getContext must be used within a reactive function, a withContext, or within a framework-specific context provider.');\n }\n return scope.getContext(context) ?? context.defaultValue;\n};\n// ======= Signal Scope =======\nexport class SignalScope {\n parentScope;\n constructor(contexts, parent) {\n this.parentScope = parent;\n this.contexts = Object.create(parent?.contexts || null);\n this.setContexts(contexts);\n }\n contexts;\n children = new Map();\n signals = new Map();\n setContexts(contexts) {\n for (const [context, value] of contexts) {\n this.contexts[context._key] = value;\n if (typeof value === 'object' && value !== null) {\n SCOPE_OWNER_MAP.set(value, this);\n }\n }\n this.signals.clear();\n }\n getChild(contexts) {\n const key = hashValue(contexts);\n let child = this.children.get(key);\n if (child === undefined) {\n child = new SignalScope(contexts, this);\n this.children.set(key, child);\n }\n return child;\n }\n getContext(_context) {\n const context = _context;\n return this.contexts[context._key];\n }\n get(def, args) {\n const paramKey = def.paramKey?.(...args);\n const key = hashReactiveFn(def.compute, paramKey ? [paramKey] : args);\n let signal = this.signals.get(key)?.deref();\n if (signal === undefined) {\n signal = createReactiveSignal(def, args, key, this);\n this.signals.set(key, new WeakRef(signal));\n }\n return signal;\n }\n}\nlet GLOBAL_SCOPE = new SignalScope([]);\nexport const getGlobalScope = () => {\n return GLOBAL_SCOPE;\n};\nexport function setGlobalContexts(contexts) {\n GLOBAL_SCOPE.setContexts(contexts);\n}\nexport const clearGlobalContexts = () => {\n GLOBAL_SCOPE = new SignalScope([]);\n};\nlet CURRENT_SCOPE;\nexport const setCurrentScope = (scope) => {\n CURRENT_SCOPE = scope;\n};\nexport const getInternalCurrentScope = () => {\n return CURRENT_SCOPE;\n};\nexport const getCurrentScope = (fallback = GLOBAL_SCOPE) => {\n return CURRENT_SCOPE ?? getCurrentConsumer()?.scope ?? requestScopeGetter?.() ?? fallback;\n};\n// ======= Owner =======\nconst SCOPE_OWNER_MAP = new WeakMap();\nconst OWNER_CHILD_MAP = new WeakMap();\nexport const setScopeOwner = (obj, ownerObject) => {\n if (OWNER_CHILD_MAP.has(obj)) {\n throw new Error('Object already has a scope owner, owners cannot be dynamic');\n }\n OWNER_CHILD_MAP.set(obj, ownerObject);\n};\nconst reifyScopeOwner = (obj) => {\n const owner = OWNER_CHILD_MAP.get(obj);\n if (!owner) {\n throw new Error('Object has no scope owner, reactiveMethod must be attached to an owned context object');\n }\n const scope = SCOPE_OWNER_MAP.get(owner) ?? reifyScopeOwner(owner);\n SCOPE_OWNER_MAP.set(obj, scope);\n return scope;\n};\nexport const getScopeOwner = (obj) => {\n let scope = SCOPE_OWNER_MAP.get(obj);\n if (!scope) {\n scope = reifyScopeOwner(obj);\n }\n return scope;\n};\n// ======= Test Helper =======\nexport function getSignalsMap(scope) {\n return scope.signals;\n}\n"],"names":["TracerEventType","SignalType","ID","signal","runListeners","_scheduleFlush","runBatch","runDerivedListeners","runStateListeners","callback","settled","isRelay","dep","context"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const debug = require("./debug-
|
|
3
|
+
const debug = require("./debug-CDy1L3Id.js");
|
|
4
4
|
Object.defineProperty(exports, "SignalType", {
|
|
5
5
|
enumerable: true,
|
|
6
6
|
get: () => debug.SignalType
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const snapshot = require("./snapshot-
|
|
4
|
-
const debug = require("./debug-
|
|
3
|
+
const snapshot = require("./snapshot-D8Ydfj9E.js");
|
|
4
|
+
const debug = require("./debug-CDy1L3Id.js");
|
|
5
5
|
const utils = require("./utils.js");
|
|
6
6
|
exports.reactive = snapshot.reactive;
|
|
7
7
|
exports.reactiveMethod = snapshot.reactiveMethod;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
|
-
const debug = require("../debug-
|
|
6
|
-
const componentShared = require("../component-shared-
|
|
7
|
-
const snapshot = require("../snapshot-
|
|
5
|
+
const debug = require("../debug-CDy1L3Id.js");
|
|
6
|
+
const componentShared = require("../component-shared-DzjqSRY-.js");
|
|
7
|
+
const snapshot = require("../snapshot-D8Ydfj9E.js");
|
|
8
8
|
function _interopNamespaceDefault(e) {
|
|
9
9
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
10
10
|
if (e) {
|
|
@@ -63,7 +63,7 @@ class PauseSignalsManager {
|
|
|
63
63
|
this._paused = value;
|
|
64
64
|
for (const signal of this.signals) {
|
|
65
65
|
if (value) {
|
|
66
|
-
debug.unwatchSignal(signal);
|
|
66
|
+
debug.unwatchSignal(signal, { isPausing: true });
|
|
67
67
|
} else {
|
|
68
68
|
debug.watchSignal(signal);
|
|
69
69
|
debug.schedulePull(signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../.tsc-out/react/context.js","../../../../.tsc-out/react/provider.js","../../../../.tsc-out/react/pause-signals-context.js","../../../../.tsc-out/react/async-component.js","../../../../.tsc-out/react/component.js","../../../../.tsc-out/react/use-signal.js","../../../../.tsc-out/react/use-reactive.js"],"sourcesContent":["import { createContext, useContext as useReactContext } from 'react';\nimport { getCurrentConsumer } from '../internals/consumer.js';\nexport const ScopeContext = createContext(undefined);\nexport function useScope() {\n return useReactContext(ScopeContext);\n}\nexport function useContext(context) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scope = getCurrentConsumer()?.scope ?? useScope();\n if (!scope) {\n throw new Error('useContext must be used within a signal hook, a withContext, or a component');\n }\n return scope.getContext(context) ?? context.defaultValue;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useContext, useMemo } from 'react';\nimport { ScopeContext } from './context.js';\nimport { getGlobalScope, SignalScope } from '../internals/contexts.js';\nimport { hashValue } from '../internals/utils/hash.js';\nexport function ContextProvider({ children, contexts = [], inherit = true, }) {\n const parentScope = useContext(ScopeContext) ?? getGlobalScope();\n const scope = useMemo(() => new SignalScope(contexts, inherit ? parentScope : undefined), \n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentScope, inherit, hashValue(contexts)]);\n return _jsx(ScopeContext.Provider, { value: scope, children: children });\n}\n","import React, { createContext, useContext, useEffect, useRef } from 'react';\nimport { watchSignal, unwatchSignal } from '../internals/watch.js';\nimport { schedulePull } from '../internals/scheduling.js';\nclass PauseSignalsManager {\n signals = new Set();\n _paused;\n constructor(initialPaused) {\n this._paused = initialPaused;\n }\n get paused() {\n return this._paused;\n }\n register(signal) {\n this.signals.add(signal);\n }\n unregister(signal) {\n this.signals.delete(signal);\n }\n setPaused(value) {\n if (value === this._paused)\n return;\n this._paused = value;\n for (const signal of this.signals) {\n if (value) {\n unwatchSignal(signal);\n }\n else {\n watchSignal(signal);\n schedulePull(signal);\n }\n }\n }\n}\nconst PauseSignalsManagerContext = createContext(null);\nexport function PauseSignalsProvider({ value, children }) {\n const managerRef = useRef(null);\n if (managerRef.current === null) {\n managerRef.current = new PauseSignalsManager(value);\n }\n const manager = managerRef.current;\n useEffect(() => {\n manager.setPaused(value);\n }, [manager, value]);\n return React.createElement(PauseSignalsManagerContext.Provider, { value: manager }, children);\n}\nexport function usePauseSignalsManager() {\n return useContext(PauseSignalsManagerContext);\n}\n","import React, { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { getCurrentConsumer, setCurrentConsumer } from '../internals/consumer.js';\nimport { createReactiveSignal } from '../internals/reactive.js';\nimport { runSignal } from '../internals/get.js';\nimport { isReactivePromise } from '../internals/async.js';\nimport { hashValue } from '../internals/utils/hash.js';\nimport { isPromise, isThennable } from '../internals/utils/type-utils.js';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\n/**\n * Remembers settled outcomes for yielded thenables so synchronous replay can inject\n * `next(value)` on later attempts without throwing the same fulfilled promise again (which\n * can strand Suspense). Identity must be stable across replays for a given logical await.\n */\nconst thenableOutcome = new WeakMap();\nfunction adoptYieldedThenable(thenable) {\n const expanded = thenable;\n if (expanded.status === 'fulfilled') {\n return expanded.value;\n }\n if (expanded.status === 'rejected') {\n throw expanded.reason;\n }\n if (expanded.status === 'pending') {\n throw thenable;\n }\n const hit = thenableOutcome.get(thenable);\n if (hit !== undefined) {\n if (hit.kind === 'rejected') {\n throw hit.reason;\n }\n return hit.value;\n }\n thenable.then(v => {\n thenableOutcome.set(thenable, { kind: 'fulfilled', value: v });\n }, e => {\n thenableOutcome.set(thenable, { kind: 'rejected', reason: e });\n });\n throw thenable;\n}\n/** Marked on the outer wrapper returned by `component()` for async (generator) definitions. */\nexport const SIGNALIUM_ASYNC_COMPONENT = Symbol.for('signalium.asyncComponent');\n/**\n * Call from wrappers around `use()` if you might receive a Signalium async component by mistake.\n * React's `use()` does not support Signalium async `component()` wrappers — render them under\n * `<Suspense>` and use `await` inside the component (after the async transform) instead.\n */\nexport function throwIfSignaliumAsyncComponentPassedToUse(resource) {\n if (typeof resource === 'function' &&\n resource[SIGNALIUM_ASYNC_COMPONENT] === true) {\n throw new Error('use() with a Signalium async `component()` is not supported. Render the component under <Suspense> and use await inside the component (compiled from async/await by the Signalium preset) instead.');\n }\n}\nexport { isGeneratorFunction, isAsyncFunctionWithoutTransform } from './component-shared.js';\n/**\n * Synchronous replay driver for async `component()` (authoring: `async`/`await`; Babel rewrites to a generator).\n *\n * Each React render starts a **new** iterator and walks it in a tight loop. Each `yield` (from\n * the compiled generator, originally `await`) is treated like `use(promise)` / Suspense: pending\n * thenables **throw** (interrupting the render); settled `ReactivePromise` values are injected via\n * `next(value)` and the loop continues in the same turn.\n *\n * **Hooks after a suspending `await`:** Same family as React `use()` — the throw aborts before\n * later code runs; the next attempt replays from the top. Do not use conditional hooks without\n * Suspense on paths that skip them.\n *\n * **Plain `Promise` / other thenables:** First time pending, **throw** for Suspense and register\n * the outcome in a `WeakMap` keyed by thenable identity. After settlement, the **same** object\n * replays inject the value (or throw the rejection) synchronously. Keep **stable thenable\n * identity** across replays (e.g. store in a ref). Thenables may expose React `use()`-style\n * `status` / `value` / `reason` for synchronous reads when present.\n *\n * **Generator `let` / `const`:** Reset every replay; durable state should use React hooks, refs, or\n * Signalium signals.\n *\n * `ownerSignal` is set as `CURRENT_CONSUMER` so reads inside the generator participate in the\n * reactive graph like `compute` in `runSignal`.\n */\nexport function runSyncReplayAsyncComponent(fn, props, ownerSignal) {\n const prevConsumer = getCurrentConsumer();\n try {\n setCurrentConsumer(ownerSignal);\n const iter = fn(props);\n let sent = undefined;\n for (;;) {\n const step = iter.next(sent);\n if (step.done) {\n return step.value;\n }\n const yielded = step.value;\n if (yielded !== null && typeof yielded === 'object' && isReactivePromise(yielded)) {\n const rp = yielded;\n if (rp.isRejected) {\n throw rp.error;\n }\n if (!rp.isReady) {\n const native = rp._promise;\n throw native !== undefined ? native : rp;\n }\n sent = rp.value;\n continue;\n }\n if (yielded !== null && typeof yielded === 'object' && (isPromise(yielded) || isThennable(yielded))) {\n sent = adoptYieldedThenable(yielded);\n continue;\n }\n sent = yielded;\n }\n }\n finally {\n setCurrentConsumer(prevConsumer);\n }\n}\n/**\n * Async Signalium `component()`: one lazy reactive signal per **instance** (same as sync\n * `component()`), outer `useMemo` keyed by `hashValue(props)`. No definition-scoped props map.\n */\nexport function createAsyncComponentWrapper(fn) {\n const Inner = (props) => {\n const scope = useScope();\n const manager = usePauseSignalsManager();\n const fnSignalRef = useRef(undefined);\n const propsRef = useRef(props);\n propsRef.current = props;\n let sig = fnSignalRef.current;\n if (sig === undefined) {\n let owned;\n owned = createReactiveSignal({\n compute: () => runSyncReplayAsyncComponent(fn, propsRef.current, owned),\n equals: () => false,\n isRelay: false,\n tracer: undefined,\n }, [], undefined, scope);\n owned._isLazy = true;\n fnSignalRef.current = sig = owned;\n }\n const watch = !manager?.paused;\n manager?.register(sig);\n useEffect(() => {\n return () => manager?.unregister(sig);\n }, [manager, sig]);\n useSyncExternalStore(sig.addListenerLazy(watch), () => sig.updatedCount, () => sig.updatedCount);\n runSignal(sig);\n return sig.value;\n };\n const Outer = (props) => {\n const hash = hashValue(props);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => React.createElement(Inner, props), [hash]);\n };\n Object.defineProperty(Outer, SIGNALIUM_ASYNC_COMPONENT, { value: true, enumerable: false });\n return Outer;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\nimport { setRequestScopeGetter, SignalScope } from '../internals/contexts.js';\nimport { createReactiveSignal } from '../internals/reactive.js';\nimport { runSignal } from '../internals/get.js';\nimport { hashValue } from '../internals/utils/hash.js';\nimport { createAsyncComponentWrapper } from './async-component.js';\nimport { isAsyncFunctionWithoutTransform, isGeneratorFunction, createServerAsyncComponentWrapper, } from './component-shared.js';\nexport { isAsyncFunctionWithoutTransform, runSyncReplayAsyncComponent, SIGNALIUM_ASYNC_COMPONENT, throwIfSignaliumAsyncComponentPassedToUse, } from './async-component.js';\n/**\n * Auto-install per-request scoping for SSR of client components.\n *\n * `setupRscRequestScope()` only affects the RSC bundle; Next.js (and similar frameworks) render\n * client components in a separate SSR module graph. This ensures the SSR bundle also gets a\n * fresh {@link SignalScope} per render via `React.cache` (React 19+).\n */\nlet _ssrScopeInitialized = false;\nfunction ensureSsrScope() {\n if (_ssrScopeInitialized || typeof window !== 'undefined')\n return;\n _ssrScopeInitialized = true;\n const cache = React.cache;\n if (typeof cache === 'function') {\n const getScope = cache(() => new SignalScope([]));\n setRequestScopeGetter(() => getScope());\n }\n}\nexport default function component(fn) {\n ensureSsrScope();\n if (isAsyncFunctionWithoutTransform(fn)) {\n throw new Error('signalium: `component(async (props) => { await ... })` requires the Signalium Babel preset (async transform).');\n }\n if (isGeneratorFunction(fn)) {\n if (typeof window === 'undefined') {\n return createServerAsyncComponentWrapper(fn);\n }\n return createAsyncComponentWrapper(fn);\n }\n // Async `component(async () => { await ... })` is rewritten to a generator by the Babel preset.\n // Remaining callers are synchronous render functions only (see Promise overload for TS authoring).\n const syncFn = fn;\n const Component = (props) => {\n const scope = useScope();\n const manager = usePauseSignalsManager();\n const fnSignalRef = useRef(undefined);\n const propsRef = useRef(props);\n propsRef.current = props;\n let signal = fnSignalRef.current;\n if (signal === undefined) {\n const created = createReactiveSignal({\n compute: () => syncFn(propsRef.current),\n equals: () => false,\n isRelay: false,\n tracer: undefined,\n }, [], undefined, scope);\n created._isLazy = true;\n fnSignalRef.current = signal = created;\n }\n const watch = !manager?.paused;\n manager?.register(signal);\n useEffect(() => {\n return () => manager?.unregister(signal);\n }, [manager, signal]);\n useSyncExternalStore(signal.addListenerLazy(watch), () => signal.updatedCount, () => signal.updatedCount);\n runSignal(signal);\n return signal.value;\n };\n return (props) => {\n const hash = hashValue(props);\n // Renders Comp only when hash changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => _jsx(Component, { ...props }), [hash]);\n };\n}\n","import { useRef } from 'react';\nimport { signal } from '../index.js';\nexport function useSignal(value, opts) {\n const ref = useRef(undefined);\n if (!ref.current) {\n ref.current = signal(value, opts);\n }\n return ref.current;\n}\n","import { useEffect, useRef, useSyncExternalStore } from 'react';\nimport { getReactiveFnAndDefinition, reactiveSignal } from '../internals/core-api.js';\nimport { getCurrentConsumer } from '../internals/consumer.js';\nimport { snapshot } from '../internals/utils/snapshot.js';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\nimport { getGlobalScope } from '../internals/contexts.js';\nfunction useSignalWithSuspension(signal) {\n const manager = usePauseSignalsManager();\n const watch = !manager?.paused;\n manager?.register(signal);\n useEffect(() => {\n return () => manager?.unregister(signal);\n }, [manager, signal]);\n return useSyncExternalStore(signal.addListenerLazy(watch), () => signal.value, () => signal.value);\n}\n/**\n * Subscribe to a reactive thunk without structural cloning. The thunk's\n * `ReactiveDefinition` is memoized by fn identity in a `WeakMap`, so a\n * memoized thunk (via `useCallback` or the Signalium Babel preset) reuses the\n * same scope-cached signal across renders.\n *\n * This is a minimal wrapper: the returned value is whatever the thunk\n * returned, by reference. In particular, when the thunk returns a\n * `ReactivePromise`, re-renders only fire when the underlying signal itself\n * re-evaluates (e.g. a new promise replaces the old one) — not when the\n * existing promise transitions from pending to resolved. If you need promise\n * state transitions to drive React, read its fields inside the thunk (e.g.\n * `useReactiveShallow(() => { const p = fetchThing(); return { value: p.value,\n * isPending: p.isPending }; })`) or use {@link useReactive} for the\n * structurally-shared snapshot that handles this automatically.\n */\nexport function useReactiveShallow(fn) {\n if (IS_DEV && getCurrentConsumer()) {\n throw new Error('signalium: `useReactiveShallow` cannot be called inside a reactive function. ' +\n 'Call your reactive function directly instead — it already participates in the signal graph.');\n }\n const [, def] = getReactiveFnAndDefinition(fn);\n const scope = useScope() ?? getGlobalScope();\n const signal = scope.get(def, []);\n return useSignalWithSuspension(signal);\n}\n/**\n * Subscribe to a reactive thunk and return a structurally-shared snapshot of\n * its value. Nested objects/arrays/Maps/Sets are deep-cloned; unchanged\n * subtrees keep the same reference, so React's referential equality works as\n * expected. ReactivePromise values are flattened to plain objects.\n *\n * This is the default hook for reading reactive values inside a React\n * component — it gives you safe equality semantics at the React boundary.\n * Use {@link useReactiveShallow} if you know you don't need structural\n * sharing.\n */\nexport function useReactive(fn) {\n if (IS_DEV && getCurrentConsumer()) {\n throw new Error('signalium: `useReactive` cannot be called inside a reactive function. ' +\n 'Call your reactive function directly instead — it already participates in the signal graph.');\n }\n const manager = usePauseSignalsManager();\n const watch = !manager?.paused;\n const scope = useScope() ?? getGlobalScope();\n const innerSignalRef = useRef(undefined);\n const cloneSignalRef = useRef(undefined);\n const valueRef = useRef(undefined);\n const [, def] = getReactiveFnAndDefinition(fn);\n const signal = scope.get(def, []);\n if (innerSignalRef.current !== signal) {\n innerSignalRef.current = signal;\n valueRef.current = undefined;\n cloneSignalRef.current = reactiveSignal(() => {\n const next = snapshot(signal.value, valueRef.current);\n valueRef.current = next;\n return next;\n });\n }\n const cloneSignal = cloneSignalRef.current;\n manager?.register(cloneSignal);\n useEffect(() => {\n return () => manager?.unregister(cloneSignal);\n }, [manager, cloneSignal]);\n return useSyncExternalStore(cloneSignal.addListenerLazy(watch), () => cloneSignal.value, () => cloneSignal.value);\n}\n/**\n * @deprecated Use {@link useReactive} instead. `useReactive` is now\n * deep-by-default; `useReactiveDeep` is a thin alias kept for back-compat and\n * will be removed in a future major release.\n */\nexport function useReactiveDeep(fn) {\n if (IS_DEV) {\n warnUseReactiveDeepOnce();\n }\n return useReactive(fn);\n}\nlet _useReactiveDeepWarned = false;\nfunction warnUseReactiveDeepOnce() {\n if (_useReactiveDeepWarned)\n return;\n _useReactiveDeepWarned = true;\n console.warn('[signalium] `useReactiveDeep` is deprecated; use `useReactive` instead. ' +\n '`useReactive` is now deep-by-default. Use `useReactiveShallow` to opt out of structural snapshots.');\n}\n"],"names":["createContext","useReactContext","getCurrentConsumer","useContext","getGlobalScope","useMemo","SignalScope","hashValue","_jsx","unwatchSignal","watchSignal","schedulePull","useRef","useEffect","setCurrentConsumer","isReactivePromise","isPromise","isThennable","createReactiveSignal","useSyncExternalStore","runSignal","React","setRequestScopeGetter","isAsyncFunctionWithoutTransform","isGeneratorFunction","createServerAsyncComponentWrapper","signal","getReactiveFnAndDefinition","reactiveSignal","snapshot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../.tsc-out/react/context.js","../../../../.tsc-out/react/provider.js","../../../../.tsc-out/react/pause-signals-context.js","../../../../.tsc-out/react/async-component.js","../../../../.tsc-out/react/component.js","../../../../.tsc-out/react/use-signal.js","../../../../.tsc-out/react/use-reactive.js"],"sourcesContent":["import { createContext, useContext as useReactContext } from 'react';\nimport { getCurrentConsumer } from '../internals/consumer.js';\nexport const ScopeContext = createContext(undefined);\nexport function useScope() {\n return useReactContext(ScopeContext);\n}\nexport function useContext(context) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scope = getCurrentConsumer()?.scope ?? useScope();\n if (!scope) {\n throw new Error('useContext must be used within a signal hook, a withContext, or a component');\n }\n return scope.getContext(context) ?? context.defaultValue;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useContext, useMemo } from 'react';\nimport { ScopeContext } from './context.js';\nimport { getGlobalScope, SignalScope } from '../internals/contexts.js';\nimport { hashValue } from '../internals/utils/hash.js';\nexport function ContextProvider({ children, contexts = [], inherit = true, }) {\n const parentScope = useContext(ScopeContext) ?? getGlobalScope();\n const scope = useMemo(() => new SignalScope(contexts, inherit ? parentScope : undefined), \n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentScope, inherit, hashValue(contexts)]);\n return _jsx(ScopeContext.Provider, { value: scope, children: children });\n}\n","import React, { createContext, useContext, useEffect, useRef } from 'react';\nimport { watchSignal, unwatchSignal } from '../internals/watch.js';\nimport { schedulePull } from '../internals/scheduling.js';\nclass PauseSignalsManager {\n signals = new Set();\n _paused;\n constructor(initialPaused) {\n this._paused = initialPaused;\n }\n get paused() {\n return this._paused;\n }\n register(signal) {\n this.signals.add(signal);\n }\n unregister(signal) {\n this.signals.delete(signal);\n }\n setPaused(value) {\n if (value === this._paused)\n return;\n this._paused = value;\n for (const signal of this.signals) {\n if (value) {\n unwatchSignal(signal, { isPausing: true });\n }\n else {\n watchSignal(signal);\n schedulePull(signal);\n }\n }\n }\n}\nconst PauseSignalsManagerContext = createContext(null);\nexport function PauseSignalsProvider({ value, children }) {\n const managerRef = useRef(null);\n if (managerRef.current === null) {\n managerRef.current = new PauseSignalsManager(value);\n }\n const manager = managerRef.current;\n useEffect(() => {\n manager.setPaused(value);\n }, [manager, value]);\n return React.createElement(PauseSignalsManagerContext.Provider, { value: manager }, children);\n}\nexport function usePauseSignalsManager() {\n return useContext(PauseSignalsManagerContext);\n}\n","import React, { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { getCurrentConsumer, setCurrentConsumer } from '../internals/consumer.js';\nimport { createReactiveSignal } from '../internals/reactive.js';\nimport { runSignal } from '../internals/get.js';\nimport { isReactivePromise } from '../internals/async.js';\nimport { hashValue } from '../internals/utils/hash.js';\nimport { isPromise, isThennable } from '../internals/utils/type-utils.js';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\n/**\n * Remembers settled outcomes for yielded thenables so synchronous replay can inject\n * `next(value)` on later attempts without throwing the same fulfilled promise again (which\n * can strand Suspense). Identity must be stable across replays for a given logical await.\n */\nconst thenableOutcome = new WeakMap();\nfunction adoptYieldedThenable(thenable) {\n const expanded = thenable;\n if (expanded.status === 'fulfilled') {\n return expanded.value;\n }\n if (expanded.status === 'rejected') {\n throw expanded.reason;\n }\n if (expanded.status === 'pending') {\n throw thenable;\n }\n const hit = thenableOutcome.get(thenable);\n if (hit !== undefined) {\n if (hit.kind === 'rejected') {\n throw hit.reason;\n }\n return hit.value;\n }\n thenable.then(v => {\n thenableOutcome.set(thenable, { kind: 'fulfilled', value: v });\n }, e => {\n thenableOutcome.set(thenable, { kind: 'rejected', reason: e });\n });\n throw thenable;\n}\n/** Marked on the outer wrapper returned by `component()` for async (generator) definitions. */\nexport const SIGNALIUM_ASYNC_COMPONENT = Symbol.for('signalium.asyncComponent');\n/**\n * Call from wrappers around `use()` if you might receive a Signalium async component by mistake.\n * React's `use()` does not support Signalium async `component()` wrappers — render them under\n * `<Suspense>` and use `await` inside the component (after the async transform) instead.\n */\nexport function throwIfSignaliumAsyncComponentPassedToUse(resource) {\n if (typeof resource === 'function' &&\n resource[SIGNALIUM_ASYNC_COMPONENT] === true) {\n throw new Error('use() with a Signalium async `component()` is not supported. Render the component under <Suspense> and use await inside the component (compiled from async/await by the Signalium preset) instead.');\n }\n}\nexport { isGeneratorFunction, isAsyncFunctionWithoutTransform } from './component-shared.js';\n/**\n * Synchronous replay driver for async `component()` (authoring: `async`/`await`; Babel rewrites to a generator).\n *\n * Each React render starts a **new** iterator and walks it in a tight loop. Each `yield` (from\n * the compiled generator, originally `await`) is treated like `use(promise)` / Suspense: pending\n * thenables **throw** (interrupting the render); settled `ReactivePromise` values are injected via\n * `next(value)` and the loop continues in the same turn.\n *\n * **Hooks after a suspending `await`:** Same family as React `use()` — the throw aborts before\n * later code runs; the next attempt replays from the top. Do not use conditional hooks without\n * Suspense on paths that skip them.\n *\n * **Plain `Promise` / other thenables:** First time pending, **throw** for Suspense and register\n * the outcome in a `WeakMap` keyed by thenable identity. After settlement, the **same** object\n * replays inject the value (or throw the rejection) synchronously. Keep **stable thenable\n * identity** across replays (e.g. store in a ref). Thenables may expose React `use()`-style\n * `status` / `value` / `reason` for synchronous reads when present.\n *\n * **Generator `let` / `const`:** Reset every replay; durable state should use React hooks, refs, or\n * Signalium signals.\n *\n * `ownerSignal` is set as `CURRENT_CONSUMER` so reads inside the generator participate in the\n * reactive graph like `compute` in `runSignal`.\n */\nexport function runSyncReplayAsyncComponent(fn, props, ownerSignal) {\n const prevConsumer = getCurrentConsumer();\n try {\n setCurrentConsumer(ownerSignal);\n const iter = fn(props);\n let sent = undefined;\n for (;;) {\n const step = iter.next(sent);\n if (step.done) {\n return step.value;\n }\n const yielded = step.value;\n if (yielded !== null && typeof yielded === 'object' && isReactivePromise(yielded)) {\n const rp = yielded;\n if (rp.isRejected) {\n throw rp.error;\n }\n if (!rp.isReady) {\n const native = rp._promise;\n throw native !== undefined ? native : rp;\n }\n sent = rp.value;\n continue;\n }\n if (yielded !== null && typeof yielded === 'object' && (isPromise(yielded) || isThennable(yielded))) {\n sent = adoptYieldedThenable(yielded);\n continue;\n }\n sent = yielded;\n }\n }\n finally {\n setCurrentConsumer(prevConsumer);\n }\n}\n/**\n * Async Signalium `component()`: one lazy reactive signal per **instance** (same as sync\n * `component()`), outer `useMemo` keyed by `hashValue(props)`. No definition-scoped props map.\n */\nexport function createAsyncComponentWrapper(fn) {\n const Inner = (props) => {\n const scope = useScope();\n const manager = usePauseSignalsManager();\n const fnSignalRef = useRef(undefined);\n const propsRef = useRef(props);\n propsRef.current = props;\n let sig = fnSignalRef.current;\n if (sig === undefined) {\n let owned;\n owned = createReactiveSignal({\n compute: () => runSyncReplayAsyncComponent(fn, propsRef.current, owned),\n equals: () => false,\n isRelay: false,\n tracer: undefined,\n }, [], undefined, scope);\n owned._isLazy = true;\n fnSignalRef.current = sig = owned;\n }\n const watch = !manager?.paused;\n manager?.register(sig);\n useEffect(() => {\n return () => manager?.unregister(sig);\n }, [manager, sig]);\n useSyncExternalStore(sig.addListenerLazy(watch), () => sig.updatedCount, () => sig.updatedCount);\n runSignal(sig);\n return sig.value;\n };\n const Outer = (props) => {\n const hash = hashValue(props);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => React.createElement(Inner, props), [hash]);\n };\n Object.defineProperty(Outer, SIGNALIUM_ASYNC_COMPONENT, { value: true, enumerable: false });\n return Outer;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\nimport { setRequestScopeGetter, SignalScope } from '../internals/contexts.js';\nimport { createReactiveSignal } from '../internals/reactive.js';\nimport { runSignal } from '../internals/get.js';\nimport { hashValue } from '../internals/utils/hash.js';\nimport { createAsyncComponentWrapper } from './async-component.js';\nimport { isAsyncFunctionWithoutTransform, isGeneratorFunction, createServerAsyncComponentWrapper, } from './component-shared.js';\nexport { isAsyncFunctionWithoutTransform, runSyncReplayAsyncComponent, SIGNALIUM_ASYNC_COMPONENT, throwIfSignaliumAsyncComponentPassedToUse, } from './async-component.js';\n/**\n * Auto-install per-request scoping for SSR of client components.\n *\n * `setupRscRequestScope()` only affects the RSC bundle; Next.js (and similar frameworks) render\n * client components in a separate SSR module graph. This ensures the SSR bundle also gets a\n * fresh {@link SignalScope} per render via `React.cache` (React 19+).\n */\nlet _ssrScopeInitialized = false;\nfunction ensureSsrScope() {\n if (_ssrScopeInitialized || typeof window !== 'undefined')\n return;\n _ssrScopeInitialized = true;\n const cache = React.cache;\n if (typeof cache === 'function') {\n const getScope = cache(() => new SignalScope([]));\n setRequestScopeGetter(() => getScope());\n }\n}\nexport default function component(fn) {\n ensureSsrScope();\n if (isAsyncFunctionWithoutTransform(fn)) {\n throw new Error('signalium: `component(async (props) => { await ... })` requires the Signalium Babel preset (async transform).');\n }\n if (isGeneratorFunction(fn)) {\n if (typeof window === 'undefined') {\n return createServerAsyncComponentWrapper(fn);\n }\n return createAsyncComponentWrapper(fn);\n }\n // Async `component(async () => { await ... })` is rewritten to a generator by the Babel preset.\n // Remaining callers are synchronous render functions only (see Promise overload for TS authoring).\n const syncFn = fn;\n const Component = (props) => {\n const scope = useScope();\n const manager = usePauseSignalsManager();\n const fnSignalRef = useRef(undefined);\n const propsRef = useRef(props);\n propsRef.current = props;\n let signal = fnSignalRef.current;\n if (signal === undefined) {\n const created = createReactiveSignal({\n compute: () => syncFn(propsRef.current),\n equals: () => false,\n isRelay: false,\n tracer: undefined,\n }, [], undefined, scope);\n created._isLazy = true;\n fnSignalRef.current = signal = created;\n }\n const watch = !manager?.paused;\n manager?.register(signal);\n useEffect(() => {\n return () => manager?.unregister(signal);\n }, [manager, signal]);\n useSyncExternalStore(signal.addListenerLazy(watch), () => signal.updatedCount, () => signal.updatedCount);\n runSignal(signal);\n return signal.value;\n };\n return (props) => {\n const hash = hashValue(props);\n // Renders Comp only when hash changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => _jsx(Component, { ...props }), [hash]);\n };\n}\n","import { useRef } from 'react';\nimport { signal } from '../index.js';\nexport function useSignal(value, opts) {\n const ref = useRef(undefined);\n if (!ref.current) {\n ref.current = signal(value, opts);\n }\n return ref.current;\n}\n","import { useEffect, useRef, useSyncExternalStore } from 'react';\nimport { getReactiveFnAndDefinition, reactiveSignal } from '../internals/core-api.js';\nimport { getCurrentConsumer } from '../internals/consumer.js';\nimport { snapshot } from '../internals/utils/snapshot.js';\nimport { useScope } from './context.js';\nimport { usePauseSignalsManager } from './pause-signals-context.js';\nimport { getGlobalScope } from '../internals/contexts.js';\nfunction useSignalWithSuspension(signal) {\n const manager = usePauseSignalsManager();\n const watch = !manager?.paused;\n manager?.register(signal);\n useEffect(() => {\n return () => manager?.unregister(signal);\n }, [manager, signal]);\n return useSyncExternalStore(signal.addListenerLazy(watch), () => signal.value, () => signal.value);\n}\n/**\n * Subscribe to a reactive thunk without structural cloning. The thunk's\n * `ReactiveDefinition` is memoized by fn identity in a `WeakMap`, so a\n * memoized thunk (via `useCallback` or the Signalium Babel preset) reuses the\n * same scope-cached signal across renders.\n *\n * This is a minimal wrapper: the returned value is whatever the thunk\n * returned, by reference. In particular, when the thunk returns a\n * `ReactivePromise`, re-renders only fire when the underlying signal itself\n * re-evaluates (e.g. a new promise replaces the old one) — not when the\n * existing promise transitions from pending to resolved. If you need promise\n * state transitions to drive React, read its fields inside the thunk (e.g.\n * `useReactiveShallow(() => { const p = fetchThing(); return { value: p.value,\n * isPending: p.isPending }; })`) or use {@link useReactive} for the\n * structurally-shared snapshot that handles this automatically.\n */\nexport function useReactiveShallow(fn) {\n if (IS_DEV && getCurrentConsumer()) {\n throw new Error('signalium: `useReactiveShallow` cannot be called inside a reactive function. ' +\n 'Call your reactive function directly instead — it already participates in the signal graph.');\n }\n const [, def] = getReactiveFnAndDefinition(fn);\n const scope = useScope() ?? getGlobalScope();\n const signal = scope.get(def, []);\n return useSignalWithSuspension(signal);\n}\n/**\n * Subscribe to a reactive thunk and return a structurally-shared snapshot of\n * its value. Nested objects/arrays/Maps/Sets are deep-cloned; unchanged\n * subtrees keep the same reference, so React's referential equality works as\n * expected. ReactivePromise values are flattened to plain objects.\n *\n * This is the default hook for reading reactive values inside a React\n * component — it gives you safe equality semantics at the React boundary.\n * Use {@link useReactiveShallow} if you know you don't need structural\n * sharing.\n */\nexport function useReactive(fn) {\n if (IS_DEV && getCurrentConsumer()) {\n throw new Error('signalium: `useReactive` cannot be called inside a reactive function. ' +\n 'Call your reactive function directly instead — it already participates in the signal graph.');\n }\n const manager = usePauseSignalsManager();\n const watch = !manager?.paused;\n const scope = useScope() ?? getGlobalScope();\n const innerSignalRef = useRef(undefined);\n const cloneSignalRef = useRef(undefined);\n const valueRef = useRef(undefined);\n const [, def] = getReactiveFnAndDefinition(fn);\n const signal = scope.get(def, []);\n if (innerSignalRef.current !== signal) {\n innerSignalRef.current = signal;\n valueRef.current = undefined;\n cloneSignalRef.current = reactiveSignal(() => {\n const next = snapshot(signal.value, valueRef.current);\n valueRef.current = next;\n return next;\n });\n }\n const cloneSignal = cloneSignalRef.current;\n manager?.register(cloneSignal);\n useEffect(() => {\n return () => manager?.unregister(cloneSignal);\n }, [manager, cloneSignal]);\n return useSyncExternalStore(cloneSignal.addListenerLazy(watch), () => cloneSignal.value, () => cloneSignal.value);\n}\n/**\n * @deprecated Use {@link useReactive} instead. `useReactive` is now\n * deep-by-default; `useReactiveDeep` is a thin alias kept for back-compat and\n * will be removed in a future major release.\n */\nexport function useReactiveDeep(fn) {\n if (IS_DEV) {\n warnUseReactiveDeepOnce();\n }\n return useReactive(fn);\n}\nlet _useReactiveDeepWarned = false;\nfunction warnUseReactiveDeepOnce() {\n if (_useReactiveDeepWarned)\n return;\n _useReactiveDeepWarned = true;\n console.warn('[signalium] `useReactiveDeep` is deprecated; use `useReactive` instead. ' +\n '`useReactive` is now deep-by-default. Use `useReactiveShallow` to opt out of structural snapshots.');\n}\n"],"names":["createContext","useReactContext","getCurrentConsumer","useContext","getGlobalScope","useMemo","SignalScope","hashValue","_jsx","unwatchSignal","watchSignal","schedulePull","useRef","useEffect","setCurrentConsumer","isReactivePromise","isPromise","isThennable","createReactiveSignal","useSyncExternalStore","runSignal","React","setRequestScopeGetter","isAsyncFunctionWithoutTransform","isGeneratorFunction","createServerAsyncComponentWrapper","signal","getReactiveFnAndDefinition","reactiveSignal","snapshot"],"mappings":"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"}
|