@livestore/livestore 0.4.0 → 0.5.0-dev.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/SqliteDbWrapper.d.ts.map +1 -1
- package/dist/SqliteDbWrapper.js +7 -5
- package/dist/SqliteDbWrapper.js.map +1 -1
- package/dist/SqliteDbWrapper.test.js +20 -3
- package/dist/SqliteDbWrapper.test.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +15 -15
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +17 -17
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/effect/LiveStore.test.js +5 -6
- package/dist/effect/LiveStore.test.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +19 -2
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +28 -2
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +4 -4
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/db-query.d.ts +2 -2
- package/dist/live-queries/db-query.d.ts.map +1 -1
- package/dist/live-queries/db-query.js +26 -17
- package/dist/live-queries/db-query.js.map +1 -1
- package/dist/live-queries/db-query.test.js +9 -9
- package/dist/live-queries/db-query.test.js.map +1 -1
- package/dist/live-queries/signal.d.ts.map +1 -1
- package/dist/live-queries/signal.js +2 -2
- package/dist/live-queries/signal.js.map +1 -1
- package/dist/live-queries/signal.test.js +2 -2
- package/dist/live-queries/signal.test.js.map +1 -1
- package/dist/reactive.d.ts +1 -1
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +20 -1
- package/dist/reactive.js.map +1 -1
- package/dist/store/StoreRegistry.d.ts +12 -12
- package/dist/store/StoreRegistry.d.ts.map +1 -1
- package/dist/store/StoreRegistry.js +24 -24
- package/dist/store/StoreRegistry.js.map +1 -1
- package/dist/store/StoreRegistry.test.js +62 -59
- package/dist/store/StoreRegistry.test.js.map +1 -1
- package/dist/store/create-store.d.ts +12 -15
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +43 -24
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +1 -2
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +3 -2
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-eventstream.test.js +5 -5
- package/dist/store/store-eventstream.test.js.map +1 -1
- package/dist/store/store-types.d.ts +10 -28
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js +2 -38
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store-types.test.js +1 -1
- package/dist/store/store.d.ts +2 -2
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +114 -56
- package/dist/store/store.js.map +1 -1
- package/dist/utils/dev.js +1 -1
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/stack-info.d.ts.map +1 -1
- package/dist/utils/stack-info.js +2 -1
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +26 -34
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/package.json +14 -24
- package/src/SqliteDbWrapper.test.ts +25 -3
- package/src/SqliteDbWrapper.ts +12 -9
- package/src/effect/LiveStore.test.ts +16 -16
- package/src/effect/LiveStore.ts +79 -50
- package/src/live-queries/__snapshots__/db-query.test.ts.snap +273 -49
- package/src/live-queries/base-class.ts +38 -6
- package/src/live-queries/computed.ts +5 -5
- package/src/live-queries/db-query.test.ts +9 -9
- package/src/live-queries/db-query.ts +42 -30
- package/src/live-queries/signal.test.ts +2 -2
- package/src/live-queries/signal.ts +3 -3
- package/src/reactive.ts +45 -35
- package/src/store/StoreRegistry.test.ts +62 -59
- package/src/store/StoreRegistry.ts +49 -38
- package/src/store/create-store.ts +85 -51
- package/src/store/devtools.ts +283 -283
- package/src/store/store-eventstream.test.ts +16 -7
- package/src/store/store-types.test.ts +1 -1
- package/src/store/store-types.ts +10 -56
- package/src/store/store.ts +148 -71
- package/src/utils/dev.ts +1 -1
- package/src/utils/stack-info.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDbWrapper.d.ts","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAGL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"SqliteDbWrapper.d.ts","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAGrB,MAAM,mBAAmB,CAAA;AAK1B,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,IAAI,KAAK,gDAER;IACD,IAAI,QAAQ,QAEX;IACD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAG5C,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAGzD,KAAK,IAAI,IAAI;IAGb,OAAO,IAAI,IAAI;IAGf,OAAO,IAAI,eAAe;IAG1B,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,iBAAiB;IAI/D,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAqBrC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG;QACzC,MAAM,EAAE,IAAI,CAAA;QACZ,SAAS,EAAE;YAAE,IAAI,EAAE,kBAAkB,CAAC;YAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAA;KACvG;IAcD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC;IAK3C,aAAa,CAAC,KAAK,EAAE,MAAM;IA4B3B,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,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;IA0DzB,OAAO;;yBAjMmB,CAAA;;;yBAGN,CAAA;;MA8LoF;IAExG,MAAM;;;MAA+F;IAErG,YAAY,CAAC,CAAC,GAAG,GAAG,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,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;IAiEnB,MAAM;CAQP"}
|
package/dist/SqliteDbWrapper.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BoundArray, BoundMap,
|
|
1
|
+
import { BoundArray, BoundMap, SqliteDbHelper, SqliteError, sql, } from '@livestore/common';
|
|
2
2
|
import { isDevEnv, LS_DEV } from '@livestore/utils';
|
|
3
3
|
import QueryCache from "./QueryCache.js";
|
|
4
4
|
export const emptyDebugInfo = () => ({
|
|
@@ -116,6 +116,7 @@ export class SqliteDbWrapper {
|
|
|
116
116
|
return this.otelTracer.startActiveSpan('livestore.in-memory-db:execute',
|
|
117
117
|
// TODO truncate query string
|
|
118
118
|
{ attributes: { 'sql.query': queryStr } }, options?.otelContext ?? this.otelRootSpanContext, (span) => {
|
|
119
|
+
const startTimePerfNow = performance.now();
|
|
119
120
|
try {
|
|
120
121
|
let stmt = this.cachedStmts.get(queryStr);
|
|
121
122
|
if (stmt === undefined) {
|
|
@@ -129,7 +130,7 @@ export class SqliteDbWrapper {
|
|
|
129
130
|
this.resultCache.invalidate(options?.writeTables ?? this.getTablesUsed(queryStr));
|
|
130
131
|
}
|
|
131
132
|
span.end();
|
|
132
|
-
const durationMs =
|
|
133
|
+
const durationMs = performance.now() - startTimePerfNow;
|
|
133
134
|
this.debugInfo.queryFrameDuration += durationMs;
|
|
134
135
|
this.debugInfo.queryFrameCount++;
|
|
135
136
|
if (durationMs > 5 && isDevEnv() === true) {
|
|
@@ -139,7 +140,7 @@ export class SqliteDbWrapper {
|
|
|
139
140
|
durationMs,
|
|
140
141
|
rowsCount: undefined,
|
|
141
142
|
queriedTables: new Set(),
|
|
142
|
-
startTimePerfNow
|
|
143
|
+
startTimePerfNow,
|
|
143
144
|
});
|
|
144
145
|
}
|
|
145
146
|
return { durationMs };
|
|
@@ -161,6 +162,7 @@ export class SqliteDbWrapper {
|
|
|
161
162
|
const { queriedTables, skipCache = false, otelContext } = options ?? {};
|
|
162
163
|
// console.debug('in-memory-db:select', query, bindValues)
|
|
163
164
|
return this.otelTracer.startActiveSpan('sql-in-memory-select', {}, otelContext ?? this.otelRootSpanContext, (span) => {
|
|
165
|
+
const startTimePerfNow = performance.now();
|
|
164
166
|
try {
|
|
165
167
|
span.setAttribute('sql.query', queryStr);
|
|
166
168
|
const key = this.resultCache.getKey(queryStr, bindValues);
|
|
@@ -182,7 +184,7 @@ export class SqliteDbWrapper {
|
|
|
182
184
|
const queriedTables_ = queriedTables ?? this.getTablesUsed(queryStr);
|
|
183
185
|
this.resultCache.set(queriedTables_, key, result);
|
|
184
186
|
span.end();
|
|
185
|
-
const durationMs =
|
|
187
|
+
const durationMs = performance.now() - startTimePerfNow;
|
|
186
188
|
this.debugInfo.queryFrameDuration += durationMs;
|
|
187
189
|
this.debugInfo.queryFrameCount++;
|
|
188
190
|
// TODO also enable in non-dev mode
|
|
@@ -193,7 +195,7 @@ export class SqliteDbWrapper {
|
|
|
193
195
|
durationMs,
|
|
194
196
|
rowsCount: result.length,
|
|
195
197
|
queriedTables: queriedTables_,
|
|
196
|
-
startTimePerfNow
|
|
198
|
+
startTimePerfNow,
|
|
197
199
|
});
|
|
198
200
|
}
|
|
199
201
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDbWrapper.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"SqliteDbWrapper.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,40 @@
|
|
|
1
|
+
import * as otel from '@opentelemetry/api';
|
|
1
2
|
import { expect } from 'vitest';
|
|
2
3
|
import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
3
4
|
import { Effect } from '@livestore/utils/effect';
|
|
4
5
|
import { StoreInternalsSymbol } from "./store/store-types.js";
|
|
5
6
|
import { makeTodoMvc } from "./utils/tests/fixture.js";
|
|
6
7
|
Vitest.describe('SqliteDbWrapper', () => {
|
|
8
|
+
Vitest.live('works with the OpenTelemetry API no-op tracer', (_test) => Effect.gen(function* () {
|
|
9
|
+
const otelTracer = otel.trace.getTracer('sqlite-wrapper-noop-test');
|
|
10
|
+
const probeSpan = otelTracer.startSpan('verify-noop-tracer');
|
|
11
|
+
expect(probeSpan.isRecording()).toBe(false);
|
|
12
|
+
probeSpan.end();
|
|
13
|
+
// Store creation exercises the configureSQLite execute path.
|
|
14
|
+
const store = yield* makeTodoMvc({ otelTracer });
|
|
15
|
+
const sqliteDbWrapper = store[StoreInternalsSymbol].sqliteDbWrapper;
|
|
16
|
+
const { durationMs } = sqliteDbWrapper.cachedExecute('CREATE TABLE noop_timing_test (id INTEGER)', undefined, {
|
|
17
|
+
hasNoEffects: true,
|
|
18
|
+
});
|
|
19
|
+
expect(sqliteDbWrapper.select('SELECT 1 AS value')).toEqual([{ value: 1 }]);
|
|
20
|
+
expect(sqliteDbWrapper.debugInfo.queryFrameCount).toBeGreaterThan(0);
|
|
21
|
+
expect(sqliteDbWrapper.debugInfo.queryFrameDuration).toBeGreaterThanOrEqual(0);
|
|
22
|
+
expect(durationMs).toBeGreaterThanOrEqual(0);
|
|
23
|
+
}));
|
|
7
24
|
Vitest.describe('getTablesUsed', () => {
|
|
8
25
|
const getTablesUsed = (query) => Effect.gen(function* () {
|
|
9
26
|
const store = yield* makeTodoMvc({});
|
|
10
27
|
return store[StoreInternalsSymbol].sqliteDbWrapper.getTablesUsed(query);
|
|
11
28
|
});
|
|
12
|
-
Vitest.
|
|
29
|
+
Vitest.live('should return the correct tables used', (_test) => Effect.gen(function* () {
|
|
13
30
|
const tablesUsed = yield* getTablesUsed('select * from todos');
|
|
14
31
|
expect(tablesUsed).toEqual(new Set(['todos']));
|
|
15
32
|
}));
|
|
16
|
-
Vitest.
|
|
33
|
+
Vitest.live('should handle DELETE FROM statement without WHERE clause', (_test) => Effect.gen(function* () {
|
|
17
34
|
const tablesUsed = yield* getTablesUsed('DELETE FROM todos');
|
|
18
35
|
expect(tablesUsed).toEqual(new Set(['todos']));
|
|
19
36
|
}));
|
|
20
|
-
Vitest.
|
|
37
|
+
Vitest.live('should handle INSERT with ON CONFLICT clause', (_test) => Effect.gen(function* () {
|
|
21
38
|
const tablesUsed = yield* getTablesUsed('INSERT INTO todos (id, text, completed) VALUES (?, ?, ?) ON CONFLICT(id) DO UPDATE SET text = ?');
|
|
22
39
|
expect(tablesUsed).toEqual(new Set(['todos']));
|
|
23
40
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDbWrapper.test.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IACtC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QACpC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACpC,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEJ,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"SqliteDbWrapper.test.js","sourceRoot":"","sources":["../src/SqliteDbWrapper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { UnknownError } from '@livestore/common';
|
|
2
2
|
import type { LiveStoreEvent, LiveStoreSchema } from '@livestore/common/schema';
|
|
3
|
-
import type {
|
|
4
|
-
import { Context, Deferred, Effect, Layer } from '@livestore/utils/effect';
|
|
3
|
+
import type { Schema } from '@livestore/utils/effect';
|
|
4
|
+
import { type Cause, type OtelTracer, type Scope, Context, Deferred, Effect, Layer } from '@livestore/utils/effect';
|
|
5
5
|
import type { LiveStoreContextProps } from '../store/create-store.ts';
|
|
6
6
|
import { DeferredStoreContext, LiveStoreContextRunning } from '../store/create-store.ts';
|
|
7
7
|
import type { LiveStoreContextRunning as LiveStoreContextRunningType, Queryable } from '../store/store-types.ts';
|
|
8
|
-
export declare const makeLiveStoreContext: <TSchema extends LiveStoreSchema, TContext = {}>({ schema, storeId, context, boot, adapter, disableDevtools, onBootStatus, batchUpdates, syncPayload, syncPayloadSchema, }: LiveStoreContextProps<TSchema, TContext>) => Effect.Effect<LiveStoreContextRunning["
|
|
8
|
+
export declare const makeLiveStoreContext: <TSchema extends LiveStoreSchema, TContext = {}, TSyncPayloadSchema extends Schema.Codec<Schema.Json, Schema.Json> = typeof Schema.Json>({ schema, storeId, context, boot, adapter, disableDevtools, onBootStatus, batchUpdates, syncPayload, syncPayloadSchema, }: LiveStoreContextProps<TSchema, TContext, TSyncPayloadSchema>) => Effect.Effect<LiveStoreContextRunning["Service"], UnknownError | Cause.TimeoutError, DeferredStoreContext | Scope.Scope | OtelTracer.OtelTracer>;
|
|
9
9
|
/**
|
|
10
10
|
* @deprecated Use `Store.Tag(schema, storeId)` instead for type-safe store contexts.
|
|
11
11
|
*
|
|
@@ -19,7 +19,7 @@ export declare const makeLiveStoreContext: <TSchema extends LiveStoreSchema, TCo
|
|
|
19
19
|
* const layer = MainStore.layer({ adapter, ... })
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
export declare const LiveStoreContextLayer: <TSchema extends LiveStoreSchema, TContext = {}>(props: LiveStoreContextProps<TSchema, TContext>) => Layer.Layer<LiveStoreContextRunning, UnknownError | Cause.
|
|
22
|
+
export declare const LiveStoreContextLayer: <TSchema extends LiveStoreSchema, TContext = {}, TSyncPayloadSchema extends Schema.Codec<Schema.Json, Schema.Json> = typeof Schema.Json>(props: LiveStoreContextProps<TSchema, TContext, TSyncPayloadSchema>) => Layer.Layer<LiveStoreContextRunning, UnknownError | Cause.TimeoutError, OtelTracer.OtelTracer>;
|
|
23
23
|
/**
|
|
24
24
|
* @deprecated Use `Store.Tag(schema, storeId)` and `MainStore.DeferredLayer` instead.
|
|
25
25
|
*/
|
|
@@ -41,7 +41,7 @@ export interface DeferredContextId<TStoreId extends string> {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
/** Props for creating a store layer (schema and storeId are already provided) */
|
|
44
|
-
export type StoreLayerProps<TSchema extends LiveStoreSchema, TContext = {}> = Omit<LiveStoreContextProps<TSchema, TContext>, 'storeId' | 'schema'>;
|
|
44
|
+
export type StoreLayerProps<TSchema extends LiveStoreSchema, TContext = {}, TSyncPayloadSchema extends Schema.Codec<Schema.Json, Schema.Json> = typeof Schema.Json> = Omit<LiveStoreContextProps<TSchema, TContext, TSyncPayloadSchema>, 'storeId' | 'schema'>;
|
|
45
45
|
/**
|
|
46
46
|
* Type for a Store.Tag class. This is the return type of `Store.Tag(schema, storeId)`.
|
|
47
47
|
* Can be extended as a class and is yieldable in Effect.gen.
|
|
@@ -55,21 +55,21 @@ export type StoreLayerProps<TSchema extends LiveStoreSchema, TContext = {}> = Om
|
|
|
55
55
|
* Uses `interface` (not `type`) to allow the self-referential identifier without
|
|
56
56
|
* triggering TS2456 (circular type alias).
|
|
57
57
|
*/
|
|
58
|
-
export interface StoreTagClass<TSchema extends LiveStoreSchema, TStoreId extends string> extends Context.
|
|
58
|
+
export interface StoreTagClass<TSchema extends LiveStoreSchema, TStoreId extends string> extends Context.Key<StoreTagClass<TSchema, TStoreId>, LiveStoreContextRunningType<TSchema>> {
|
|
59
59
|
/** Constructor signature (makes the type extendable as a class) */
|
|
60
|
-
new (): Context.
|
|
61
|
-
/**
|
|
60
|
+
new (): Context.Key<StoreTagClass<TSchema, TStoreId>, LiveStoreContextRunningType<TSchema>>;
|
|
61
|
+
/** Key identity type (from Context.Key) */
|
|
62
62
|
readonly Id: StoreTagClass<TSchema, TStoreId>;
|
|
63
|
-
/** Service type (from Context.
|
|
64
|
-
readonly
|
|
63
|
+
/** Service type (from Context.Key) */
|
|
64
|
+
readonly Service: LiveStoreContextRunningType<TSchema>;
|
|
65
65
|
/** The LiveStore schema for this store */
|
|
66
66
|
readonly schema: TSchema;
|
|
67
67
|
/** Unique identifier for this store */
|
|
68
68
|
readonly storeId: TStoreId;
|
|
69
69
|
/** Creates a layer that initializes the store */
|
|
70
|
-
layer<TContext>(props: StoreLayerProps<TSchema, TContext>): Layer.Layer<StoreTagClass<TSchema, TStoreId>, UnknownError | Cause.
|
|
70
|
+
layer<TContext, TSyncPayloadSchema extends Schema.Codec<Schema.Json, Schema.Json> = typeof Schema.Json>(props: StoreLayerProps<TSchema, TContext, TSyncPayloadSchema>): Layer.Layer<StoreTagClass<TSchema, TStoreId>, UnknownError | Cause.TimeoutError, OtelTracer.OtelTracer>;
|
|
71
71
|
/** Deferred store tag for async initialization patterns */
|
|
72
|
-
readonly Deferred: Context.
|
|
72
|
+
readonly Deferred: Context.Key<DeferredContextId<TStoreId>, Deferred.Deferred<LiveStoreContextRunningType<TSchema>, UnknownError>>;
|
|
73
73
|
/** Layer that provides the Deferred tag */
|
|
74
74
|
readonly DeferredLayer: Layer.Layer<DeferredContextId<TStoreId>>;
|
|
75
75
|
/** Layer that waits for Deferred and provides the running store */
|
|
@@ -115,9 +115,9 @@ export declare const Store: {
|
|
|
115
115
|
*/
|
|
116
116
|
export interface StoreContext<TSchema extends LiveStoreSchema, TStoreId extends string> {
|
|
117
117
|
readonly storeId: TStoreId;
|
|
118
|
-
readonly Tag: Context.
|
|
119
|
-
readonly DeferredTag: Context.
|
|
120
|
-
readonly Layer: <TContext = {}>(props: Omit<LiveStoreContextProps<TSchema, TContext>, 'storeId'>) => Layer.Layer<StoreContextId<TSchema, TStoreId>, UnknownError | Cause.
|
|
118
|
+
readonly Tag: Context.Key<StoreContextId<TSchema, TStoreId>, LiveStoreContextRunningType<TSchema>>;
|
|
119
|
+
readonly DeferredTag: Context.Key<DeferredContextId<TStoreId>, Deferred.Deferred<LiveStoreContextRunningType<TSchema>, UnknownError>>;
|
|
120
|
+
readonly Layer: <TContext = {}, TSyncPayloadSchema extends Schema.Codec<Schema.Json, Schema.Json> = typeof Schema.Json>(props: Omit<LiveStoreContextProps<TSchema, TContext, TSyncPayloadSchema>, 'storeId'>) => Layer.Layer<StoreContextId<TSchema, TStoreId>, UnknownError | Cause.TimeoutError, OtelTracer.OtelTracer>;
|
|
121
121
|
readonly DeferredLayer: Layer.Layer<DeferredContextId<TStoreId>>;
|
|
122
122
|
readonly fromDeferred: Layer.Layer<StoreContextId<TSchema, TStoreId>, UnknownError, DeferredContextId<TStoreId>>;
|
|
123
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/LiveStore.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { omitUndefineds } from '@livestore/utils';
|
|
2
|
-
import { Context, Deferred, Duration, Effect, Layer, pipe } from '@livestore/utils/effect';
|
|
2
|
+
import { Context, Deferred, Duration, Effect, Layer, pipe, } from '@livestore/utils/effect';
|
|
3
3
|
import { createStore, DeferredStoreContext, LiveStoreContextRunning } from "../store/create-store.js";
|
|
4
4
|
export const makeLiveStoreContext = ({ schema, storeId = 'default', context, boot, adapter, disableDevtools, onBootStatus, batchUpdates, syncPayload, syncPayloadSchema, }) => pipe(Effect.gen(function* () {
|
|
5
5
|
const store = yield* createStore({
|
|
@@ -9,8 +9,8 @@ export const makeLiveStoreContext = ({ schema, storeId = 'default', context, boo
|
|
|
9
9
|
batchUpdates,
|
|
10
10
|
...omitUndefineds({ context, boot, disableDevtools, onBootStatus, syncPayload, syncPayloadSchema }),
|
|
11
11
|
});
|
|
12
|
-
return { stage: 'running', store };
|
|
13
|
-
}), Effect.
|
|
12
|
+
return LiveStoreContextRunning.of({ stage: 'running', store });
|
|
13
|
+
}), Effect.tapCause((cause) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.failCause(def, cause))), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))),
|
|
14
14
|
// This can take quite a while.
|
|
15
15
|
// TODO make this configurable
|
|
16
16
|
Effect.timeout(Duration.minutes(5)), Effect.withSpan('@livestore/livestore/effect:makeLiveStoreContext'));
|
|
@@ -27,7 +27,7 @@ Effect.timeout(Duration.minutes(5)), Effect.withSpan('@livestore/livestore/effec
|
|
|
27
27
|
* const layer = MainStore.layer({ adapter, ... })
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export const LiveStoreContextLayer = (props) => Layer.
|
|
30
|
+
export const LiveStoreContextLayer = (props) => Layer.effect(LiveStoreContextRunning, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
|
|
31
31
|
/**
|
|
32
32
|
* @deprecated Use `Store.Tag(schema, storeId)` and `MainStore.DeferredLayer` instead.
|
|
33
33
|
*/
|
|
@@ -35,7 +35,7 @@ export const LiveStoreContextDeferred = Layer.effect(DeferredStoreContext, Defer
|
|
|
35
35
|
/**
|
|
36
36
|
* Create a typed store context class for use with Effect.
|
|
37
37
|
*
|
|
38
|
-
* Returns a class that extends `Context.
|
|
38
|
+
* Returns a class that extends `Context.Service`, making it directly yieldable in Effect code.
|
|
39
39
|
* The class includes static methods for creating layers and accessors for common operations.
|
|
40
40
|
*
|
|
41
41
|
* @param schema - The LiveStore schema (used for type inference and runtime)
|
|
@@ -85,9 +85,9 @@ export const LiveStoreContextDeferred = Layer.effect(DeferredStoreContext, Defer
|
|
|
85
85
|
*/
|
|
86
86
|
const makeStoreTag = (schema, storeId) => {
|
|
87
87
|
// Create the deferred tag and layers upfront
|
|
88
|
-
const _DeferredTag = Context.
|
|
88
|
+
const _DeferredTag = Context.Service(`@livestore/store-deferred/${storeId}`);
|
|
89
89
|
const _DeferredLayer = Layer.effect(_DeferredTag, Deferred.make());
|
|
90
|
-
class Tag extends Context.
|
|
90
|
+
class Tag extends Context.Service()(`@livestore/store/${storeId}`) {
|
|
91
91
|
static schema = schema;
|
|
92
92
|
static storeId = storeId;
|
|
93
93
|
static layer(props) {
|
|
@@ -109,16 +109,16 @@ const makeStoreTag = (schema, storeId) => {
|
|
|
109
109
|
const ctx = { stage: 'running', store: store };
|
|
110
110
|
// Also fulfill the deferred if it exists in context
|
|
111
111
|
yield* Effect.flatMap(Effect.serviceOption(_DeferredTag), (optDeferred) => optDeferred._tag === 'Some' ? Deferred.succeed(optDeferred.value, ctx) : Effect.void);
|
|
112
|
-
return ctx;
|
|
113
|
-
}), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:Store.Tag:${storeId}`), Layer.
|
|
112
|
+
return Tag.of(ctx);
|
|
113
|
+
}), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:Store.Tag:${storeId}`), Layer.effect(Tag), Layer.withSpan(`LiveStore:${storeId}`), Layer.provide(_DeferredLayer));
|
|
114
114
|
}
|
|
115
115
|
static Deferred = _DeferredTag;
|
|
116
116
|
static DeferredLayer = _DeferredLayer;
|
|
117
117
|
static fromDeferred = pipe(Effect.gen(function* () {
|
|
118
118
|
const deferred = yield* _DeferredTag;
|
|
119
|
-
const ctx = yield* deferred;
|
|
120
|
-
return Layer.succeed(Tag, ctx);
|
|
121
|
-
}), Layer.
|
|
119
|
+
const ctx = yield* Deferred.await(deferred);
|
|
120
|
+
return Layer.succeed(Tag, Tag.of(ctx));
|
|
121
|
+
}), Layer.unwrap);
|
|
122
122
|
static query(query) {
|
|
123
123
|
return Effect.map(Tag, ({ store }) => store.query(query));
|
|
124
124
|
}
|
|
@@ -163,8 +163,8 @@ export const Store = {
|
|
|
163
163
|
* ```
|
|
164
164
|
*/
|
|
165
165
|
export const makeStoreContext = () => (storeId) => {
|
|
166
|
-
const Tag = Context.
|
|
167
|
-
const DeferredTag = Context.
|
|
166
|
+
const Tag = Context.Service(`@livestore/store/${storeId}`);
|
|
167
|
+
const DeferredTag = Context.Service(`@livestore/store-deferred/${storeId}`);
|
|
168
168
|
const DeferredLayer = Layer.effect(DeferredTag, Deferred.make());
|
|
169
169
|
const makeLayer = (props) => pipe(Effect.gen(function* () {
|
|
170
170
|
const store = yield* createStore({
|
|
@@ -185,12 +185,12 @@ export const makeStoreContext = () => (storeId) => {
|
|
|
185
185
|
// Also fulfill the deferred if it exists in context
|
|
186
186
|
yield* Effect.flatMap(Effect.serviceOption(DeferredTag), (optDeferred) => optDeferred._tag === 'Some' ? Deferred.succeed(optDeferred.value, ctx) : Effect.void);
|
|
187
187
|
return ctx;
|
|
188
|
-
}), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:makeStoreContext:${storeId}`), Layer.
|
|
188
|
+
}), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:makeStoreContext:${storeId}`), Layer.effect(Tag), Layer.withSpan(`LiveStore:${storeId}`), Layer.provide(DeferredLayer));
|
|
189
189
|
const fromDeferred = pipe(Effect.gen(function* () {
|
|
190
190
|
const deferred = yield* DeferredTag;
|
|
191
|
-
const ctx = yield* deferred;
|
|
191
|
+
const ctx = yield* Deferred.await(deferred);
|
|
192
192
|
return Layer.succeed(Tag, ctx);
|
|
193
|
-
}), Layer.
|
|
193
|
+
}), Layer.unwrap);
|
|
194
194
|
return {
|
|
195
195
|
storeId,
|
|
196
196
|
Tag,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,19 +20,18 @@ describe('Store.Tag R channel consistency', () => {
|
|
|
20
20
|
void _queryResult;
|
|
21
21
|
yield* MainStore.commit();
|
|
22
22
|
});
|
|
23
|
-
/** Providing the store layer must fully eliminate MainStore from R */
|
|
24
23
|
const _provided = prog.pipe(Effect.provide(storeLayer));
|
|
25
|
-
|
|
24
|
+
const _check = true;
|
|
25
|
+
void _check;
|
|
26
26
|
});
|
|
27
27
|
it('use() helper R channel is satisfied by the same layer', () => {
|
|
28
28
|
const prog = MainStore.use(({ store }) => Effect.succeed(store));
|
|
29
29
|
const _provided = prog.pipe(Effect.provide(storeLayer));
|
|
30
|
-
|
|
30
|
+
const _check = true;
|
|
31
|
+
void _check;
|
|
31
32
|
});
|
|
32
33
|
it('fromDeferred layer output satisfies the same R channel', () => {
|
|
33
|
-
const prog =
|
|
34
|
-
yield* MainStore;
|
|
35
|
-
});
|
|
34
|
+
const prog = MainStore;
|
|
36
35
|
/** fromDeferred + DeferredLayer should satisfy MainStore in R */
|
|
37
36
|
const _provided = prog.pipe(Effect.provide(Layer.merge(MainStore.fromDeferred, MainStore.DeferredLayer)));
|
|
38
37
|
const _check = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStore.test.js","sourceRoot":"","sources":["../../src/effect/LiveStore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"LiveStore.test.js","sourceRoot":"","sources":["../../src/effect/LiveStore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,KAAK,EAAsB,MAAM,gBAAgB,CAAA;AAE1D;;;;;GAKG;AACH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,SAAU,SAAQ,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;KAAG;IAEpD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAS,EAAE,YAAY,EAAE,CAAC,CAAa,EAAE,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;IAE/F,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;YAClC,KAAK,KAAK,CAAA;YAEV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAS,CAAC,CAAA;YACrE,KAAK,YAAY,CAAA;YAEjB,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAIvD,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAIvD,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,SAAS,CAAA;QAEtB,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAKzG,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -36,7 +36,7 @@ export interface SignalDef<T> extends LiveQueryDef<T, 'signal-def'> {
|
|
|
36
36
|
label: string;
|
|
37
37
|
/** Creates a reference-counted signal instance bound to a Store's reactivity graph */
|
|
38
38
|
make: (ctx: ReactivityGraphContext) => RcRef<ISignal<T>>;
|
|
39
|
-
[Equal.symbol](that:
|
|
39
|
+
[Equal.symbol](that: Equal.Equal): boolean;
|
|
40
40
|
[Hash.symbol](): number;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
@@ -116,12 +116,29 @@ export interface LiveQueryDef<TResult, TTag extends string = 'def'> {
|
|
|
116
116
|
label: string;
|
|
117
117
|
/** Unique identifier derived from the query string or explicit deps; used for caching */
|
|
118
118
|
hash: string;
|
|
119
|
-
[Equal.symbol](that:
|
|
119
|
+
[Equal.symbol](that: Equal.Equal): boolean;
|
|
120
120
|
[Hash.symbol](): number;
|
|
121
121
|
}
|
|
122
122
|
export declare namespace LiveQueryDef {
|
|
123
123
|
type Any = LiveQueryDef<any, 'def' | 'signal-def'>;
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Type guard that checks if a value is a query or signal definition.
|
|
127
|
+
*
|
|
128
|
+
* Use this to distinguish between definitions (blueprints) and instances (live queries).
|
|
129
|
+
* Definitions are created by `queryDb()`, `computed()`, and `signal()`.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```ts
|
|
133
|
+
* const todos$ = queryDb(tables.todos.all())
|
|
134
|
+
*
|
|
135
|
+
* if (isLiveQueryDef(todos$)) {
|
|
136
|
+
* console.log('This is a definition:', todos$.label)
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare const isLiveQueryDef: (value: unknown) => value is LiveQueryDef<any> | SignalDef<any>;
|
|
141
|
+
export declare const isSignalDef: (value: unknown) => value is SignalDef<any>;
|
|
125
142
|
/**
|
|
126
143
|
* A live query instance bound to a specific Store.
|
|
127
144
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isNotNil } from '@livestore/utils';
|
|
2
1
|
import { Equal, Hash, Predicate } from '@livestore/utils/effect';
|
|
3
2
|
import * as RG from "../reactive.js";
|
|
4
3
|
export const makeReactivityGraph = () => new RG.ReactiveGraph();
|
|
@@ -8,8 +7,35 @@ export const depsToString = (deps) => {
|
|
|
8
7
|
if (typeof deps === 'string' || typeof deps === 'number') {
|
|
9
8
|
return deps.toString();
|
|
10
9
|
}
|
|
11
|
-
return deps.filter(
|
|
10
|
+
return deps.filter(Predicate.isNotNullish).join(',');
|
|
12
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Type guard that checks if a value is a query or signal definition.
|
|
14
|
+
*
|
|
15
|
+
* Use this to distinguish between definitions (blueprints) and instances (live queries).
|
|
16
|
+
* Definitions are created by `queryDb()`, `computed()`, and `signal()`.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const todos$ = queryDb(tables.todos.all())
|
|
21
|
+
*
|
|
22
|
+
* if (isLiveQueryDef(todos$)) {
|
|
23
|
+
* console.log('This is a definition:', todos$.label)
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const isLiveQueryDef = (value) => {
|
|
28
|
+
if (Predicate.isTagged(value, 'def') === false && Predicate.isTagged(value, 'signal-def') === false) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return (Predicate.hasProperty(value, 'make') &&
|
|
32
|
+
Predicate.isFunction(value.make) &&
|
|
33
|
+
Predicate.hasProperty(value, 'hash') &&
|
|
34
|
+
Predicate.isString(value.hash) &&
|
|
35
|
+
Predicate.hasProperty(value, 'label') &&
|
|
36
|
+
Predicate.isString(value.label));
|
|
37
|
+
};
|
|
38
|
+
export const isSignalDef = (value) => isLiveQueryDef(value) && Predicate.isTagged(value, 'signal-def');
|
|
13
39
|
export class LiveStoreQueryBase {
|
|
14
40
|
'__result!';
|
|
15
41
|
id = queryIdCounter++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACnH,OAAO,EAAgC,kBAAkB,EAAgC,MAAM,iBAAiB,CAAA;AAEhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,EAC9B,IAAI,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACnC,UAAU;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,KACA,YAAY,CAAC,OAAO,CA+BtB,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IAC9E,IAAI,EAAG,UAAU,CAAS;IAE1B,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAE/D,KAAK,EAAE,MAAM,CAAA;IAEb,eAAe,EAAE,eAAe,CAAA;IAChC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;gBAEd,EACV,EAAE,EACF,KAAK,EACL,eAAe,EACf,GAAG,GACJ,EAAE;QACD,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAA;QACnC,eAAe,EAAE,eAAe,CAAA;QAChC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC3B;IA8BD,OAAO,aAQN;CACF"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as otel from '@opentelemetry/api';
|
|
2
|
-
import { getDurationMsFromSpan } from '@livestore/common';
|
|
3
2
|
import { Equal, Hash } from '@livestore/utils/effect';
|
|
4
3
|
import { isValidFunctionString } from "../utils/function-string.js";
|
|
5
|
-
import { depsToString, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
4
|
+
import { depsToString, isLiveQueryDef, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
6
5
|
/**
|
|
7
6
|
* Creates a derived query that computes a value from other queries or signals.
|
|
8
7
|
*
|
|
@@ -74,7 +73,7 @@ export const computed = (fn, options) => {
|
|
|
74
73
|
// NOTE `fn.toString()` doesn't work in Expo as it always produces `[native code]`
|
|
75
74
|
hash,
|
|
76
75
|
[Equal.symbol](that) {
|
|
77
|
-
return this.hash === that.hash;
|
|
76
|
+
return isLiveQueryDef(that) && that._tag === 'def' && this.hash === that.hash;
|
|
78
77
|
},
|
|
79
78
|
[Hash.symbol]() {
|
|
80
79
|
return Hash.string(this.hash);
|
|
@@ -103,10 +102,11 @@ export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
|
103
102
|
this.def = def;
|
|
104
103
|
const queryLabel = `${label}:results`;
|
|
105
104
|
this.results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, ctx, otelContext) => ctx.otelTracer.startActiveSpan(`js:${label}`, {}, otelContext ?? ctx.rootOtelContext, (span) => {
|
|
105
|
+
const startTimePerfNow = performance.now();
|
|
106
106
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
107
107
|
const res = fn(makeGetAtomResult(get, ctx, otelContext, this.dependencyQueriesRef));
|
|
108
108
|
span.end();
|
|
109
|
-
const durationMs =
|
|
109
|
+
const durationMs = performance.now() - startTimePerfNow;
|
|
110
110
|
this.executionTimes.push(durationMs);
|
|
111
111
|
setDebugInfo({ _tag: 'computed', label, query: fn.toString(), durationMs });
|
|
112
112
|
return res;
|