@graphrefly/graphrefly 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{chunk-L4J2K2RT.js → chunk-A2AJJOSJ.js} +3 -3
  2. package/dist/{chunk-ISGMZ2T3.js → chunk-E7OH6ZAZ.js} +3 -3
  3. package/dist/{chunk-47YJEZUJ.js → chunk-LR2CLSEF.js} +2 -2
  4. package/dist/{chunk-3EVXOI5C.js → chunk-QTZSBQGJ.js} +35 -21
  5. package/dist/chunk-QTZSBQGJ.js.map +1 -0
  6. package/dist/{chunk-ONLYF6GA.js → chunk-TZLX4KIT.js} +3 -3
  7. package/dist/{chunk-FGLZ5QID.js → chunk-UCW3VWMN.js} +4 -4
  8. package/dist/{chunk-BLCXEMAD.js → chunk-WYI7YW54.js} +16 -8
  9. package/dist/chunk-WYI7YW54.js.map +1 -0
  10. package/dist/{chunk-OSR3G3DP.js → chunk-XCZPGOVP.js} +3 -3
  11. package/dist/{chunk-PEBORXRA.js → chunk-YWTP2XRJ.js} +2 -2
  12. package/dist/compat/nestjs/index.cjs +47 -25
  13. package/dist/compat/nestjs/index.cjs.map +1 -1
  14. package/dist/compat/nestjs/index.d.cts +3 -3
  15. package/dist/compat/nestjs/index.d.ts +3 -3
  16. package/dist/compat/nestjs/index.js +7 -7
  17. package/dist/core/index.cjs +34 -20
  18. package/dist/core/index.cjs.map +1 -1
  19. package/dist/core/index.d.cts +1 -1
  20. package/dist/core/index.d.ts +1 -1
  21. package/dist/core/index.js +3 -3
  22. package/dist/extra/index.cjs +34 -20
  23. package/dist/extra/index.cjs.map +1 -1
  24. package/dist/extra/index.d.cts +3 -3
  25. package/dist/extra/index.d.ts +3 -3
  26. package/dist/extra/index.js +3 -3
  27. package/dist/graph/index.cjs +47 -25
  28. package/dist/graph/index.cjs.map +1 -1
  29. package/dist/graph/index.d.cts +2 -2
  30. package/dist/graph/index.d.ts +2 -2
  31. package/dist/graph/index.js +4 -4
  32. package/dist/{graph-B3BoJjcb.d.cts → graph-DqTICAY2.d.cts} +11 -5
  33. package/dist/{graph-CmiUuhaN.d.ts → graph-X9uwnD_z.d.ts} +11 -5
  34. package/dist/{index-D0cx-Yht.d.cts → index-3U0WxdD-.d.cts} +1 -1
  35. package/dist/{index-D1hgSTzr.d.cts → index-BP1t_38S.d.cts} +2 -2
  36. package/dist/{index-CsUq2rrK.d.ts → index-BPCeYDS4.d.ts} +1 -1
  37. package/dist/{index-BrgtEG-C.d.ts → index-BVG5pjin.d.ts} +3 -1
  38. package/dist/{index-D8NIq6om.d.cts → index-BYEgosAX.d.cts} +3 -1
  39. package/dist/{index-BsuKSs4L.d.cts → index-BYa2YMat.d.cts} +2 -2
  40. package/dist/{index-DFFNKYig.d.ts → index-DLO8wnYU.d.ts} +2 -2
  41. package/dist/{index-Bf2X1YSI.d.ts → index-DMv1Etbi.d.ts} +1 -1
  42. package/dist/{index-Bl7hJcc3.d.cts → index-DbwgQ4Cw.d.cts} +1 -1
  43. package/dist/{index-Pm68AYPh.d.ts → index-a5gHmH5b.d.ts} +2 -2
  44. package/dist/index.cjs +47 -25
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +10 -10
  47. package/dist/index.d.ts +10 -10
  48. package/dist/index.js +16 -16
  49. package/dist/patterns/reactive-layout/index.cjs +47 -25
  50. package/dist/patterns/reactive-layout/index.cjs.map +1 -1
  51. package/dist/patterns/reactive-layout/index.d.cts +2 -2
  52. package/dist/patterns/reactive-layout/index.d.ts +2 -2
  53. package/dist/patterns/reactive-layout/index.js +4 -4
  54. package/dist/{reactive-log-CAXzJ7hw.d.cts → reactive-log-BfX6bOSZ.d.cts} +1 -1
  55. package/dist/{reactive-log-DwNhOe0g.d.ts → reactive-log-RhgIog2Z.d.ts} +1 -1
  56. package/package.json +1 -1
  57. package/dist/chunk-3EVXOI5C.js.map +0 -1
  58. package/dist/chunk-BLCXEMAD.js.map +0 -1
  59. /package/dist/{chunk-L4J2K2RT.js.map → chunk-A2AJJOSJ.js.map} +0 -0
  60. /package/dist/{chunk-ISGMZ2T3.js.map → chunk-E7OH6ZAZ.js.map} +0 -0
  61. /package/dist/{chunk-47YJEZUJ.js.map → chunk-LR2CLSEF.js.map} +0 -0
  62. /package/dist/{chunk-ONLYF6GA.js.map → chunk-TZLX4KIT.js.map} +0 -0
  63. /package/dist/{chunk-FGLZ5QID.js.map → chunk-UCW3VWMN.js.map} +0 -0
  64. /package/dist/{chunk-OSR3G3DP.js.map → chunk-XCZPGOVP.js.map} +0 -0
  65. /package/dist/{chunk-PEBORXRA.js.map → chunk-YWTP2XRJ.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- export { A as AdapterHandlers, b as AsyncSourceOpts, B as BackoffPreset, c as BackoffStrategy, d as BatchMessage, e as BridgeMessage, f as BufferedSinkHandle, C as CSVRow, g as CacheEvictionPolicy, h as CacheTier, i as CascadingCache, j as CascadingCacheOptions, k as CheckpointAdapter, l as CheckpointToRedisOptions, m as CheckpointToS3Options, n as CircuitBreaker, o as CircuitBreakerOptions, p as CircuitOpenError, q as CircuitState, r as ClickHouseClientLike, s as ClickHouseInsertClientLike, t as ClickHouseRow, u as CronSchedule, v as DictCheckpointAdapter, D as DistillBundle, w as DistillOptions, x as DrizzleQueryLike, y as ErrorMessage, z as EventTargetLike, F as ExponentialBackoffOptions, E as Extraction, G as FSEvent, H as FSEventType, I as FileCheckpointAdapter, J as FileWriterLike, K as FromCSVOptions, L as FromClickHouseWatchOptions, M as FromCronOptions, O as FromDrizzleOptions, P as FromFSWatchOptions, Q as FromGitHookOptions, S as FromHTTPOptions, T as FromKafkaOptions, U as FromKyselyOptions, V as FromMCPOptions, W as FromNATSOptions, X as FromNDJSONOptions, Y as FromOTelOptions, Z as FromPrismaOptions, _ as FromPrometheusOptions, $ as FromPulsarOptions, a0 as FromRabbitMQOptions, a1 as FromRedisStreamOptions, a2 as FromSqliteOptions, a3 as FromStatsDOptions, a4 as FromSyslogOptions, a5 as GitEvent, a6 as GitHookType, a7 as HTTPBundle, a8 as IndexRow, a9 as IndexedDbCheckpointSpec, aa as InitMessage, ab as JitterMode, ac as KafkaConsumerLike, ad as KafkaMessage, ae as KafkaProducerLike, af as KyselyQueryLike, ag as LokiClientLike, ah as LokiStream, ai as MCPClientLike, aj as MemoryCheckpointAdapter, ak as MergeMapOptions, al as MongoCollectionLike, am as NATSClientLike, an as NATSMessage, ao as NATSSubscriptionLike, ap as NS_PER_MS, aq as NS_PER_SEC, N as NodeInput, ar as OTelBundle, as as OTelLog, at as OTelMetric, au as OTelRegister, av as OTelSpan, aw as PostgresClientLike, ax as PrismaModelLike, ay as PrometheusMetric, az as PubSubHub, aA as PulsarConsumerLike, aB as PulsarMessage, aC as PulsarProducerLike, aD as RabbitMQChannelLike, aE as RabbitMQMessage, aF as ReactiveIndexBundle, aG as ReactiveIndexOptions, aH as ReactiveIndexSnapshot, aI as ReactiveListBundle, aJ as ReactiveListOptions, R as ReactiveListSnapshot, aK as ReactiveMapBundle, aL as ReactiveMapOptions, a as ReactiveMapSnapshot, aM as ReadyMessage, aN as RedisCheckpointClientLike, aO as RedisClientLike, aP as RedisStreamEntry, aQ as RetryOptions, aR as S3ClientLike, aS as SignalMessage, aT as SinkHandle, aU as SinkTransportError, aV as SqliteCheckpointAdapter, aW as SqliteDbLike, aX as StatsDMetric, aY as StatsDRegister, aZ as StatusValue, a_ as SyslogMessage, a$ as SyslogRegister, b0 as TapObserver, b1 as TempoClientLike, b2 as ThrottleOptions, b3 as TieredStorage, b4 as TieredStorageOptions, b5 as TimeoutError, b6 as ToCSVOptions, b7 as ToClickHouseOptions, b8 as ToFileOptions, b9 as ToKafkaOptions, ba as ToLokiOptions, bb as ToMongoOptions, bc as ToNATSOptions, bd as ToPostgresOptions, be as ToPulsarOptions, bf as ToRabbitMQOptions, bg as ToRedisStreamOptions, bh as ToS3Options, bi as ToSSEOptions, bj as ToSqliteOptions, bk as ToTempoOptions, bl as ToWebSocketOptions, bm as ToWebSocketTransportError, bn as TokenBucket, bo as ValueMessage, bp as VerifiableBundle, bq as VerifiableOptions, br as VerifyValue, bs as WatermarkController, bt as WatermarkOptions, bu as WebSocketLike, bv as WebSocketMessageEventLike, bw as WebSocketRegister, bx as WebhookRegister, by as WithBreakerBundle, bz as WithStatusBundle, bA as WorkerBridge, bB as WorkerBridgeOptions, bC as WorkerSelfHandle, bD as WorkerSelfOptions, bE as WorkerTransport, bF as audit, bG as buffer, bH as bufferCount, bI as bufferTime, bJ as cache, bK as cached, bL as cascadingCache, bM as catchError, bN as checkpointNodeValue, bO as checkpointToRedis, bP as checkpointToS3, bQ as circuitBreaker, bR as combine, bS as combineLatest, bT as concat, bU as concatMap, bV as constant, bW as createTransport, bX as createWatermarkController, bY as debounce, bZ as debounceTime, b_ as decorrelatedJitter, b$ as delay, c0 as deserializeError, c1 as distill, c2 as distinctUntilChanged, c3 as elementAt, c4 as empty, c5 as escapeRegexChar, c6 as exhaustMap, c7 as exponential, c9 as fallback, ca as fibonacci, cb as filter, cc as find, cd as first, ce as firstValueFrom, cf as flatMap, cg as forEach, ch as fromAny, ci as fromAsyncIter, cj as fromCSV, ck as fromClickHouseWatch, cl as fromCron, cm as fromDrizzle, cn as fromEvent, co as fromFSWatch, cp as fromGitHook, cq as fromHTTP, cr as fromIDBRequest, cs as fromIDBTransaction, ct as fromIter, cu as fromKafka, cv as fromKysely, cw as fromMCP, cx as fromNATS, cy as fromNDJSON, cz as fromOTel, cA as fromPrisma, cB as fromPrometheus, cC as fromPromise, cD as fromPulsar, cE as fromRabbitMQ, cF as fromRedisStream, cG as fromSqlite, cH as fromStatsD, cI as fromSyslog, cJ as fromTimer, cK as fromWebSocket, cL as fromWebhook, cM as gate, cN as globToRegExp, cO as interval, cP as last, cQ as linear, cR as lru, cS as map, cT as matchesAnyPattern, cU as matchesCron, cV as merge, cW as mergeMap, cX as nameToSignal, cY as never, cZ as of, c_ as pairwise, c$ as parseCron, d0 as parsePrometheusText, d1 as parseStatsD, d2 as parseSyslog, d3 as pausable, d4 as pubsub, d5 as race, d6 as rateLimiter, d7 as reactiveIndex, d8 as reactiveList, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as verifiable, dX as window, dY as windowCount, dZ as windowTime, d_ as withBreaker, d$ as withLatestFrom, e0 as withMaxAttempts, e1 as withStatus, e2 as workerBridge, e3 as workerSelf, e4 as zip } from '../index-D1hgSTzr.cjs';
2
- export { a as ReactiveLogBundle, b as ReactiveLogOptions, R as ReactiveLogSnapshot, l as logSlice, o as observeGraph$, c as observeNode$, r as reactiveLog, t as toMessages$, d as toObservable } from '../reactive-log-CAXzJ7hw.cjs';
1
+ export { A as AdapterHandlers, b as AsyncSourceOpts, B as BackoffPreset, c as BackoffStrategy, d as BatchMessage, e as BridgeMessage, f as BufferedSinkHandle, C as CSVRow, g as CacheEvictionPolicy, h as CacheTier, i as CascadingCache, j as CascadingCacheOptions, k as CheckpointAdapter, l as CheckpointToRedisOptions, m as CheckpointToS3Options, n as CircuitBreaker, o as CircuitBreakerOptions, p as CircuitOpenError, q as CircuitState, r as ClickHouseClientLike, s as ClickHouseInsertClientLike, t as ClickHouseRow, u as CronSchedule, v as DictCheckpointAdapter, D as DistillBundle, w as DistillOptions, x as DrizzleQueryLike, y as ErrorMessage, z as EventTargetLike, F as ExponentialBackoffOptions, E as Extraction, G as FSEvent, H as FSEventType, I as FileCheckpointAdapter, J as FileWriterLike, K as FromCSVOptions, L as FromClickHouseWatchOptions, M as FromCronOptions, O as FromDrizzleOptions, P as FromFSWatchOptions, Q as FromGitHookOptions, S as FromHTTPOptions, T as FromKafkaOptions, U as FromKyselyOptions, V as FromMCPOptions, W as FromNATSOptions, X as FromNDJSONOptions, Y as FromOTelOptions, Z as FromPrismaOptions, _ as FromPrometheusOptions, $ as FromPulsarOptions, a0 as FromRabbitMQOptions, a1 as FromRedisStreamOptions, a2 as FromSqliteOptions, a3 as FromStatsDOptions, a4 as FromSyslogOptions, a5 as GitEvent, a6 as GitHookType, a7 as HTTPBundle, a8 as IndexRow, a9 as IndexedDbCheckpointSpec, aa as InitMessage, ab as JitterMode, ac as KafkaConsumerLike, ad as KafkaMessage, ae as KafkaProducerLike, af as KyselyQueryLike, ag as LokiClientLike, ah as LokiStream, ai as MCPClientLike, aj as MemoryCheckpointAdapter, ak as MergeMapOptions, al as MongoCollectionLike, am as NATSClientLike, an as NATSMessage, ao as NATSSubscriptionLike, ap as NS_PER_MS, aq as NS_PER_SEC, N as NodeInput, ar as OTelBundle, as as OTelLog, at as OTelMetric, au as OTelRegister, av as OTelSpan, aw as PostgresClientLike, ax as PrismaModelLike, ay as PrometheusMetric, az as PubSubHub, aA as PulsarConsumerLike, aB as PulsarMessage, aC as PulsarProducerLike, aD as RabbitMQChannelLike, aE as RabbitMQMessage, aF as ReactiveIndexBundle, aG as ReactiveIndexOptions, aH as ReactiveIndexSnapshot, aI as ReactiveListBundle, aJ as ReactiveListOptions, R as ReactiveListSnapshot, aK as ReactiveMapBundle, aL as ReactiveMapOptions, a as ReactiveMapSnapshot, aM as ReadyMessage, aN as RedisCheckpointClientLike, aO as RedisClientLike, aP as RedisStreamEntry, aQ as RetryOptions, aR as S3ClientLike, aS as SignalMessage, aT as SinkHandle, aU as SinkTransportError, aV as SqliteCheckpointAdapter, aW as SqliteDbLike, aX as StatsDMetric, aY as StatsDRegister, aZ as StatusValue, a_ as SyslogMessage, a$ as SyslogRegister, b0 as TapObserver, b1 as TempoClientLike, b2 as ThrottleOptions, b3 as TieredStorage, b4 as TieredStorageOptions, b5 as TimeoutError, b6 as ToCSVOptions, b7 as ToClickHouseOptions, b8 as ToFileOptions, b9 as ToKafkaOptions, ba as ToLokiOptions, bb as ToMongoOptions, bc as ToNATSOptions, bd as ToPostgresOptions, be as ToPulsarOptions, bf as ToRabbitMQOptions, bg as ToRedisStreamOptions, bh as ToS3Options, bi as ToSSEOptions, bj as ToSqliteOptions, bk as ToTempoOptions, bl as ToWebSocketOptions, bm as ToWebSocketTransportError, bn as TokenBucket, bo as ValueMessage, bp as VerifiableBundle, bq as VerifiableOptions, br as VerifyValue, bs as WatermarkController, bt as WatermarkOptions, bu as WebSocketLike, bv as WebSocketMessageEventLike, bw as WebSocketRegister, bx as WebhookRegister, by as WithBreakerBundle, bz as WithStatusBundle, bA as WorkerBridge, bB as WorkerBridgeOptions, bC as WorkerSelfHandle, bD as WorkerSelfOptions, bE as WorkerTransport, bF as audit, bG as buffer, bH as bufferCount, bI as bufferTime, bJ as cache, bK as cached, bL as cascadingCache, bM as catchError, bN as checkpointNodeValue, bO as checkpointToRedis, bP as checkpointToS3, bQ as circuitBreaker, bR as combine, bS as combineLatest, bT as concat, bU as concatMap, bV as constant, bW as createTransport, bX as createWatermarkController, bY as debounce, bZ as debounceTime, b_ as decorrelatedJitter, b$ as delay, c0 as deserializeError, c1 as distill, c2 as distinctUntilChanged, c3 as elementAt, c4 as empty, c5 as escapeRegexChar, c6 as exhaustMap, c7 as exponential, c9 as fallback, ca as fibonacci, cb as filter, cc as find, cd as first, ce as firstValueFrom, cf as flatMap, cg as forEach, ch as fromAny, ci as fromAsyncIter, cj as fromCSV, ck as fromClickHouseWatch, cl as fromCron, cm as fromDrizzle, cn as fromEvent, co as fromFSWatch, cp as fromGitHook, cq as fromHTTP, cr as fromIDBRequest, cs as fromIDBTransaction, ct as fromIter, cu as fromKafka, cv as fromKysely, cw as fromMCP, cx as fromNATS, cy as fromNDJSON, cz as fromOTel, cA as fromPrisma, cB as fromPrometheus, cC as fromPromise, cD as fromPulsar, cE as fromRabbitMQ, cF as fromRedisStream, cG as fromSqlite, cH as fromStatsD, cI as fromSyslog, cJ as fromTimer, cK as fromWebSocket, cL as fromWebhook, cM as gate, cN as globToRegExp, cO as interval, cP as last, cQ as linear, cR as lru, cS as map, cT as matchesAnyPattern, cU as matchesCron, cV as merge, cW as mergeMap, cX as nameToSignal, cY as never, cZ as of, c_ as pairwise, c$ as parseCron, d0 as parsePrometheusText, d1 as parseStatsD, d2 as parseSyslog, d3 as pausable, d4 as pubsub, d5 as race, d6 as rateLimiter, d7 as reactiveIndex, d8 as reactiveList, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as verifiable, dX as window, dY as windowCount, dZ as windowTime, d_ as withBreaker, d$ as withLatestFrom, e0 as withMaxAttempts, e1 as withStatus, e2 as workerBridge, e3 as workerSelf, e4 as zip } from '../index-BP1t_38S.cjs';
2
+ export { a as ReactiveLogBundle, b as ReactiveLogOptions, R as ReactiveLogSnapshot, l as logSlice, o as observeGraph$, c as observeNode$, r as reactiveLog, t as toMessages$, d as toObservable } from '../reactive-log-BfX6bOSZ.cjs';
3
3
  import '../meta-BJEU8fYz.cjs';
4
- import '../graph-B3BoJjcb.cjs';
4
+ import '../graph-DqTICAY2.cjs';
5
5
  import 'rxjs';
@@ -1,5 +1,5 @@
1
- export { A as AdapterHandlers, b as AsyncSourceOpts, B as BackoffPreset, c as BackoffStrategy, d as BatchMessage, e as BridgeMessage, f as BufferedSinkHandle, C as CSVRow, g as CacheEvictionPolicy, h as CacheTier, i as CascadingCache, j as CascadingCacheOptions, k as CheckpointAdapter, l as CheckpointToRedisOptions, m as CheckpointToS3Options, n as CircuitBreaker, o as CircuitBreakerOptions, p as CircuitOpenError, q as CircuitState, r as ClickHouseClientLike, s as ClickHouseInsertClientLike, t as ClickHouseRow, u as CronSchedule, v as DictCheckpointAdapter, D as DistillBundle, w as DistillOptions, x as DrizzleQueryLike, y as ErrorMessage, z as EventTargetLike, F as ExponentialBackoffOptions, E as Extraction, G as FSEvent, H as FSEventType, I as FileCheckpointAdapter, J as FileWriterLike, K as FromCSVOptions, L as FromClickHouseWatchOptions, M as FromCronOptions, O as FromDrizzleOptions, P as FromFSWatchOptions, Q as FromGitHookOptions, S as FromHTTPOptions, T as FromKafkaOptions, U as FromKyselyOptions, V as FromMCPOptions, W as FromNATSOptions, X as FromNDJSONOptions, Y as FromOTelOptions, Z as FromPrismaOptions, _ as FromPrometheusOptions, $ as FromPulsarOptions, a0 as FromRabbitMQOptions, a1 as FromRedisStreamOptions, a2 as FromSqliteOptions, a3 as FromStatsDOptions, a4 as FromSyslogOptions, a5 as GitEvent, a6 as GitHookType, a7 as HTTPBundle, a8 as IndexRow, a9 as IndexedDbCheckpointSpec, aa as InitMessage, ab as JitterMode, ac as KafkaConsumerLike, ad as KafkaMessage, ae as KafkaProducerLike, af as KyselyQueryLike, ag as LokiClientLike, ah as LokiStream, ai as MCPClientLike, aj as MemoryCheckpointAdapter, ak as MergeMapOptions, al as MongoCollectionLike, am as NATSClientLike, an as NATSMessage, ao as NATSSubscriptionLike, ap as NS_PER_MS, aq as NS_PER_SEC, N as NodeInput, ar as OTelBundle, as as OTelLog, at as OTelMetric, au as OTelRegister, av as OTelSpan, aw as PostgresClientLike, ax as PrismaModelLike, ay as PrometheusMetric, az as PubSubHub, aA as PulsarConsumerLike, aB as PulsarMessage, aC as PulsarProducerLike, aD as RabbitMQChannelLike, aE as RabbitMQMessage, aF as ReactiveIndexBundle, aG as ReactiveIndexOptions, aH as ReactiveIndexSnapshot, aI as ReactiveListBundle, aJ as ReactiveListOptions, R as ReactiveListSnapshot, aK as ReactiveMapBundle, aL as ReactiveMapOptions, a as ReactiveMapSnapshot, aM as ReadyMessage, aN as RedisCheckpointClientLike, aO as RedisClientLike, aP as RedisStreamEntry, aQ as RetryOptions, aR as S3ClientLike, aS as SignalMessage, aT as SinkHandle, aU as SinkTransportError, aV as SqliteCheckpointAdapter, aW as SqliteDbLike, aX as StatsDMetric, aY as StatsDRegister, aZ as StatusValue, a_ as SyslogMessage, a$ as SyslogRegister, b0 as TapObserver, b1 as TempoClientLike, b2 as ThrottleOptions, b3 as TieredStorage, b4 as TieredStorageOptions, b5 as TimeoutError, b6 as ToCSVOptions, b7 as ToClickHouseOptions, b8 as ToFileOptions, b9 as ToKafkaOptions, ba as ToLokiOptions, bb as ToMongoOptions, bc as ToNATSOptions, bd as ToPostgresOptions, be as ToPulsarOptions, bf as ToRabbitMQOptions, bg as ToRedisStreamOptions, bh as ToS3Options, bi as ToSSEOptions, bj as ToSqliteOptions, bk as ToTempoOptions, bl as ToWebSocketOptions, bm as ToWebSocketTransportError, bn as TokenBucket, bo as ValueMessage, bp as VerifiableBundle, bq as VerifiableOptions, br as VerifyValue, bs as WatermarkController, bt as WatermarkOptions, bu as WebSocketLike, bv as WebSocketMessageEventLike, bw as WebSocketRegister, bx as WebhookRegister, by as WithBreakerBundle, bz as WithStatusBundle, bA as WorkerBridge, bB as WorkerBridgeOptions, bC as WorkerSelfHandle, bD as WorkerSelfOptions, bE as WorkerTransport, bF as audit, bG as buffer, bH as bufferCount, bI as bufferTime, bJ as cache, bK as cached, bL as cascadingCache, bM as catchError, bN as checkpointNodeValue, bO as checkpointToRedis, bP as checkpointToS3, bQ as circuitBreaker, bR as combine, bS as combineLatest, bT as concat, bU as concatMap, bV as constant, bW as createTransport, bX as createWatermarkController, bY as debounce, bZ as debounceTime, b_ as decorrelatedJitter, b$ as delay, c0 as deserializeError, c1 as distill, c2 as distinctUntilChanged, c3 as elementAt, c4 as empty, c5 as escapeRegexChar, c6 as exhaustMap, c7 as exponential, c9 as fallback, ca as fibonacci, cb as filter, cc as find, cd as first, ce as firstValueFrom, cf as flatMap, cg as forEach, ch as fromAny, ci as fromAsyncIter, cj as fromCSV, ck as fromClickHouseWatch, cl as fromCron, cm as fromDrizzle, cn as fromEvent, co as fromFSWatch, cp as fromGitHook, cq as fromHTTP, cr as fromIDBRequest, cs as fromIDBTransaction, ct as fromIter, cu as fromKafka, cv as fromKysely, cw as fromMCP, cx as fromNATS, cy as fromNDJSON, cz as fromOTel, cA as fromPrisma, cB as fromPrometheus, cC as fromPromise, cD as fromPulsar, cE as fromRabbitMQ, cF as fromRedisStream, cG as fromSqlite, cH as fromStatsD, cI as fromSyslog, cJ as fromTimer, cK as fromWebSocket, cL as fromWebhook, cM as gate, cN as globToRegExp, cO as interval, cP as last, cQ as linear, cR as lru, cS as map, cT as matchesAnyPattern, cU as matchesCron, cV as merge, cW as mergeMap, cX as nameToSignal, cY as never, cZ as of, c_ as pairwise, c$ as parseCron, d0 as parsePrometheusText, d1 as parseStatsD, d2 as parseSyslog, d3 as pausable, d4 as pubsub, d5 as race, d6 as rateLimiter, d7 as reactiveIndex, d8 as reactiveList, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as verifiable, dX as window, dY as windowCount, dZ as windowTime, d_ as withBreaker, d$ as withLatestFrom, e0 as withMaxAttempts, e1 as withStatus, e2 as workerBridge, e3 as workerSelf, e4 as zip } from '../index-Pm68AYPh.js';
2
- export { a as ReactiveLogBundle, b as ReactiveLogOptions, R as ReactiveLogSnapshot, l as logSlice, o as observeGraph$, c as observeNode$, r as reactiveLog, t as toMessages$, d as toObservable } from '../reactive-log-DwNhOe0g.js';
1
+ export { A as AdapterHandlers, b as AsyncSourceOpts, B as BackoffPreset, c as BackoffStrategy, d as BatchMessage, e as BridgeMessage, f as BufferedSinkHandle, C as CSVRow, g as CacheEvictionPolicy, h as CacheTier, i as CascadingCache, j as CascadingCacheOptions, k as CheckpointAdapter, l as CheckpointToRedisOptions, m as CheckpointToS3Options, n as CircuitBreaker, o as CircuitBreakerOptions, p as CircuitOpenError, q as CircuitState, r as ClickHouseClientLike, s as ClickHouseInsertClientLike, t as ClickHouseRow, u as CronSchedule, v as DictCheckpointAdapter, D as DistillBundle, w as DistillOptions, x as DrizzleQueryLike, y as ErrorMessage, z as EventTargetLike, F as ExponentialBackoffOptions, E as Extraction, G as FSEvent, H as FSEventType, I as FileCheckpointAdapter, J as FileWriterLike, K as FromCSVOptions, L as FromClickHouseWatchOptions, M as FromCronOptions, O as FromDrizzleOptions, P as FromFSWatchOptions, Q as FromGitHookOptions, S as FromHTTPOptions, T as FromKafkaOptions, U as FromKyselyOptions, V as FromMCPOptions, W as FromNATSOptions, X as FromNDJSONOptions, Y as FromOTelOptions, Z as FromPrismaOptions, _ as FromPrometheusOptions, $ as FromPulsarOptions, a0 as FromRabbitMQOptions, a1 as FromRedisStreamOptions, a2 as FromSqliteOptions, a3 as FromStatsDOptions, a4 as FromSyslogOptions, a5 as GitEvent, a6 as GitHookType, a7 as HTTPBundle, a8 as IndexRow, a9 as IndexedDbCheckpointSpec, aa as InitMessage, ab as JitterMode, ac as KafkaConsumerLike, ad as KafkaMessage, ae as KafkaProducerLike, af as KyselyQueryLike, ag as LokiClientLike, ah as LokiStream, ai as MCPClientLike, aj as MemoryCheckpointAdapter, ak as MergeMapOptions, al as MongoCollectionLike, am as NATSClientLike, an as NATSMessage, ao as NATSSubscriptionLike, ap as NS_PER_MS, aq as NS_PER_SEC, N as NodeInput, ar as OTelBundle, as as OTelLog, at as OTelMetric, au as OTelRegister, av as OTelSpan, aw as PostgresClientLike, ax as PrismaModelLike, ay as PrometheusMetric, az as PubSubHub, aA as PulsarConsumerLike, aB as PulsarMessage, aC as PulsarProducerLike, aD as RabbitMQChannelLike, aE as RabbitMQMessage, aF as ReactiveIndexBundle, aG as ReactiveIndexOptions, aH as ReactiveIndexSnapshot, aI as ReactiveListBundle, aJ as ReactiveListOptions, R as ReactiveListSnapshot, aK as ReactiveMapBundle, aL as ReactiveMapOptions, a as ReactiveMapSnapshot, aM as ReadyMessage, aN as RedisCheckpointClientLike, aO as RedisClientLike, aP as RedisStreamEntry, aQ as RetryOptions, aR as S3ClientLike, aS as SignalMessage, aT as SinkHandle, aU as SinkTransportError, aV as SqliteCheckpointAdapter, aW as SqliteDbLike, aX as StatsDMetric, aY as StatsDRegister, aZ as StatusValue, a_ as SyslogMessage, a$ as SyslogRegister, b0 as TapObserver, b1 as TempoClientLike, b2 as ThrottleOptions, b3 as TieredStorage, b4 as TieredStorageOptions, b5 as TimeoutError, b6 as ToCSVOptions, b7 as ToClickHouseOptions, b8 as ToFileOptions, b9 as ToKafkaOptions, ba as ToLokiOptions, bb as ToMongoOptions, bc as ToNATSOptions, bd as ToPostgresOptions, be as ToPulsarOptions, bf as ToRabbitMQOptions, bg as ToRedisStreamOptions, bh as ToS3Options, bi as ToSSEOptions, bj as ToSqliteOptions, bk as ToTempoOptions, bl as ToWebSocketOptions, bm as ToWebSocketTransportError, bn as TokenBucket, bo as ValueMessage, bp as VerifiableBundle, bq as VerifiableOptions, br as VerifyValue, bs as WatermarkController, bt as WatermarkOptions, bu as WebSocketLike, bv as WebSocketMessageEventLike, bw as WebSocketRegister, bx as WebhookRegister, by as WithBreakerBundle, bz as WithStatusBundle, bA as WorkerBridge, bB as WorkerBridgeOptions, bC as WorkerSelfHandle, bD as WorkerSelfOptions, bE as WorkerTransport, bF as audit, bG as buffer, bH as bufferCount, bI as bufferTime, bJ as cache, bK as cached, bL as cascadingCache, bM as catchError, bN as checkpointNodeValue, bO as checkpointToRedis, bP as checkpointToS3, bQ as circuitBreaker, bR as combine, bS as combineLatest, bT as concat, bU as concatMap, bV as constant, bW as createTransport, bX as createWatermarkController, bY as debounce, bZ as debounceTime, b_ as decorrelatedJitter, b$ as delay, c0 as deserializeError, c1 as distill, c2 as distinctUntilChanged, c3 as elementAt, c4 as empty, c5 as escapeRegexChar, c6 as exhaustMap, c7 as exponential, c9 as fallback, ca as fibonacci, cb as filter, cc as find, cd as first, ce as firstValueFrom, cf as flatMap, cg as forEach, ch as fromAny, ci as fromAsyncIter, cj as fromCSV, ck as fromClickHouseWatch, cl as fromCron, cm as fromDrizzle, cn as fromEvent, co as fromFSWatch, cp as fromGitHook, cq as fromHTTP, cr as fromIDBRequest, cs as fromIDBTransaction, ct as fromIter, cu as fromKafka, cv as fromKysely, cw as fromMCP, cx as fromNATS, cy as fromNDJSON, cz as fromOTel, cA as fromPrisma, cB as fromPrometheus, cC as fromPromise, cD as fromPulsar, cE as fromRabbitMQ, cF as fromRedisStream, cG as fromSqlite, cH as fromStatsD, cI as fromSyslog, cJ as fromTimer, cK as fromWebSocket, cL as fromWebhook, cM as gate, cN as globToRegExp, cO as interval, cP as last, cQ as linear, cR as lru, cS as map, cT as matchesAnyPattern, cU as matchesCron, cV as merge, cW as mergeMap, cX as nameToSignal, cY as never, cZ as of, c_ as pairwise, c$ as parseCron, d0 as parsePrometheusText, d1 as parseStatsD, d2 as parseSyslog, d3 as pausable, d4 as pubsub, d5 as race, d6 as rateLimiter, d7 as reactiveIndex, d8 as reactiveList, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as verifiable, dX as window, dY as windowCount, dZ as windowTime, d_ as withBreaker, d$ as withLatestFrom, e0 as withMaxAttempts, e1 as withStatus, e2 as workerBridge, e3 as workerSelf, e4 as zip } from '../index-a5gHmH5b.js';
2
+ export { a as ReactiveLogBundle, b as ReactiveLogOptions, R as ReactiveLogSnapshot, l as logSlice, o as observeGraph$, c as observeNode$, r as reactiveLog, t as toMessages$, d as toObservable } from '../reactive-log-RhgIog2Z.js';
3
3
  import '../meta-BJEU8fYz.js';
4
- import '../graph-CmiUuhaN.js';
4
+ import '../graph-X9uwnD_z.js';
5
5
  import 'rxjs';
@@ -136,7 +136,7 @@ import {
136
136
  workerBridge,
137
137
  workerSelf,
138
138
  zip
139
- } from "../chunk-ONLYF6GA.js";
139
+ } from "../chunk-TZLX4KIT.js";
140
140
  import {
141
141
  cached,
142
142
  createWatermarkController,
@@ -169,9 +169,9 @@ import {
169
169
  toArray,
170
170
  toMessages$,
171
171
  toObservable
172
- } from "../chunk-PEBORXRA.js";
172
+ } from "../chunk-YWTP2XRJ.js";
173
173
  import "../chunk-WZ2Z2CRV.js";
174
- import "../chunk-3EVXOI5C.js";
174
+ import "../chunk-QTZSBQGJ.js";
175
175
  export {
176
176
  CircuitOpenError,
177
177
  DictCheckpointAdapter,
@@ -338,6 +338,7 @@ function advanceVersion(info, newValue, hashFn) {
338
338
  }
339
339
 
340
340
  // src/core/node.ts
341
+ var NO_VALUE = /* @__PURE__ */ Symbol.for("graphrefly/NO_VALUE");
341
342
  function createIntBitSet() {
342
343
  let bits = 0;
343
344
  return {
@@ -438,7 +439,6 @@ var NodeImpl = class {
438
439
  _producerStarted = false;
439
440
  _connecting = false;
440
441
  _manualEmitUsed = false;
441
- _hasEmittedData = false;
442
442
  _sinkCount = 0;
443
443
  _singleDepSinkCount = 0;
444
444
  // --- Object/collection state ---
@@ -468,10 +468,10 @@ var NodeImpl = class {
468
468
  this._hasDeps = deps.length > 0;
469
469
  this._autoComplete = opts.completeWhenDepsComplete ?? true;
470
470
  this._isSingleDep = deps.length === 1 && fn != null;
471
- this._cached = opts.initial;
471
+ this._cached = "initial" in opts ? opts.initial : NO_VALUE;
472
472
  this._status = this._hasDeps ? "disconnected" : "settled";
473
473
  this._hashFn = opts.versioningHash ?? defaultHash;
474
- this._versioning = opts.versioning != null ? createVersioning(opts.versioning, this._cached, {
474
+ this._versioning = opts.versioning != null ? createVersioning(opts.versioning, this._cached === NO_VALUE ? void 0 : this._cached, {
475
475
  id: opts.versioningId,
476
476
  hash: this._hashFn
477
477
  }) : void 0;
@@ -555,10 +555,14 @@ var NodeImpl = class {
555
555
  _applyVersioning(level, opts) {
556
556
  if (this._versioning != null) return;
557
557
  this._hashFn = opts?.hash ?? this._hashFn;
558
- this._versioning = createVersioning(level, this._cached, {
559
- id: opts?.id,
560
- hash: this._hashFn
561
- });
558
+ this._versioning = createVersioning(
559
+ level,
560
+ this._cached === NO_VALUE ? void 0 : this._cached,
561
+ {
562
+ id: opts?.id,
563
+ hash: this._hashFn
564
+ }
565
+ );
562
566
  }
563
567
  hasGuard() {
564
568
  return this._guard != null;
@@ -568,7 +572,7 @@ var NodeImpl = class {
568
572
  return this._guard(normalizeActor(actor), "observe");
569
573
  }
570
574
  get() {
571
- return this._cached;
575
+ return this._cached === NO_VALUE ? void 0 : this._cached;
572
576
  }
573
577
  down(messages, options) {
574
578
  if (messages.length === 0) return;
@@ -625,6 +629,7 @@ var NodeImpl = class {
625
629
  }
626
630
  if (this._terminal && this._opts.resubscribable) {
627
631
  this._terminal = false;
632
+ this._cached = NO_VALUE;
628
633
  this._status = this._hasDeps ? "disconnected" : "settled";
629
634
  this._opts.onResubscribe?.();
630
635
  }
@@ -724,8 +729,7 @@ var NodeImpl = class {
724
729
  const cleanupFn = this._cleanup;
725
730
  this._cleanup = void 0;
726
731
  cleanupFn?.();
727
- this._cached = void 0;
728
- this._hasEmittedData = false;
732
+ this._cached = NO_VALUE;
729
733
  this._lastDepValues = void 0;
730
734
  }
731
735
  this._status = statusAfterMessage(this._status, m);
@@ -734,8 +738,7 @@ var NodeImpl = class {
734
738
  }
735
739
  if (t === TEARDOWN) {
736
740
  if (this._opts.resetOnTeardown) {
737
- this._cached = void 0;
738
- this._hasEmittedData = false;
741
+ this._cached = NO_VALUE;
739
742
  }
740
743
  const teardownCleanup = this._cleanup;
741
744
  this._cleanup = void 0;
@@ -768,14 +771,13 @@ var NodeImpl = class {
768
771
  const wasDirty = this._status === "dirty";
769
772
  let unchanged;
770
773
  try {
771
- unchanged = this._hasEmittedData && this._equals(this._cached, value);
774
+ unchanged = this._cached !== NO_VALUE && this._equals(this._cached, value);
772
775
  } catch (eqErr) {
773
776
  const eqMsg = eqErr instanceof Error ? eqErr.message : String(eqErr);
774
777
  const wrapped = new Error(`Node "${this.name}": equals threw: ${eqMsg}`, { cause: eqErr });
775
778
  this._downInternal([[ERROR, wrapped]]);
776
779
  return;
777
780
  }
778
- this._hasEmittedData = true;
779
781
  if (unchanged) {
780
782
  this._downInternal(wasDirty ? [[RESOLVED]] : [[DIRTY], [RESOLVED]]);
781
783
  return;
@@ -996,7 +998,7 @@ var DynamicNodeImpl = class {
996
998
  _actions;
997
999
  _boundEmitToSinks;
998
1000
  // Mutable state
999
- _cached;
1001
+ _cached = NO_VALUE;
1000
1002
  _status = "disconnected";
1001
1003
  _terminal = false;
1002
1004
  _connected = false;
@@ -1090,7 +1092,7 @@ var DynamicNodeImpl = class {
1090
1092
  return this._guard(normalizeActor(actor), "observe");
1091
1093
  }
1092
1094
  get() {
1093
- return this._cached;
1095
+ return this._cached === NO_VALUE ? void 0 : this._cached;
1094
1096
  }
1095
1097
  down(messages, options) {
1096
1098
  if (messages.length === 0) return;
@@ -1148,6 +1150,7 @@ var DynamicNodeImpl = class {
1148
1150
  }
1149
1151
  if (this._terminal && this._resubscribable) {
1150
1152
  this._terminal = false;
1153
+ this._cached = NO_VALUE;
1151
1154
  this._status = "disconnected";
1152
1155
  this._onResubscribe?.();
1153
1156
  }
@@ -1225,10 +1228,13 @@ var DynamicNodeImpl = class {
1225
1228
  const t = m[0];
1226
1229
  if (t === DATA) this._cached = m[1];
1227
1230
  if (t === INVALIDATE) {
1228
- this._cached = void 0;
1231
+ this._cached = NO_VALUE;
1232
+ this._status = "dirty";
1229
1233
  }
1230
- if (t === DATA || t === RESOLVED) {
1234
+ if (t === DATA) {
1231
1235
  this._status = "settled";
1236
+ } else if (t === RESOLVED) {
1237
+ this._status = "resolved";
1232
1238
  } else if (t === DIRTY) {
1233
1239
  this._status = "dirty";
1234
1240
  } else if (t === COMPLETE) {
@@ -1239,7 +1245,7 @@ var DynamicNodeImpl = class {
1239
1245
  this._terminal = true;
1240
1246
  }
1241
1247
  if (t === TEARDOWN) {
1242
- if (this._resetOnTeardown) this._cached = void 0;
1248
+ if (this._resetOnTeardown) this._cached = NO_VALUE;
1243
1249
  try {
1244
1250
  this._propagateToMeta(t);
1245
1251
  } finally {
@@ -1262,7 +1268,15 @@ var DynamicNodeImpl = class {
1262
1268
  }
1263
1269
  _emitAutoValue(value) {
1264
1270
  const wasDirty = this._status === "dirty";
1265
- const unchanged = this._equals(this._cached, value);
1271
+ let unchanged;
1272
+ try {
1273
+ unchanged = this._cached !== NO_VALUE && this._equals(this._cached, value);
1274
+ } catch (eqErr) {
1275
+ const eqMsg = eqErr instanceof Error ? eqErr.message : String(eqErr);
1276
+ const wrapped = new Error(`Node "${this.name}": equals threw: ${eqMsg}`, { cause: eqErr });
1277
+ this._downInternal([[ERROR, wrapped]]);
1278
+ return;
1279
+ }
1266
1280
  if (unchanged) {
1267
1281
  this._downInternal(wasDirty ? [[RESOLVED]] : [[DIRTY], [RESOLVED]]);
1268
1282
  return;
@@ -3087,20 +3101,28 @@ var Graph = class _Graph {
3087
3101
  return g;
3088
3102
  }
3089
3103
  /**
3090
- * Plain snapshot with **recursively sorted object keys** for deterministic serialization (§3.8).
3104
+ * Plain snapshot object with **recursively sorted object keys** for deterministic serialization (§3.8).
3091
3105
  *
3092
3106
  * @remarks
3093
- * ECMAScript `JSON.stringify(graph)` invokes this method; it must return a plain object, not an
3094
- * already-stringified JSON string (otherwise the graph would be double-encoded).
3095
3107
  * For a single UTF-8 string with a trailing newline (convenient for git), use {@link Graph.toJSONString}.
3096
3108
  *
3097
3109
  * @returns Same object as {@link Graph.snapshot}.
3098
3110
  */
3099
- toJSON() {
3111
+ toObject() {
3100
3112
  return this.snapshot();
3101
3113
  }
3102
3114
  /**
3103
- * Deterministic JSON **text**: `JSON.stringify` of {@link Graph.toJSON} plus a trailing newline (§3.8).
3115
+ * ECMAScript `JSON.stringify` hook — delegates to {@link Graph.toObject}.
3116
+ *
3117
+ * @remarks
3118
+ * Must return a plain object (not a string) so `JSON.stringify(graph)` works correctly
3119
+ * without double-encoding.
3120
+ */
3121
+ toJSON() {
3122
+ return this.toObject();
3123
+ }
3124
+ /**
3125
+ * Deterministic JSON **text**: `JSON.stringify` of {@link Graph.toObject} plus a trailing newline (§3.8).
3104
3126
  *
3105
3127
  * @returns Stable string suitable for diffs.
3106
3128
  */