@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/SqliteDbWrapper.d.ts +54 -0
- package/dist/SqliteDbWrapper.d.ts.map +1 -0
- package/dist/{SynchronousDatabaseWrapper.js → SqliteDbWrapper.js} +44 -9
- package/dist/SqliteDbWrapper.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +16 -12
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +14 -14
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +57 -21
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +54 -13
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/computed.d.ts +7 -7
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +34 -11
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/{db.d.ts → db-query.d.ts} +15 -14
- package/dist/live-queries/db-query.d.ts.map +1 -0
- package/dist/live-queries/{db.js → db-query.js} +87 -43
- package/dist/live-queries/db-query.js.map +1 -0
- package/dist/live-queries/db-query.test.d.ts +2 -0
- package/dist/live-queries/db-query.test.d.ts.map +1 -0
- package/dist/live-queries/db-query.test.js +113 -0
- package/dist/live-queries/db-query.test.js.map +1 -0
- package/dist/live-queries/graphql.d.ts +8 -8
- package/dist/live-queries/graphql.d.ts.map +1 -1
- package/dist/live-queries/graphql.js +34 -9
- package/dist/live-queries/graphql.js.map +1 -1
- package/dist/live-queries/make-ref.d.ts +20 -0
- package/dist/live-queries/make-ref.d.ts.map +1 -0
- package/dist/live-queries/make-ref.js +33 -0
- package/dist/live-queries/make-ref.js.map +1 -0
- package/dist/reactive.d.ts +19 -13
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +22 -18
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.js +1 -1
- package/dist/reactive.test.js.map +1 -1
- package/dist/row-query-utils.d.ts +4 -4
- package/dist/row-query-utils.d.ts.map +1 -1
- package/dist/row-query-utils.js +14 -10
- package/dist/row-query-utils.js.map +1 -1
- package/dist/store/create-store.d.ts +13 -12
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +27 -33
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +3 -3
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +56 -34
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-types.d.ts +18 -18
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store.d.ts +57 -38
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +226 -188
- package/dist/store/store.js.map +1 -1
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +3 -2
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/function-string.d.ts +7 -0
- package/dist/utils/function-string.d.ts.map +1 -0
- package/dist/utils/function-string.js +9 -0
- package/dist/utils/function-string.js.map +1 -0
- package/dist/utils/stack-info.d.ts.map +1 -1
- package/dist/utils/stack-info.js +6 -1
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/stack-info.test.js +54 -1
- package/dist/utils/stack-info.test.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +2 -6
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +7 -13
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/mod.d.ts +1 -0
- package/dist/utils/tests/mod.d.ts.map +1 -1
- package/dist/utils/tests/mod.js +1 -0
- package/dist/utils/tests/mod.js.map +1 -1
- package/dist/utils/tests/otel.d.ts +60 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +65 -4
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +12 -12
- package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +59 -14
- package/src/ambient.d.ts +1 -1
- package/src/effect/LiveStore.ts +32 -33
- package/src/index.ts +14 -7
- package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +220 -72
- package/src/live-queries/base-class.ts +151 -40
- package/src/live-queries/computed.ts +44 -19
- package/src/live-queries/{db.test.ts → db-query.test.ts} +46 -33
- package/src/live-queries/{db.ts → db-query.ts} +123 -61
- package/src/live-queries/graphql.ts +46 -21
- package/src/live-queries/make-ref.ts +47 -0
- package/src/reactive.test.ts +1 -1
- package/src/reactive.ts +60 -37
- package/src/row-query-utils.ts +29 -18
- package/src/store/create-store.ts +106 -113
- package/src/store/devtools.ts +65 -39
- package/src/store/store-types.ts +20 -18
- package/src/store/store.ts +362 -289
- package/src/utils/dev.ts +4 -2
- package/src/utils/function-string.ts +12 -0
- package/src/utils/stack-info.test.ts +58 -1
- package/src/utils/stack-info.ts +6 -1
- package/src/utils/tests/fixture.ts +6 -16
- package/src/utils/tests/mod.ts +1 -0
- package/src/utils/tests/otel.ts +71 -5
- package/dist/SynchronousDatabaseWrapper.d.ts +0 -36
- package/dist/SynchronousDatabaseWrapper.d.ts.map +0 -1
- package/dist/SynchronousDatabaseWrapper.js.map +0 -1
- package/dist/global-state.d.ts +0 -14
- package/dist/global-state.d.ts.map +0 -1
- package/dist/global-state.js +0 -16
- package/dist/global-state.js.map +0 -1
- package/dist/live-queries/db.d.ts.map +0 -1
- package/dist/live-queries/db.js.map +0 -1
- package/dist/live-queries/db.test.d.ts +0 -2
- package/dist/live-queries/db.test.d.ts.map +0 -1
- package/dist/live-queries/db.test.js +0 -117
- package/dist/live-queries/db.test.js.map +0 -1
- 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
|
-
|
|
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,
|
|
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 &&
|
|
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,
|
|
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 &&
|
|
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=
|
|
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
|
-
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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,
|
|
27
|
-
makeContext: (db:
|
|
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,
|
|
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,
|
|
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 |
|
|
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;
|
|
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"}
|
package/dist/effect/LiveStore.js
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { Context, Deferred, Duration, 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
|
|
5
|
-
|
|
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
|
-
|
|
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":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
|
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
|
|
5
|
-
export {
|
|
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 {
|
|
12
|
-
export {
|
|
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
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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;
|
|
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
|
|
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,
|
|
7
|
+
export type ReactivityGraph = RG.ReactiveGraph<RefreshReason, QueryDebugInfo, ReactivityGraphContext>;
|
|
8
8
|
export declare const makeReactivityGraph: () => ReactivityGraph;
|
|
9
|
-
export type
|
|
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
|
|
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,
|
|
62
|
+
results$: RG.Thunk<TResult, ReactivityGraphContext, RefreshReason>;
|
|
28
63
|
label: string;
|
|
29
|
-
run: (
|
|
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
|
-
|
|
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,
|
|
82
|
+
abstract results$: RG.Thunk<TResult, ReactivityGraphContext, RefreshReason>;
|
|
49
83
|
activeSubscriptions: Set<StackInfo>;
|
|
50
|
-
|
|
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: (
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
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 {
|
|
2
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this.
|
|
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
|
-
|
|
21
|
-
throwContextNotSetError(this.reactivityGraph);
|
|
26
|
+
dependencyQueriesRef = new Set();
|
|
22
27
|
}
|
|
23
|
-
export const makeGetAtomResult = (get, otelContext) => {
|
|
24
|
-
|
|
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
|
-
|
|
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
|