@livestore/livestore 0.0.0-snapshot-d9d66b354a9f4cfae987725d38971992ff14e4ad → 0.0.0-snapshot-1d99fea7d2ce2c7a5d9ed0a3752f8a7bda6bc3db

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 (126) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/SqliteDbWrapper.d.ts +54 -0
  3. package/dist/SqliteDbWrapper.d.ts.map +1 -0
  4. package/dist/{SynchronousDatabaseWrapper.js → SqliteDbWrapper.js} +44 -9
  5. package/dist/SqliteDbWrapper.js.map +1 -0
  6. package/dist/effect/LiveStore.d.ts +16 -12
  7. package/dist/effect/LiveStore.d.ts.map +1 -1
  8. package/dist/effect/LiveStore.js +14 -14
  9. package/dist/effect/LiveStore.js.map +1 -1
  10. package/dist/index.d.ts +6 -7
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -4
  13. package/dist/index.js.map +1 -1
  14. package/dist/live-queries/base-class.d.ts +57 -21
  15. package/dist/live-queries/base-class.d.ts.map +1 -1
  16. package/dist/live-queries/base-class.js +54 -13
  17. package/dist/live-queries/base-class.js.map +1 -1
  18. package/dist/live-queries/computed.d.ts +7 -7
  19. package/dist/live-queries/computed.d.ts.map +1 -1
  20. package/dist/live-queries/computed.js +34 -11
  21. package/dist/live-queries/computed.js.map +1 -1
  22. package/dist/live-queries/{db.d.ts → db-query.d.ts} +15 -14
  23. package/dist/live-queries/db-query.d.ts.map +1 -0
  24. package/dist/live-queries/{db.js → db-query.js} +87 -43
  25. package/dist/live-queries/db-query.js.map +1 -0
  26. package/dist/live-queries/db-query.test.d.ts +2 -0
  27. package/dist/live-queries/db-query.test.d.ts.map +1 -0
  28. package/dist/live-queries/db-query.test.js +113 -0
  29. package/dist/live-queries/db-query.test.js.map +1 -0
  30. package/dist/live-queries/graphql.d.ts +8 -8
  31. package/dist/live-queries/graphql.d.ts.map +1 -1
  32. package/dist/live-queries/graphql.js +34 -9
  33. package/dist/live-queries/graphql.js.map +1 -1
  34. package/dist/live-queries/make-ref.d.ts +20 -0
  35. package/dist/live-queries/make-ref.d.ts.map +1 -0
  36. package/dist/live-queries/make-ref.js +33 -0
  37. package/dist/live-queries/make-ref.js.map +1 -0
  38. package/dist/reactive.d.ts +19 -13
  39. package/dist/reactive.d.ts.map +1 -1
  40. package/dist/reactive.js +22 -18
  41. package/dist/reactive.js.map +1 -1
  42. package/dist/reactive.test.js +1 -1
  43. package/dist/reactive.test.js.map +1 -1
  44. package/dist/row-query-utils.d.ts +4 -4
  45. package/dist/row-query-utils.d.ts.map +1 -1
  46. package/dist/row-query-utils.js +14 -10
  47. package/dist/row-query-utils.js.map +1 -1
  48. package/dist/store/create-store.d.ts +13 -12
  49. package/dist/store/create-store.d.ts.map +1 -1
  50. package/dist/store/create-store.js +27 -33
  51. package/dist/store/create-store.js.map +1 -1
  52. package/dist/store/devtools.d.ts +3 -3
  53. package/dist/store/devtools.d.ts.map +1 -1
  54. package/dist/store/devtools.js +56 -34
  55. package/dist/store/devtools.js.map +1 -1
  56. package/dist/store/store-types.d.ts +18 -18
  57. package/dist/store/store-types.d.ts.map +1 -1
  58. package/dist/store/store-types.js.map +1 -1
  59. package/dist/store/store.d.ts +57 -38
  60. package/dist/store/store.d.ts.map +1 -1
  61. package/dist/store/store.js +226 -188
  62. package/dist/store/store.js.map +1 -1
  63. package/dist/utils/dev.d.ts.map +1 -1
  64. package/dist/utils/dev.js +3 -2
  65. package/dist/utils/dev.js.map +1 -1
  66. package/dist/utils/function-string.d.ts +7 -0
  67. package/dist/utils/function-string.d.ts.map +1 -0
  68. package/dist/utils/function-string.js +9 -0
  69. package/dist/utils/function-string.js.map +1 -0
  70. package/dist/utils/stack-info.d.ts.map +1 -1
  71. package/dist/utils/stack-info.js +6 -1
  72. package/dist/utils/stack-info.js.map +1 -1
  73. package/dist/utils/stack-info.test.js +54 -1
  74. package/dist/utils/stack-info.test.js.map +1 -1
  75. package/dist/utils/tests/fixture.d.ts +2 -6
  76. package/dist/utils/tests/fixture.d.ts.map +1 -1
  77. package/dist/utils/tests/fixture.js +7 -13
  78. package/dist/utils/tests/fixture.js.map +1 -1
  79. package/dist/utils/tests/mod.d.ts +1 -0
  80. package/dist/utils/tests/mod.d.ts.map +1 -1
  81. package/dist/utils/tests/mod.js +1 -0
  82. package/dist/utils/tests/mod.js.map +1 -1
  83. package/dist/utils/tests/otel.d.ts +60 -1
  84. package/dist/utils/tests/otel.d.ts.map +1 -1
  85. package/dist/utils/tests/otel.js +65 -4
  86. package/dist/utils/tests/otel.js.map +1 -1
  87. package/package.json +12 -12
  88. package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +59 -14
  89. package/src/ambient.d.ts +1 -1
  90. package/src/effect/LiveStore.ts +32 -33
  91. package/src/index.ts +14 -7
  92. package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +220 -72
  93. package/src/live-queries/base-class.ts +151 -40
  94. package/src/live-queries/computed.ts +44 -19
  95. package/src/live-queries/{db.test.ts → db-query.test.ts} +46 -33
  96. package/src/live-queries/{db.ts → db-query.ts} +123 -61
  97. package/src/live-queries/graphql.ts +46 -21
  98. package/src/live-queries/make-ref.ts +47 -0
  99. package/src/reactive.test.ts +1 -1
  100. package/src/reactive.ts +60 -37
  101. package/src/row-query-utils.ts +29 -18
  102. package/src/store/create-store.ts +106 -113
  103. package/src/store/devtools.ts +65 -39
  104. package/src/store/store-types.ts +20 -18
  105. package/src/store/store.ts +362 -289
  106. package/src/utils/dev.ts +4 -2
  107. package/src/utils/function-string.ts +12 -0
  108. package/src/utils/stack-info.test.ts +58 -1
  109. package/src/utils/stack-info.ts +6 -1
  110. package/src/utils/tests/fixture.ts +6 -16
  111. package/src/utils/tests/mod.ts +1 -0
  112. package/src/utils/tests/otel.ts +71 -5
  113. package/dist/SynchronousDatabaseWrapper.d.ts +0 -36
  114. package/dist/SynchronousDatabaseWrapper.d.ts.map +0 -1
  115. package/dist/SynchronousDatabaseWrapper.js.map +0 -1
  116. package/dist/global-state.d.ts +0 -14
  117. package/dist/global-state.d.ts.map +0 -1
  118. package/dist/global-state.js +0 -16
  119. package/dist/global-state.js.map +0 -1
  120. package/dist/live-queries/db.d.ts.map +0 -1
  121. package/dist/live-queries/db.js.map +0 -1
  122. package/dist/live-queries/db.test.d.ts +0 -2
  123. package/dist/live-queries/db.test.d.ts.map +0 -1
  124. package/dist/live-queries/db.test.js +0 -117
  125. package/dist/live-queries/db.test.js.map +0 -1
  126. package/src/global-state.ts +0 -20
@@ -0,0 +1,54 @@
1
+ import type { DebugInfo, MutableDebugInfo, PreparedBindValues, PreparedStatement, SqliteDb, SqliteDbChangeset, SqliteDbSession } from '@livestore/common';
2
+ import type * as otel from '@opentelemetry/api';
3
+ export declare const emptyDebugInfo: () => DebugInfo;
4
+ /**
5
+ * This class is mostly adding result caching around a SqliteDb which is used to speed up
6
+ * SQLite queries when used through the reactivity graph.
7
+ */
8
+ export declare class SqliteDbWrapper implements SqliteDb {
9
+ _tag: "SqliteDb";
10
+ private cachedStmts;
11
+ private tablesUsedCache;
12
+ private resultCache;
13
+ private db;
14
+ private otelTracer;
15
+ private otelRootSpanContext;
16
+ private tablesUsedStmt;
17
+ debugInfo: MutableDebugInfo;
18
+ constructor({ db, otel, }: {
19
+ db: SqliteDb;
20
+ otel: {
21
+ tracer: otel.Tracer;
22
+ rootSpanContext: otel.Context;
23
+ };
24
+ });
25
+ metadata: any;
26
+ prepare(queryStr: string): PreparedStatement;
27
+ import(data: Uint8Array<ArrayBufferLike> | SqliteDb<any, any>): void;
28
+ close(): void;
29
+ destroy(): void;
30
+ session(): SqliteDbSession;
31
+ makeChangeset(data: Uint8Array): SqliteDbChangeset;
32
+ txn<TRes>(callback: () => TRes): TRes;
33
+ withChangeset<TRes>(callback: () => TRes): {
34
+ result: TRes;
35
+ changeset: Uint8Array | undefined;
36
+ };
37
+ rollback(changeset: Uint8Array): void;
38
+ getTablesUsed(query: string): Set<string>;
39
+ execute(queryStr: string, bindValues?: PreparedBindValues | undefined, options?: {
40
+ hasNoEffects?: boolean;
41
+ otelContext?: otel.Context;
42
+ writeTables?: ReadonlySet<string>;
43
+ onRowsChanged?: (rowsChanged: number) => void;
44
+ }): {
45
+ durationMs: number;
46
+ };
47
+ select<T = any>(queryStr: string, bindValues?: PreparedBindValues | undefined, options?: {
48
+ queriedTables?: ReadonlySet<string>;
49
+ skipCache?: boolean;
50
+ otelContext?: otel.Context;
51
+ }): ReadonlyArray<T>;
52
+ export(): Uint8Array<ArrayBufferLike>;
53
+ }
54
+ //# sourceMappingURL=SqliteDbWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteDbWrapper.d.ts","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAK/C,eAAO,MAAM,cAAc,QAAO,SAKhC,CAAA;AAEF;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,EAAG,UAAU,CAAS;IAE1B,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,cAAc,CAAA;IACf,SAAS,EAAE,gBAAgB,CAAmB;gBAEzC,EACV,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,QAAQ,CAAA;QACZ,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;YACnB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAA;SAC9B,CAAA;KACF;IAaD,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAG5C,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAG7D,KAAK,IAAI,IAAI;IAGb,OAAO,IAAI,IAAI;IAGf,OAAO,IAAI,eAAe;IAG1B,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB;IAIlD,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAqBrC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE;IAU9F,QAAQ,CAAC,SAAS,EAAE,UAAU;IAK9B,aAAa,CAAC,KAAK,EAAE,MAAM;IA4B3B,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;KAC9C,GACA;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IA8CzB,MAAM,CAAC,CAAC,GAAG,GAAG,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACnC,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;KAC3B,GACA,aAAa,CAAC,CAAC,CAAC;IA+DnB,MAAM;CAQP"}
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
2
  import { BoundArray, BoundMap, sql } from '@livestore/common';
3
+ import { isDevEnv } from '@livestore/utils';
3
4
  import QueryCache from './QueryCache.js';
4
5
  import { getDurationMsFromSpan, getStartTimeHighResFromSpan } from './utils/otel.js';
5
6
  export const emptyDebugInfo = () => ({
@@ -8,7 +9,12 @@ export const emptyDebugInfo = () => ({
8
9
  queryFrameCount: 0,
9
10
  events: new BoundArray(1000),
10
11
  });
11
- export class SynchronousDatabaseWrapper {
12
+ /**
13
+ * This class is mostly adding result caching around a SqliteDb which is used to speed up
14
+ * SQLite queries when used through the reactivity graph.
15
+ */
16
+ export class SqliteDbWrapper {
17
+ _tag = 'SqliteDb';
12
18
  // TODO: how many unique active statements are expected?
13
19
  cachedStmts = new BoundMap(200);
14
20
  tablesUsedCache = new BoundMap(200);
@@ -26,6 +32,25 @@ export class SynchronousDatabaseWrapper {
26
32
  this.cachedStmts.onEvict = (_queryStr, stmt) => stmt.finalize();
27
33
  configureSQLite(this);
28
34
  }
35
+ metadata;
36
+ prepare(queryStr) {
37
+ return this.db.prepare(queryStr);
38
+ }
39
+ import(data) {
40
+ return this.db.import(data);
41
+ }
42
+ close() {
43
+ return this.db.close();
44
+ }
45
+ destroy() {
46
+ return this.db.destroy();
47
+ }
48
+ session() {
49
+ return this.db.session();
50
+ }
51
+ makeChangeset(data) {
52
+ return this.db.makeChangeset(data);
53
+ }
29
54
  txn(callback) {
30
55
  this.execute(sql `begin transaction;`);
31
56
  let errored = false;
@@ -43,6 +68,17 @@ export class SynchronousDatabaseWrapper {
43
68
  }
44
69
  return result;
45
70
  }
71
+ withChangeset(callback) {
72
+ const session = this.db.session();
73
+ const result = callback();
74
+ const changeset = session.changeset();
75
+ session.finish();
76
+ return { result, changeset };
77
+ }
78
+ rollback(changeset) {
79
+ const invertedChangeset = this.db.makeChangeset(changeset).invert();
80
+ invertedChangeset.apply();
81
+ }
46
82
  getTablesUsed(query) {
47
83
  // It seems that SQLite doesn't properly handle `DELETE FROM SOME_TABLE` queries without a WHERE clause
48
84
  // So we need to handle these queries separately
@@ -69,7 +105,7 @@ export class SynchronousDatabaseWrapper {
69
105
  this.tablesUsedCache.set(query, tablesUsed);
70
106
  return tablesUsed;
71
107
  }
72
- execute(queryStr, bindValues, writeTables, options) {
108
+ execute(queryStr, bindValues, options) {
73
109
  // console.debug('in-memory-db:execute', query, bindValues)
74
110
  return this.otelTracer.startActiveSpan('livestore.in-memory-db:execute',
75
111
  // TODO truncate query string
@@ -83,13 +119,13 @@ export class SynchronousDatabaseWrapper {
83
119
  if (options?.hasNoEffects !== true && !this.resultCache.ignoreQuery(queryStr)) {
84
120
  // TODO use write tables instead
85
121
  // check what queries actually end up here.
86
- this.resultCache.invalidate(writeTables ?? this.getTablesUsed(queryStr));
122
+ this.resultCache.invalidate(options?.writeTables ?? this.getTablesUsed(queryStr));
87
123
  }
88
124
  span.end();
89
125
  const durationMs = getDurationMsFromSpan(span);
90
126
  this.debugInfo.queryFrameDuration += durationMs;
91
127
  this.debugInfo.queryFrameCount++;
92
- if (durationMs > 5 && import.meta.env.DEV) {
128
+ if (durationMs > 5 && isDevEnv()) {
93
129
  this.debugInfo.slowQueries.push({
94
130
  queryStr,
95
131
  bindValues,
@@ -102,8 +138,8 @@ export class SynchronousDatabaseWrapper {
102
138
  return { durationMs };
103
139
  });
104
140
  }
105
- select(queryStr, options) {
106
- const { queriedTables, bindValues, skipCache = false, otelContext } = options ?? {};
141
+ select(queryStr, bindValues, options) {
142
+ const { queriedTables, skipCache = false, otelContext } = options ?? {};
107
143
  // console.debug('in-memory-db:select', query, bindValues)
108
144
  return this.otelTracer.startActiveSpan('sql-in-memory-select', {}, otelContext ?? this.otelRootSpanContext, (span) => {
109
145
  try {
@@ -131,7 +167,7 @@ export class SynchronousDatabaseWrapper {
131
167
  this.debugInfo.queryFrameDuration += durationMs;
132
168
  this.debugInfo.queryFrameCount++;
133
169
  // TODO also enable in non-dev mode
134
- if (durationMs > 5 && import.meta.env.DEV) {
170
+ if (durationMs > 5 && isDevEnv()) {
135
171
  this.debugInfo.slowQueries.push({
136
172
  queryStr,
137
173
  bindValues,
@@ -163,7 +199,6 @@ const configureSQLite = (db) => {
163
199
  sql `
164
200
  PRAGMA page_size=32768;
165
201
  PRAGMA cache_size=10000;
166
- PRAGMA journal_mode='MEMORY'; -- we don't flush to disk before committing a write
167
202
  PRAGMA synchronous='OFF';
168
203
  PRAGMA temp_store='MEMORY';
169
204
  PRAGMA foreign_keys='ON'; -- we want foreign key constraints to be enforced
@@ -173,4 +208,4 @@ const tryGetTableNameFromPlainDeleteQuery = (query) => {
173
208
  const [_, tableName] = query.trim().match(/^delete\s+from\s+(\w+)$/i) ?? [];
174
209
  return tableName;
175
210
  };
176
- //# sourceMappingURL=SynchronousDatabaseWrapper.js.map
211
+ //# sourceMappingURL=SqliteDbWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteDbWrapper.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,19 @@
1
1
  import type { Adapter, BootStatus, UnexpectedError } from '@livestore/common';
2
2
  import type { LiveStoreSchema } from '@livestore/common/schema';
3
- import type { Cause, Scope } from '@livestore/utils/effect';
3
+ import type { Cause, OtelTracer, Scope } from '@livestore/utils/effect';
4
4
  import { Context, Deferred, Effect, Layer } from '@livestore/utils/effect';
5
- import * as otel from '@opentelemetry/api';
5
+ import type * as otel from '@opentelemetry/api';
6
6
  import type { GraphQLSchema } from 'graphql';
7
+ import type { SqliteDbWrapper } from '../SqliteDbWrapper.js';
7
8
  import type { Store } from '../store/store.js';
8
9
  import type { BaseGraphQLContext, LiveStoreContextRunning as LiveStoreContextRunning_ } from '../store/store-types.js';
9
- import type { SynchronousDatabaseWrapper } from '../SynchronousDatabaseWrapper.js';
10
- export type LiveStoreContextRunning = LiveStoreContextRunning_;
11
- export declare const LiveStoreContextRunning: Context.Tag<LiveStoreContextRunning_, LiveStoreContextRunning_>;
12
- export type DeferredStoreContext = Deferred.Deferred<LiveStoreContextRunning, UnexpectedError>;
13
- export declare const DeferredStoreContext: Context.Tag<DeferredStoreContext, DeferredStoreContext>;
10
+ declare const LiveStoreContextRunning_base: Context.TagClass<LiveStoreContextRunning, "@livestore/livestore/effect/LiveStoreContextRunning", LiveStoreContextRunning_>;
11
+ export declare class LiveStoreContextRunning extends LiveStoreContextRunning_base {
12
+ static fromDeferred: Layer.Layer<LiveStoreContextRunning, UnexpectedError, DeferredStoreContext>;
13
+ }
14
+ declare const DeferredStoreContext_base: Context.TagClass<DeferredStoreContext, "@livestore/livestore/effect/DeferredStoreContext", Deferred.Deferred<LiveStoreContextRunning_, UnexpectedError>>;
15
+ export declare class DeferredStoreContext extends DeferredStoreContext_base {
16
+ }
14
17
  export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
15
18
  schema: LiveStoreSchema;
16
19
  /**
@@ -23,16 +26,17 @@ export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
23
26
  */
24
27
  storeId?: string;
25
28
  graphQLOptions?: {
26
- schema: Effect.Effect<GraphQLSchema, never, otel.Tracer>;
27
- makeContext: (db: SynchronousDatabaseWrapper, tracer: otel.Tracer, sessionId: string) => GraphQLContext;
29
+ schema: Effect.Effect<GraphQLSchema, never, OtelTracer.OtelTracer>;
30
+ makeContext: (db: SqliteDbWrapper, tracer: otel.Tracer, sessionId: string) => GraphQLContext;
28
31
  };
29
- boot?: (store: Store<GraphQLContext, LiveStoreSchema>) => Effect.Effect<void, unknown, otel.Tracer>;
32
+ boot?: (store: Store<GraphQLContext, LiveStoreSchema>) => Effect.Effect<void, unknown, OtelTracer.OtelTracer | LiveStoreContextRunning>;
30
33
  adapter: Adapter;
31
34
  disableDevtools?: boolean;
32
35
  onBootStatus?: (status: BootStatus) => void;
33
36
  batchUpdates: (run: () => void) => void;
34
37
  };
35
- export declare const LiveStoreContextLayer: <GraphQLContext extends BaseGraphQLContext>(props: LiveStoreContextProps<GraphQLContext>) => Layer.Layer<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, otel.Tracer>;
38
+ export declare const LiveStoreContextLayer: <GraphQLContext extends BaseGraphQLContext>(props: LiveStoreContextProps<GraphQLContext>) => Layer.Layer<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, OtelTracer.OtelTracer>;
36
39
  export declare const LiveStoreContextDeferred: Layer.Layer<DeferredStoreContext, never, never>;
37
- export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, storeId, graphQLOptions: graphQLOptions_, boot, adapter, disableDevtools, onBootStatus, batchUpdates, }: LiveStoreContextProps<GraphQLContext>) => Effect.Effect<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, DeferredStoreContext | Scope.Scope | otel.Tracer>;
40
+ export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, storeId, graphQLOptions: graphQLOptions_, boot, adapter, disableDevtools, onBootStatus, batchUpdates, }: LiveStoreContextProps<GraphQLContext>) => Effect.Effect<LiveStoreContextRunning["Type"], UnexpectedError | Cause.TimeoutException, DeferredStoreContext | Scope.Scope | OtelTracer.OtelTracer>;
41
+ export {};
38
42
  //# sourceMappingURL=LiveStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAY,MAAM,EAAY,KAAK,EAAoB,MAAM,yBAAyB,CAAA;AAChH,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AACtH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAElF,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAA;AAC9D,eAAO,MAAM,uBAAuB,iEAEnC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAA;AAC9F,eAAO,MAAM,oBAAoB,yDAEhC,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,cAAc,SAAS,kBAAkB,IAAI;IAC7E,MAAM,EAAE,eAAe,CAAA;IACvB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACxD,WAAW,EAAE,CAAC,EAAE,EAAE,0BAA0B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,cAAc,CAAA;KACxG,CAAA;IACD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnG,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IAC3C,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,cAAc,SAAS,kBAAkB,SACtE,qBAAqB,CAAC,cAAc,CAAC,KAC3C,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,eAAe,GAAG,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAI1F,CAAA;AAEH,eAAO,MAAM,wBAAwB,iDAGpC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,cAAc,SAAS,kBAAkB,qHAS3E,qBAAqB,CAAC,cAAc,CAAC,KAAG,MAAM,CAAC,MAAM,CACtD,uBAAuB,EACvB,eAAe,GAAG,KAAK,CAAC,gBAAgB,EACxC,oBAAoB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CA0C/C,CAAA"}
1
+ {"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAY,MAAM,EAAE,KAAK,EAAQ,MAAM,yBAAyB,CAAA;AAC1F,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;;AAEtH,qBAAa,uBAAwB,SAAQ,4BAG1C;IACD,MAAM,CAAC,YAAY,8EAIQ;CAC5B;;AAED,qBAAa,oBAAqB,SAAQ,yBAGvC;CAAG;AAEN,MAAM,MAAM,qBAAqB,CAAC,cAAc,SAAS,kBAAkB,IAAI;IAC7E,MAAM,EAAE,eAAe,CAAA;IACvB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QAClE,WAAW,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,cAAc,CAAA;KAC7F,CAAA;IACD,IAAI,CAAC,EAAE,CACL,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,KAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,GAAG,uBAAuB,CAAC,CAAA;IAClF,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IAC3C,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,cAAc,SAAS,kBAAkB,SACtE,qBAAqB,CAAC,cAAc,CAAC,KAC3C,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,eAAe,GAAG,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,UAAU,CAIpG,CAAA;AAEH,eAAO,MAAM,wBAAwB,iDAGpC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,cAAc,SAAS,kBAAkB,qHAS3E,qBAAqB,CAAC,cAAc,CAAC,KAAG,MAAM,CAAC,MAAM,CACtD,uBAAuB,CAAC,MAAM,CAAC,EAC/B,eAAe,GAAG,KAAK,CAAC,gBAAgB,EACxC,oBAAoB,GAAG,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAiCzD,CAAA"}
@@ -1,35 +1,35 @@
1
- import { Context, Deferred, Duration, Effect, FiberSet, Layer, OtelTracer, pipe } from '@livestore/utils/effect';
2
- import * as otel from '@opentelemetry/api';
1
+ import { Context, Deferred, Duration, Effect, Layer, pipe } from '@livestore/utils/effect';
3
2
  import { createStore } from '../store/create-store.js';
4
- export const LiveStoreContextRunning = Context.GenericTag('@livestore/livestore/effect/LiveStoreContextRunning');
5
- export const DeferredStoreContext = Context.GenericTag('@livestore/livestore/effect/DeferredStoreContext');
3
+ export class LiveStoreContextRunning extends Context.Tag('@livestore/livestore/effect/LiveStoreContextRunning')() {
4
+ static fromDeferred = Effect.gen(function* () {
5
+ const deferred = yield* DeferredStoreContext;
6
+ const ctx = yield* deferred;
7
+ return Layer.succeed(LiveStoreContextRunning, ctx);
8
+ }).pipe(Layer.unwrapScoped);
9
+ }
10
+ export class DeferredStoreContext extends Context.Tag('@livestore/livestore/effect/DeferredStoreContext')() {
11
+ }
6
12
  export const LiveStoreContextLayer = (props) => Layer.scoped(LiveStoreContextRunning, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
7
13
  export const LiveStoreContextDeferred = Layer.effect(DeferredStoreContext, Deferred.make());
8
14
  export const makeLiveStoreContext = ({ schema, storeId = 'default', graphQLOptions: graphQLOptions_, boot, adapter, disableDevtools, onBootStatus, batchUpdates, }) => pipe(Effect.gen(function* () {
9
- const otelRootSpanContext = otel.context.active();
10
- const otelTracer = yield* OtelTracer.Tracer;
11
15
  const graphQLOptions = yield* graphQLOptions_
12
16
  ? Effect.all({ schema: graphQLOptions_.schema, makeContext: Effect.succeed(graphQLOptions_.makeContext) })
13
17
  : Effect.succeed(undefined);
14
- // TODO join fiber set and close tear down parent scope in case of error (Needs refactor with Mike A)
15
- const fiberSet = yield* FiberSet.make();
16
18
  const store = yield* createStore({
17
19
  schema,
18
20
  storeId,
19
21
  graphQLOptions,
20
- otelOptions: {
21
- tracer: otelTracer,
22
- rootSpanContext: otelRootSpanContext,
23
- },
24
22
  boot,
25
23
  adapter,
26
24
  disableDevtools,
27
- fiberSet,
28
25
  onBootStatus,
29
26
  batchUpdates,
30
27
  });
31
28
  globalThis.__debugLiveStore ??= {};
32
- // window.__debugLiveStore[schema.key] = store
29
+ if (Object.keys(globalThis.__debugLiveStore).length === 0) {
30
+ globalThis.__debugLiveStore['_'] = store;
31
+ }
32
+ globalThis.__debugLiveStore[storeId] = store;
33
33
  return { stage: 'running', store };
34
34
  }), Effect.tapErrorCause((cause) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.failCause(def, cause))), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))),
35
35
  // This can take quite a while.
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAK1F,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAItD,MAAM,OAAO,uBAAwB,SAAQ,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,EAG5G;IACD,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAA;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAA;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;IACpD,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;;AAG7B,MAAM,OAAO,oBAAqB,SAAQ,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,EAGtG;CAAG;AA0BN,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA4C,EAC2D,EAAE,CACzG,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACrE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CACxC,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAClD,oBAAoB,EACpB,QAAQ,CAAC,IAAI,EAAoD,CAClE,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA4C,EAC9E,MAAM,EACN,OAAO,GAAG,SAAS,EACnB,cAAc,EAAE,eAAe,EAC/B,IAAI,EACJ,OAAO,EACP,eAAe,EACf,YAAY,EACZ,YAAY,GAC0B,EAItC,EAAE,CACF,IAAI,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,eAAe;QAC3C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1G,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;QAC/B,MAAM;QACN,OAAO;QACP,cAAc;QACd,IAAI;QACJ,OAAO;QACP,eAAe;QACf,YAAY;QACZ,YAAY;KACb,CAAC,CAAA;IAEF,UAAU,CAAC,gBAAgB,KAAK,EAAE,CAAA;IAClC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAC1C,CAAC;IACD,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IAE5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAA4C,CAAA;AAC9E,CAAC,CAAC,EACF,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAC9G,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxG,+BAA+B;AAC/B,8BAA8B;AAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CACpE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,17 @@
1
1
  export { Store } from './store/store.js';
2
2
  export { createStore, createStorePromise, type CreateStoreOptions } from './store/create-store.js';
3
3
  export type { BaseGraphQLContext, QueryDebugInfo, RefreshReason, GraphQLOptions, OtelOptions, } from './store/store-types.js';
4
- export type { LiveStoreContextRunning } from './effect/LiveStore.js';
5
- export { StoreAbort, StoreInterrupted, type LiveStoreContext } from './store/store-types.js';
6
- export { SynchronousDatabaseWrapper, emptyDebugInfo } from './SynchronousDatabaseWrapper.js';
4
+ export { StoreAbort, StoreInterrupted, type LiveStoreContext, type ShutdownDeferred, type LiveStoreContextRunning, } from './store/store-types.js';
5
+ export { SqliteDbWrapper, emptyDebugInfo } from './SqliteDbWrapper.js';
7
6
  export type { GetAtom, AtomDebugInfo, RefreshDebugInfo, ReactiveGraphSnapshot, SerializedAtom, SerializedEffect, Atom, Node, Ref, Effect, } from './reactive.js';
8
7
  export { LiveStoreComputedQuery, computed } from './live-queries/computed.js';
9
- export { LiveStoreDbQuery, queryDb } from './live-queries/db.js';
8
+ export { LiveStoreDbQuery, queryDb } from './live-queries/db-query.js';
10
9
  export { LiveStoreGraphQLQuery, queryGraphQL } from './live-queries/graphql.js';
11
- export { type GetAtomResult, type ReactivityGraph, makeReactivityGraph, type LiveQuery, type GetResult, type LiveQueryAny, } from './live-queries/base-class.js';
12
- export { globalReactivityGraph } from './global-state.js';
10
+ export { makeRef, type LiveQueryRef } from './live-queries/make-ref.js';
11
+ export { type GetAtomResult, type ReactivityGraph, makeReactivityGraph, type LiveQuery, type GetResult, type LiveQueryAny, type LiveQueryDef, type LiveQueryDefAny, type RcRef, } from './live-queries/base-class.js';
13
12
  export { deriveColQuery } from './row-query-utils.js';
14
13
  export * from '@livestore/common/schema';
15
- export { sql, SessionIdSymbol, type BootStatus, type SynchronousDatabase, type DebugInfo, type MutableDebugInfo, prepareBindValues, type Bindable, type PreparedBindValues, type QueryBuilderAst, type QueryBuilder, type RowQuery, } from '@livestore/common';
14
+ export { sql, SessionIdSymbol, type BootStatus, type SqliteDb, type DebugInfo, type MutableDebugInfo, prepareBindValues, type Bindable, type PreparedBindValues, type QueryBuilderAst, type QueryBuilder, type RowQuery, } from '@livestore/common';
16
15
  export { SqliteAst, SqliteDsl } from '@livestore/db-schema';
17
16
  export { deepEqual } from '@livestore/utils';
18
17
  export * from './utils/stack-info.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAClG,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE5F,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAE5F,YAAY,EACV,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,MAAM,GACP,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,GAAG,EACH,eAAe,EACf,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,cAAc,uBAAuB,CAAA;AAErC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAClG,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAEtE,YAAY,EACV,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,MAAM,GACP,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,KAAK,GACX,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,GAAG,EACH,eAAe,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,cAAc,uBAAuB,CAAA;AAErC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  export { Store } from './store/store.js';
2
2
  export { createStore, createStorePromise } from './store/create-store.js';
3
- export { StoreAbort, StoreInterrupted } from './store/store-types.js';
4
- export { SynchronousDatabaseWrapper, emptyDebugInfo } from './SynchronousDatabaseWrapper.js';
3
+ export { StoreAbort, StoreInterrupted, } from './store/store-types.js';
4
+ export { SqliteDbWrapper, emptyDebugInfo } from './SqliteDbWrapper.js';
5
5
  export { LiveStoreComputedQuery, computed } from './live-queries/computed.js';
6
- export { LiveStoreDbQuery, queryDb } from './live-queries/db.js';
6
+ export { LiveStoreDbQuery, queryDb } from './live-queries/db-query.js';
7
7
  export { LiveStoreGraphQLQuery, queryGraphQL } from './live-queries/graphql.js';
8
+ export { makeRef } from './live-queries/make-ref.js';
8
9
  export { makeReactivityGraph, } from './live-queries/base-class.js';
9
- export { globalReactivityGraph } from './global-state.js';
10
10
  export { deriveColQuery } from './row-query-utils.js';
11
11
  export * from '@livestore/common/schema';
12
12
  export { sql, SessionIdSymbol, prepareBindValues, } from '@livestore/common';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAA2B,MAAM,yBAAyB,CAAA;AAUlG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAyB,MAAM,wBAAwB,CAAA;AAE5F,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAc5F,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAGL,mBAAmB,GAIpB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,GAAG,EACH,eAAe,EAKf,iBAAiB,GAMlB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAA2B,MAAM,yBAAyB,CAAA;AASlG,OAAO,EACL,UAAU,EACV,gBAAgB,GAIjB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AActE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAqB,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAGL,mBAAmB,GAOpB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,GAAG,EACH,eAAe,EAKf,iBAAiB,GAMlB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,cAAc,uBAAuB,CAAA"}
@@ -1,22 +1,57 @@
1
1
  import type { QueryInfo } from '@livestore/common';
2
2
  import type * as otel from '@opentelemetry/api';
3
- import { type Atom, type GetAtom, ReactiveGraph, type Thunk } from '../reactive.js';
3
+ import * as RG from '../reactive.js';
4
4
  import type { Store } from '../store/store.js';
5
5
  import type { QueryDebugInfo, RefreshReason } from '../store/store-types.js';
6
6
  import type { StackInfo } from '../utils/stack-info.js';
7
- export type ReactivityGraph = ReactiveGraph<RefreshReason, QueryDebugInfo, QueryContext>;
7
+ export type ReactivityGraph = RG.ReactiveGraph<RefreshReason, QueryDebugInfo, ReactivityGraphContext>;
8
8
  export declare const makeReactivityGraph: () => ReactivityGraph;
9
- export type QueryContext = {
9
+ export type ReactivityGraphContext = {
10
10
  store: Store;
11
+ /** Maps from the hash of the query definition to the RcRef of the query */
12
+ defRcMap: Map<string, RcRef<LiveQueryAny | ILiveQueryRef<any>>>;
13
+ /** Back-reference to the reactivity graph for convenience */
14
+ reactivityGraph: WeakRef<ReactivityGraph>;
11
15
  otelTracer: otel.Tracer;
12
16
  rootOtelContext: otel.Context;
13
17
  effectsWrapper: (run: () => void) => void;
14
18
  };
15
- export type UnsubscribeQuery = () => void;
16
- export type GetResult<TQuery extends LiveQueryAny> = TQuery extends LiveQuery<infer TResult, infer _1> ? TResult : unknown;
19
+ export type GetResult<TQuery extends LiveQueryDefAny | LiveQueryAny> = TQuery extends LiveQuery<infer TResult, infer _1> ? TResult : TQuery extends LiveQueryDef<infer TResult, infer _1> ? TResult : unknown;
17
20
  export type LiveQueryAny = LiveQuery<any, QueryInfo>;
21
+ export type LiveQueryDefAny = LiveQueryDef<any, any>;
22
+ export interface ILiveQueryRefDef<T> {
23
+ _tag: 'live-ref-def';
24
+ defaultValue: T;
25
+ make: (ctx: ReactivityGraphContext) => RcRef<ILiveQueryRef<T>>;
26
+ }
27
+ export interface ILiveQueryRef<T> {
28
+ _tag: 'live-ref';
29
+ reactivityGraph: ReactivityGraph;
30
+ ref: RG.Ref<T, ReactivityGraphContext, RefreshReason>;
31
+ set: (value: T) => void;
32
+ get: () => T;
33
+ destroy: () => void;
34
+ }
18
35
  export declare const TypeId: unique symbol;
19
36
  export type TypeId = typeof TypeId;
37
+ export interface RcRef<T> {
38
+ rc: number;
39
+ value: T;
40
+ deref: () => void;
41
+ }
42
+ export type DepKey = string | number | ReadonlyArray<string | number | undefined | null>;
43
+ export declare const depsToString: (deps: DepKey) => string;
44
+ export interface LiveQueryDef<TResult, TQueryInfo extends QueryInfo = QueryInfo.None> {
45
+ _tag: 'def';
46
+ /** Creates a new LiveQuery instance bound to a specific store/reactivityGraph */
47
+ make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<LiveQuery<TResult, TQueryInfo>>;
48
+ label: string;
49
+ hash: string;
50
+ queryInfo: TQueryInfo;
51
+ }
52
+ /**
53
+ * A LiveQuery is stateful
54
+ */
20
55
  export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfo.None> {
21
56
  id: number;
22
57
  _tag: 'computed' | 'db' | 'graphql';
@@ -24,15 +59,14 @@ export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfo.Non
24
59
  /** This should only be used on a type-level and doesn't hold any value during runtime */
25
60
  '__result!': TResult;
26
61
  /** A reactive thunk representing the query results */
27
- results$: Thunk<TResult, QueryContext, RefreshReason>;
62
+ results$: RG.Thunk<TResult, ReactivityGraphContext, RefreshReason>;
28
63
  label: string;
29
- run: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
30
- runAndDestroy: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
31
- destroy(): void;
32
- subscribe(onNewValue: (value: TResult) => void, onUnsubsubscribe?: () => void, options?: {
33
- label?: string;
64
+ run: (args: {
34
65
  otelContext?: otel.Context;
35
- }): () => void;
66
+ debugRefreshReason?: RefreshReason;
67
+ }) => TResult;
68
+ destroy: () => void;
69
+ isDestroyed: boolean;
36
70
  activeSubscriptions: Set<StackInfo>;
37
71
  queryInfo: TQueryInfo;
38
72
  runs: number;
@@ -45,20 +79,22 @@ export declare abstract class LiveStoreQueryBase<TResult, TQueryInfo extends Que
45
79
  abstract _tag: 'computed' | 'db' | 'graphql';
46
80
  /** Human-readable label for the query for debugging */
47
81
  abstract label: string;
48
- abstract results$: Thunk<TResult, QueryContext, RefreshReason>;
82
+ abstract results$: RG.Thunk<TResult, ReactivityGraphContext, RefreshReason>;
49
83
  activeSubscriptions: Set<StackInfo>;
50
- protected abstract reactivityGraph: ReactivityGraph;
84
+ abstract readonly reactivityGraph: ReactivityGraph;
51
85
  abstract queryInfo: TQueryInfo;
52
86
  get runs(): number;
53
87
  executionTimes: number[];
88
+ isDestroyed: boolean;
54
89
  abstract destroy: () => void;
55
- run: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
56
- runAndDestroy: (otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => TResult;
57
- subscribe: (onNewValue: (value: TResult) => void, onUnsubsubscribe?: () => void, options?: {
58
- label?: string;
90
+ run: (args: {
59
91
  otelContext?: otel.Context;
60
- } | undefined) => (() => void);
92
+ debugRefreshReason?: RefreshReason;
93
+ }) => TResult;
94
+ protected dependencyQueriesRef: DependencyQueriesRef;
61
95
  }
62
- export type GetAtomResult = <T>(atom: Atom<T, any, RefreshReason> | LiveQuery<T, any>) => T;
63
- export declare const makeGetAtomResult: (get: GetAtom, otelContext: otel.Context) => GetAtomResult;
96
+ export type GetAtomResult = <T>(atom: RG.Atom<T, any, RefreshReason> | LiveQueryDef<T, any> | LiveQuery<T, any> | ILiveQueryRef<T> | ILiveQueryRefDef<T>, otelContext?: otel.Context | undefined, debugRefreshReason?: RefreshReason | undefined) => T;
97
+ export type DependencyQueriesRef = Set<RcRef<LiveQueryAny | ILiveQueryRef<any>>>;
98
+ export declare const makeGetAtomResult: (get: RG.GetAtom, ctx: ReactivityGraphContext, otelContext: otel.Context, dependencyQueriesRef: DependencyQueriesRef) => GetAtomResult;
99
+ export declare const withRCMap: <T extends LiveQueryAny | ILiveQueryRef<any>>(id: string, make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => T) => ((ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<T>);
64
100
  //# sourceMappingURL=base-class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
- import { ReactiveGraph, throwContextNotSetError } from '../reactive.js';
2
- export const makeReactivityGraph = () => new ReactiveGraph();
1
+ import { isNotNil } from '@livestore/utils';
2
+ import * as RG from '../reactive.js';
3
+ export const makeReactivityGraph = () => new RG.ReactiveGraph();
3
4
  let queryIdCounter = 0;
4
5
  export const TypeId = Symbol.for('LiveQuery');
6
+ export const depsToString = (deps) => {
7
+ if (typeof deps === 'string' || typeof deps === 'number') {
8
+ return deps.toString();
9
+ }
10
+ return deps.filter(isNotNil).join(',');
11
+ };
5
12
  export class LiveStoreQueryBase {
6
13
  '__result!';
7
14
  id = queryIdCounter++;
@@ -11,21 +18,55 @@ export class LiveStoreQueryBase {
11
18
  return this.results$.recomputations;
12
19
  }
13
20
  executionTimes = [];
14
- run = (otelContext, debugRefreshReason) => this.results$.computeResult(otelContext, debugRefreshReason);
15
- runAndDestroy = (otelContext, debugRefreshReason) => {
16
- const result = this.run(otelContext, debugRefreshReason);
17
- this.destroy();
18
- return result;
21
+ // TODO double check if this is needed
22
+ isDestroyed = false;
23
+ run = (args) => {
24
+ return this.results$.computeResult(args.otelContext, args.debugRefreshReason);
19
25
  };
20
- subscribe = (onNewValue, onUnsubsubscribe, options) => this.reactivityGraph.context?.store.subscribe(this, onNewValue, onUnsubsubscribe, options) ??
21
- throwContextNotSetError(this.reactivityGraph);
26
+ dependencyQueriesRef = new Set();
22
27
  }
23
- export const makeGetAtomResult = (get, otelContext) => {
24
- const getAtom = (atom) => {
28
+ export const makeGetAtomResult = (get, ctx, otelContext, dependencyQueriesRef) => {
29
+ // NOTE we're using the `otelContext` from `makeGetAtomResult` here, not the `otelContext` from `getAtom`
30
+ const getAtom = (atom, _otelContext, debugRefreshReason) => {
31
+ // ReactivityGraph atoms case
25
32
  if (atom._tag === 'thunk' || atom._tag === 'ref')
26
- return get(atom, otelContext);
27
- return get(atom.results$, otelContext);
33
+ return get(atom, otelContext, debugRefreshReason);
34
+ // LiveQueryDef case
35
+ if (atom._tag === 'def' || atom._tag === 'live-ref-def') {
36
+ const query = atom.make(ctx);
37
+ dependencyQueriesRef.add(query);
38
+ // TODO deref the query on destroy
39
+ return getAtom(query.value, _otelContext, debugRefreshReason);
40
+ }
41
+ // LiveQueryRef case
42
+ if (atom._tag === 'live-ref')
43
+ return get(atom.ref, otelContext, debugRefreshReason);
44
+ // LiveQuery case
45
+ return get(atom.results$, otelContext, debugRefreshReason);
28
46
  };
29
47
  return getAtom;
30
48
  };
49
+ export const withRCMap = (id, make) => {
50
+ return (ctx, otelContext) => {
51
+ let item = ctx.defRcMap.get(id);
52
+ if (item) {
53
+ item.rc++;
54
+ return item;
55
+ }
56
+ const query$ = make(ctx, otelContext);
57
+ item = {
58
+ rc: 1,
59
+ value: query$,
60
+ deref: () => {
61
+ item.rc--;
62
+ if (item.rc === 0) {
63
+ item.value.destroy();
64
+ }
65
+ ctx.defRcMap.delete(id);
66
+ },
67
+ };
68
+ ctx.defRcMap.set(id, item);
69
+ return item;
70
+ };
71
+ };
31
72
  //# sourceMappingURL=base-class.js.map