@livestore/livestore 0.0.0-snapshot-29dc6acb4ddfcb70ac29c4ae18419710d194e555 → 0.0.0-snapshot-669b49b56c8abe87f4e11263af7cbf506deab38e
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/global-state.d.ts +1 -1
- package/dist/global-state.d.ts.map +1 -1
- package/dist/global-state.js +1 -1
- package/dist/global-state.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/{live-queries → reactiveQueries}/base-class.d.ts +4 -8
- package/dist/reactiveQueries/base-class.d.ts.map +1 -0
- package/dist/{live-queries → reactiveQueries}/base-class.js +0 -2
- package/dist/reactiveQueries/base-class.js.map +1 -0
- package/dist/{live-queries → reactiveQueries}/computed.d.ts +13 -4
- package/dist/reactiveQueries/computed.d.ts.map +1 -0
- package/dist/{live-queries → reactiveQueries}/computed.js +23 -4
- package/dist/reactiveQueries/computed.js.map +1 -0
- package/dist/{live-queries → reactiveQueries}/graphql.d.ts +8 -4
- package/dist/reactiveQueries/graphql.d.ts.map +1 -0
- package/dist/{live-queries → reactiveQueries}/graphql.js +16 -2
- package/dist/reactiveQueries/graphql.js.map +1 -0
- package/dist/reactiveQueries/sql.d.ts +49 -0
- package/dist/reactiveQueries/sql.d.ts.map +1 -0
- package/dist/reactiveQueries/sql.js +130 -0
- package/dist/reactiveQueries/sql.js.map +1 -0
- package/dist/reactiveQueries/sql.test.d.ts +2 -0
- package/dist/reactiveQueries/sql.test.d.ts.map +1 -0
- package/dist/reactiveQueries/sql.test.js +284 -0
- package/dist/reactiveQueries/sql.test.js.map +1 -0
- package/dist/row-query.d.ts +33 -0
- package/dist/row-query.d.ts.map +1 -0
- package/dist/row-query.js +80 -0
- package/dist/row-query.js.map +1 -0
- package/dist/store/create-store.d.ts +1 -1
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/devtools.d.ts +1 -1
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-types.d.ts +2 -2
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store.d.ts +3 -8
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +4 -32
- package/dist/store/store.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +132 -168
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/global-state.ts +1 -1
- package/src/index.ts +5 -8
- package/src/{live-queries → reactiveQueries}/base-class.ts +5 -10
- package/src/{live-queries → reactiveQueries}/computed.ts +29 -5
- package/src/{live-queries → reactiveQueries}/graphql.ts +21 -6
- package/src/reactiveQueries/sql.test.ts +308 -0
- package/src/reactiveQueries/sql.ts +226 -0
- package/src/row-query.ts +196 -0
- package/src/store/create-store.ts +1 -1
- package/src/store/devtools.ts +1 -1
- package/src/store/store-types.ts +2 -2
- package/src/store/store.ts +7 -44
- package/dist/live-queries/base-class.d.ts.map +0 -1
- package/dist/live-queries/base-class.js.map +0 -1
- package/dist/live-queries/computed.d.ts.map +0 -1
- package/dist/live-queries/computed.js.map +0 -1
- package/dist/live-queries/db.d.ts +0 -66
- package/dist/live-queries/db.d.ts.map +0 -1
- package/dist/live-queries/db.js +0 -199
- 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/dist/live-queries/graphql.d.ts.map +0 -1
- package/dist/live-queries/graphql.js.map +0 -1
- package/dist/row-query-utils.d.ts +0 -17
- package/dist/row-query-utils.d.ts.map +0 -1
- package/dist/row-query-utils.js +0 -30
- package/dist/row-query-utils.js.map +0 -1
- package/src/live-queries/__snapshots__/db.test.ts.snap +0 -301
- package/src/live-queries/db.test.ts +0 -153
- package/src/live-queries/db.ts +0 -350
- package/src/row-query-utils.ts +0 -65
package/dist/global-state.d.ts
CHANGED
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
* explicitly pass instances of state below into the LiveStore constructors.
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
|
-
export declare const globalReactivityGraph: import("./
|
|
13
|
+
export declare const globalReactivityGraph: import("./reactiveQueries/base-class.js").ReactivityGraph;
|
|
14
14
|
//# sourceMappingURL=global-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-state.d.ts","sourceRoot":"","sources":["../src/global-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"global-state.d.ts","sourceRoot":"","sources":["../src/global-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,eAAO,MAAM,qBAAqB,2DAEjC,CAAA"}
|
package/dist/global-state.js
CHANGED
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
13
|
import { GlobalValue } from '@livestore/utils/effect';
|
|
14
|
-
import { makeReactivityGraph } from './
|
|
14
|
+
import { makeReactivityGraph } from './reactiveQueries/base-class.js';
|
|
15
15
|
export const globalReactivityGraph = GlobalValue.globalValue('livestore-global-reactivityGraph', () => makeReactivityGraph());
|
|
16
16
|
//# sourceMappingURL=global-state.js.map
|
package/dist/global-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-state.js","sourceRoot":"","sources":["../src/global-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"global-state.js","sourceRoot":"","sources":["../src/global-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,CAAC,kCAAkC,EAAE,GAAG,EAAE,CACpG,mBAAmB,EAAE,CACtB,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,14 +5,14 @@ export type { LiveStoreContextRunning } from './effect/LiveStore.js';
|
|
|
5
5
|
export { StoreAbort, StoreInterrupted, type LiveStoreContext } from './store/store-types.js';
|
|
6
6
|
export { SynchronousDatabaseWrapper, emptyDebugInfo } from './SynchronousDatabaseWrapper.js';
|
|
7
7
|
export type { GetAtom, AtomDebugInfo, RefreshDebugInfo, ReactiveGraphSnapshot, SerializedAtom, SerializedEffect, Atom, Node, Ref, Effect, } from './reactive.js';
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export { LiveStoreGraphQLQuery, queryGraphQL } from './
|
|
11
|
-
export { type GetAtomResult, type ReactivityGraph, makeReactivityGraph, type LiveQuery, type GetResult, type LiveQueryAny, } from './
|
|
8
|
+
export { LiveStoreJSQuery, computed } from './reactiveQueries/computed.js';
|
|
9
|
+
export { LiveStoreSQLQuery, querySQL } from './reactiveQueries/sql.js';
|
|
10
|
+
export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.js';
|
|
11
|
+
export { type GetAtomResult, type ReactivityGraph, makeReactivityGraph, type LiveQuery, type GetResult, type LiveQueryAny, } from './reactiveQueries/base-class.js';
|
|
12
12
|
export { globalReactivityGraph } from './global-state.js';
|
|
13
|
-
export { deriveColQuery } from './row-query
|
|
13
|
+
export { type RowResult, type RowResultEncoded, rowQuery, deriveColQuery } from './row-query.js';
|
|
14
14
|
export * from '@livestore/common/schema';
|
|
15
|
-
export { sql, SessionIdSymbol, type BootStatus, type SynchronousDatabase, type DebugInfo, type MutableDebugInfo, prepareBindValues, type Bindable, type PreparedBindValues,
|
|
15
|
+
export { sql, SessionIdSymbol, type BootStatus, type SynchronousDatabase, type DebugInfo, type MutableDebugInfo, prepareBindValues, type Bindable, type PreparedBindValues, } from '@livestore/common';
|
|
16
16
|
export { SqliteAst, SqliteDsl } from '@livestore/db-schema';
|
|
17
17
|
export { deepEqual } from '@livestore/utils';
|
|
18
18
|
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,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,
|
|
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,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,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,GACxB,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
|
@@ -2,12 +2,12 @@ export { Store } from './store/store.js';
|
|
|
2
2
|
export { createStore, createStorePromise } from './store/create-store.js';
|
|
3
3
|
export { StoreAbort, StoreInterrupted } from './store/store-types.js';
|
|
4
4
|
export { SynchronousDatabaseWrapper, emptyDebugInfo } from './SynchronousDatabaseWrapper.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export { LiveStoreGraphQLQuery, queryGraphQL } from './
|
|
8
|
-
export { makeReactivityGraph, } from './
|
|
5
|
+
export { LiveStoreJSQuery, computed } from './reactiveQueries/computed.js';
|
|
6
|
+
export { LiveStoreSQLQuery, querySQL } from './reactiveQueries/sql.js';
|
|
7
|
+
export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.js';
|
|
8
|
+
export { makeReactivityGraph, } from './reactiveQueries/base-class.js';
|
|
9
9
|
export { globalReactivityGraph } from './global-state.js';
|
|
10
|
-
export { deriveColQuery } from './row-query
|
|
10
|
+
export { rowQuery, deriveColQuery } from './row-query.js';
|
|
11
11
|
export * from '@livestore/common/schema';
|
|
12
12
|
export { sql, SessionIdSymbol, prepareBindValues, } from '@livestore/common';
|
|
13
13
|
export { SqliteAst, SqliteDsl } from '@livestore/db-schema';
|
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,
|
|
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,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAGL,mBAAmB,GAIpB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAyC,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,GAAG,EACH,eAAe,EAKf,iBAAiB,GAGlB,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,4 +1,4 @@
|
|
|
1
|
-
import type { QueryInfo } from '@livestore/common';
|
|
1
|
+
import type { QueryInfo, QueryInfoNone } from '@livestore/common';
|
|
2
2
|
import type * as otel from '@opentelemetry/api';
|
|
3
3
|
import { type Atom, type GetAtom, ReactiveGraph, type Thunk } from '../reactive.js';
|
|
4
4
|
import type { Store } from '../store/store.js';
|
|
@@ -15,12 +15,9 @@ export type QueryContext = {
|
|
|
15
15
|
export type UnsubscribeQuery = () => void;
|
|
16
16
|
export type GetResult<TQuery extends LiveQueryAny> = TQuery extends LiveQuery<infer TResult, infer _1> ? TResult : unknown;
|
|
17
17
|
export type LiveQueryAny = LiveQuery<any, QueryInfo>;
|
|
18
|
-
export
|
|
19
|
-
export type TypeId = typeof TypeId;
|
|
20
|
-
export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfo.None> {
|
|
18
|
+
export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfoNone> {
|
|
21
19
|
id: number;
|
|
22
|
-
_tag: 'computed' | '
|
|
23
|
-
[TypeId]: TypeId;
|
|
20
|
+
_tag: 'computed' | 'sql' | 'graphql';
|
|
24
21
|
/** This should only be used on a type-level and doesn't hold any value during runtime */
|
|
25
22
|
'__result!': TResult;
|
|
26
23
|
/** A reactive thunk representing the query results */
|
|
@@ -41,8 +38,7 @@ export interface LiveQuery<TResult, TQueryInfo extends QueryInfo = QueryInfo.Non
|
|
|
41
38
|
export declare abstract class LiveStoreQueryBase<TResult, TQueryInfo extends QueryInfo> implements LiveQuery<TResult, TQueryInfo> {
|
|
42
39
|
'__result!': TResult;
|
|
43
40
|
id: number;
|
|
44
|
-
|
|
45
|
-
abstract _tag: 'computed' | 'db' | 'graphql';
|
|
41
|
+
abstract _tag: 'computed' | 'sql' | 'graphql';
|
|
46
42
|
/** Human-readable label for the query for debugging */
|
|
47
43
|
abstract label: string;
|
|
48
44
|
abstract results$: Thunk<TResult, QueryContext, RefreshReason>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/base-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ReactiveGraph, throwContextNotSetError } from '../reactive.js';
|
|
2
2
|
export const makeReactivityGraph = () => new ReactiveGraph();
|
|
3
3
|
let queryIdCounter = 0;
|
|
4
|
-
export const TypeId = Symbol.for('LiveQuery');
|
|
5
4
|
export class LiveStoreQueryBase {
|
|
6
5
|
'__result!';
|
|
7
6
|
id = queryIdCounter++;
|
|
8
|
-
[TypeId] = TypeId;
|
|
9
7
|
activeSubscriptions = new Set();
|
|
10
8
|
get runs() {
|
|
11
9
|
return this.results$.recomputations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/reactiveQueries/base-class.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,aAAa,EAAE,uBAAuB,EAAc,MAAM,gBAAgB,CAAA;AAO5G,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAoB,EAAE,CACvD,IAAI,aAAa,EAA+C,CAAA;AAclE,IAAI,cAAc,GAAG,CAAC,CAAA;AAqCtB,MAAM,OAAgB,kBAAkB;IAGtC,WAAW,CAAU;IACrB,EAAE,GAAG,cAAc,EAAE,CAAA;IAQrB,mBAAmB,GAAmB,IAAI,GAAG,EAAE,CAAA;IAM/C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAA;IACrC,CAAC;IAED,cAAc,GAAa,EAAE,CAAA;IAI7B,GAAG,GAAG,CAAC,WAA0B,EAAE,kBAAkC,EAAW,EAAE,CAChF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;IAE9D,aAAa,GAAG,CAAC,WAA0B,EAAE,kBAAkC,EAAW,EAAE;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,SAAS,GAAG,CACV,UAAoC,EACpC,gBAA6B,EAC7B,OAAoE,EACtD,EAAE,CAChB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAC1F,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;CAChD;AAID,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,WAAyB,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAkB,CAAC,IAAI,EAAE,EAAE;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC/E,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
import type { QueryInfo } from '@livestore/common';
|
|
1
|
+
import type { QueryInfo, QueryInfoNone } from '@livestore/common';
|
|
2
2
|
import type { Thunk } from '../reactive.js';
|
|
3
3
|
import type { RefreshReason } from '../store/store-types.js';
|
|
4
4
|
import type { GetAtomResult, LiveQuery, QueryContext, ReactivityGraph } from './base-class.js';
|
|
5
5
|
import { LiveStoreQueryBase } from './base-class.js';
|
|
6
|
-
export declare const computed: <TResult, TQueryInfo extends QueryInfo =
|
|
6
|
+
export declare const computed: <TResult, TQueryInfo extends QueryInfo = QueryInfoNone>(fn: (get: GetAtomResult) => TResult, options?: {
|
|
7
7
|
label: string;
|
|
8
8
|
reactivityGraph?: ReactivityGraph;
|
|
9
9
|
queryInfo?: TQueryInfo;
|
|
10
10
|
}) => LiveQuery<TResult, TQueryInfo>;
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class LiveStoreJSQuery<TResult, TQueryInfo extends QueryInfo = QueryInfoNone> extends LiveStoreQueryBase<TResult, TQueryInfo> {
|
|
12
12
|
_tag: 'computed';
|
|
13
13
|
/** A reactive thunk representing the query results */
|
|
14
14
|
results$: Thunk<TResult, QueryContext, RefreshReason>;
|
|
15
15
|
label: string;
|
|
16
16
|
protected reactivityGraph: ReactivityGraph;
|
|
17
17
|
queryInfo: TQueryInfo;
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Currently only used for "nested destruction" of piped queries
|
|
20
|
+
*
|
|
21
|
+
* i.e. when doing something like `const q = querySQL(...).pipe(...)`
|
|
22
|
+
* we need to also destory the SQL query when the JS query `q` is destroyed
|
|
23
|
+
*/
|
|
24
|
+
private onDestroy;
|
|
25
|
+
constructor({ fn, label, onDestroy, reactivityGraph, queryInfo, }: {
|
|
19
26
|
label: string;
|
|
20
27
|
fn: (get: GetAtomResult) => TResult;
|
|
28
|
+
/** Currently only used for "nested destruction" of piped queries */
|
|
29
|
+
onDestroy?: () => void;
|
|
21
30
|
reactivityGraph?: ReactivityGraph;
|
|
22
31
|
queryInfo?: TQueryInfo;
|
|
23
32
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/computed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAIjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAA;AAEvE,eAAO,MAAM,QAAQ,GAAI,OAAO,EAAE,UAAU,SAAS,SAAS,sBACxD,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,YACzB;IACR,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,SAAS,CAAC,EAAE,UAAU,CAAA;CACvB,KACA,SAAS,CAAC,OAAO,EAAE,UAAU,CAM5B,CAAA;AAEJ,qBAAa,gBAAgB,CAAC,OAAO,EAAE,UAAU,SAAS,SAAS,GAAG,aAAa,CAAE,SAAQ,kBAAkB,CAC7G,OAAO,EACP,UAAU,CACX;IACC,IAAI,EAAE,UAAU,CAAa;IAE7B,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IAErD,KAAK,EAAE,MAAM,CAAA;IAEb,SAAS,CAAC,eAAe,EAAE,eAAe,CAAA;IAE1C,SAAS,EAAE,UAAU,CAAA;IAErB;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAA0B;gBAE/B,EACV,EAAE,EACF,KAAK,EACL,SAAS,EACT,eAAe,EACf,SAAS,GACV,EAAE;QACD,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAA;QACnC,oEAAoE;QACpE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;QACtB,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,SAAS,CAAC,EAAE,UAAU,CAAA;KACvB;IA0CD,OAAO,aAGN;CACF"}
|
|
@@ -2,21 +2,29 @@ import * as otel from '@opentelemetry/api';
|
|
|
2
2
|
import { globalReactivityGraph } from '../global-state.js';
|
|
3
3
|
import { getDurationMsFromSpan } from '../utils/otel.js';
|
|
4
4
|
import { LiveStoreQueryBase, makeGetAtomResult } from './base-class.js';
|
|
5
|
-
export const computed = (fn, options) => new
|
|
5
|
+
export const computed = (fn, options) => new LiveStoreJSQuery({
|
|
6
6
|
fn,
|
|
7
7
|
label: options?.label ?? fn.toString(),
|
|
8
8
|
reactivityGraph: options?.reactivityGraph,
|
|
9
9
|
queryInfo: options?.queryInfo,
|
|
10
10
|
});
|
|
11
|
-
export class
|
|
11
|
+
export class LiveStoreJSQuery extends LiveStoreQueryBase {
|
|
12
12
|
_tag = 'computed';
|
|
13
13
|
/** A reactive thunk representing the query results */
|
|
14
14
|
results$;
|
|
15
15
|
label;
|
|
16
16
|
reactivityGraph;
|
|
17
17
|
queryInfo;
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Currently only used for "nested destruction" of piped queries
|
|
20
|
+
*
|
|
21
|
+
* i.e. when doing something like `const q = querySQL(...).pipe(...)`
|
|
22
|
+
* we need to also destory the SQL query when the JS query `q` is destroyed
|
|
23
|
+
*/
|
|
24
|
+
onDestroy;
|
|
25
|
+
constructor({ fn, label, onDestroy, reactivityGraph, queryInfo, }) {
|
|
19
26
|
super();
|
|
27
|
+
this.onDestroy = onDestroy;
|
|
20
28
|
this.label = label;
|
|
21
29
|
this.reactivityGraph = reactivityGraph ?? globalReactivityGraph;
|
|
22
30
|
this.queryInfo = queryInfo ?? { _tag: 'None' };
|
|
@@ -29,10 +37,21 @@ export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
|
29
37
|
this.executionTimes.push(durationMs);
|
|
30
38
|
setDebugInfo({ _tag: 'computed', label, query: fn.toString(), durationMs });
|
|
31
39
|
return res;
|
|
32
|
-
}), { label: queryLabel, meta: { liveStoreThunkType: '
|
|
40
|
+
}), { label: queryLabel, meta: { liveStoreThunkType: 'jsResults' } });
|
|
33
41
|
}
|
|
42
|
+
// pipe = <U>(fn: (result: TResult, get: GetAtomResult) => U): LiveStoreJSQuery<U> =>
|
|
43
|
+
// new LiveStoreJSQuery({
|
|
44
|
+
// fn: (get) => {
|
|
45
|
+
// const results = get(this.results$)
|
|
46
|
+
// return fn(results, get)
|
|
47
|
+
// },
|
|
48
|
+
// label: `${this.label}:js`,
|
|
49
|
+
// onDestroy: () => this.destroy(),
|
|
50
|
+
// reactivityGraph: this.reactivityGraph,
|
|
51
|
+
// })
|
|
34
52
|
destroy = () => {
|
|
35
53
|
this.reactivityGraph.destroyNode(this.results$);
|
|
54
|
+
this.onDestroy?.();
|
|
36
55
|
};
|
|
37
56
|
}
|
|
38
57
|
//# sourceMappingURL=computed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/reactiveQueries/computed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,EAAmC,EACnC,OAIC,EAC+B,EAAE,CAClC,IAAI,gBAAgB,CAAsB;IACxC,EAAE;IACF,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,OAAO,EAAE,eAAe;IACzC,SAAS,EAAE,OAAO,EAAE,SAAS;CAC9B,CAAC,CAAA;AAEJ,MAAM,OAAO,gBAAwE,SAAQ,kBAG5F;IACC,IAAI,GAAe,UAAU,CAAA;IAE7B,sDAAsD;IACtD,QAAQ,CAA6C;IAErD,KAAK,CAAQ;IAEH,eAAe,CAAiB;IAE1C,SAAS,CAAY;IAErB;;;;;OAKG;IACK,SAAS,CAA0B;IAE3C,YAAY,EACV,EAAE,EACF,KAAK,EACL,SAAS,EACT,eAAe,EACf,SAAS,GAQV;QACC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,qBAAqB,CAAA;QAC/D,IAAI,CAAC,SAAS,GAAG,SAAS,IAAK,EAAE,IAAI,EAAE,MAAM,EAAiB,CAAA;QAE9D,MAAM,UAAU,GAAG,GAAG,KAAK,UAAU,CAAA;QAErC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAC5C,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,CAClE,UAAU,CAAC,eAAe,CAAC,MAAM,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;YACrF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;YACnE,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;YAEnD,IAAI,CAAC,GAAG,EAAE,CAAA;YAEV,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAE9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAEpC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YAE3E,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,EACJ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,CACjE,CAAA;IACH,CAAC;IAED,qFAAqF;IACrF,2BAA2B;IAC3B,qBAAqB;IACrB,2CAA2C;IAC3C,gCAAgC;IAChC,SAAS;IACT,iCAAiC;IACjC,uCAAuC;IACvC,6CAA6C;IAC7C,OAAO;IAEP,OAAO,GAAG,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;IACpB,CAAC,CAAA;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { QueryInfoNone } from '@livestore/common';
|
|
3
3
|
import { Schema } from '@livestore/utils/effect';
|
|
4
4
|
import * as otel from '@opentelemetry/api';
|
|
5
5
|
import * as graphql from 'graphql';
|
|
@@ -13,8 +13,8 @@ export declare const queryGraphQL: <TResult extends Record<string, any>, TVariab
|
|
|
13
13
|
label?: string;
|
|
14
14
|
reactivityGraph?: ReactivityGraph;
|
|
15
15
|
map?: MapResult<TResultMapped, TResult>;
|
|
16
|
-
}) => LiveQuery<TResultMapped,
|
|
17
|
-
export declare class LiveStoreGraphQLQuery<TResult extends Record<string, any>, TVariableValues extends Record<string, any>, TContext extends BaseGraphQLContext, TResultMapped extends Record<string, any> = TResult> extends LiveStoreQueryBase<TResultMapped,
|
|
16
|
+
}) => LiveQuery<TResultMapped, QueryInfoNone>;
|
|
17
|
+
export declare class LiveStoreGraphQLQuery<TResult extends Record<string, any>, TVariableValues extends Record<string, any>, TContext extends BaseGraphQLContext, TResultMapped extends Record<string, any> = TResult> extends LiveStoreQueryBase<TResultMapped, QueryInfoNone> {
|
|
18
18
|
_tag: 'graphql';
|
|
19
19
|
/** The abstract GraphQL query */
|
|
20
20
|
document: DocumentNode<TResult, TVariableValues>;
|
|
@@ -23,7 +23,7 @@ export declare class LiveStoreGraphQLQuery<TResult extends Record<string, any>,
|
|
|
23
23
|
variableValues$: Thunk<TVariableValues, QueryContext, RefreshReason> | undefined;
|
|
24
24
|
label: string;
|
|
25
25
|
protected reactivityGraph: ReactivityGraph;
|
|
26
|
-
queryInfo:
|
|
26
|
+
queryInfo: QueryInfoNone;
|
|
27
27
|
private mapResult;
|
|
28
28
|
constructor({ document, label, genVariableValues, reactivityGraph, map, }: {
|
|
29
29
|
document: DocumentNode<TResult, TVariableValues>;
|
|
@@ -32,6 +32,10 @@ export declare class LiveStoreGraphQLQuery<TResult extends Record<string, any>,
|
|
|
32
32
|
reactivityGraph?: ReactivityGraph;
|
|
33
33
|
map?: MapResult<TResultMapped, TResult>;
|
|
34
34
|
});
|
|
35
|
+
/**
|
|
36
|
+
* Returns a new reactive query that contains the result of
|
|
37
|
+
* running an arbitrary JS computation on the results of this SQL query.
|
|
38
|
+
*/
|
|
35
39
|
queryOnce: ({ document, otelContext, otelTracer, variableValues, store, get, }: {
|
|
36
40
|
document: graphql.DocumentNode;
|
|
37
41
|
otelContext: otel.Context;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAGlC,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEhF,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAA;AAEvE,MAAM,MAAM,SAAS,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AAEnG,eAAO,MAAM,YAAY,GACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBAE/B,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,qBAC7B,eAAe,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,eAAe,CAAC,qCAK3E;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,GAAG,CAAC,EAAE,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;CACxC,KACA,SAAS,CAAC,aAAa,EAAE,aAAa,CACgD,CAAA;AAEzF,qBAAa,qBAAqB,CAChC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3C,QAAQ,SAAS,kBAAkB,EACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CACnD,SAAQ,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC;IACxD,IAAI,EAAE,SAAS,CAAY;IAE3B,iCAAiC;IACjC,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAEhD,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IAE3D,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,GAAG,SAAS,CAAA;IAEhF,KAAK,EAAE,MAAM,CAAA;IAEb,SAAS,CAAC,eAAe,EAAE,eAAe,CAAA;IAE1C,SAAS,EAAE,aAAa,CAAmB;IAE3C,OAAO,CAAC,SAAS,CAAA;gBAEL,EACV,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,GAAG,GACJ,EAAE;QACD,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QAChD,iBAAiB,EAAE,eAAe,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,eAAe,CAAC,CAAA;QAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,GAAG,CAAC,EAAE,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;KACxC;IAwED;;;OAGG;IAYH,SAAS,uEAON;QACD,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAA;QAC9B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAA;QACzB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAA;QACvB,cAAc,EAAE,eAAe,CAAA;QAC/B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,GAAG,EAAE,aAAa,CAAA;KACnB;;;;MAmDA;IAED,OAAO,aAMN;CACF"}
|
|
@@ -46,7 +46,7 @@ export class LiveStoreGraphQLQuery extends LiveStoreQueryBase {
|
|
|
46
46
|
if (typeof genVariableValues === 'function') {
|
|
47
47
|
variableValues$OrvariableValues = this.reactivityGraph.makeThunk((get, _setDebugInfo, { rootOtelContext }, otelContext) => {
|
|
48
48
|
return genVariableValues(makeGetAtomResult(get, otelContext ?? rootOtelContext));
|
|
49
|
-
}, { label: `${labelWithDefault}:variableValues`, meta: { liveStoreThunkType: '
|
|
49
|
+
}, { label: `${labelWithDefault}:variableValues`, meta: { liveStoreThunkType: 'graphqlVariableValues' } });
|
|
50
50
|
this.variableValues$ = variableValues$OrvariableValues;
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
@@ -72,8 +72,22 @@ export class LiveStoreGraphQLQuery extends LiveStoreQueryBase {
|
|
|
72
72
|
}
|
|
73
73
|
setDebugInfo({ _tag: 'graphql', label: resultsLabel, query: graphql.print(document), durationMs });
|
|
74
74
|
return result;
|
|
75
|
-
}, { label: resultsLabel, meta: { liveStoreThunkType: '
|
|
75
|
+
}, { label: resultsLabel, meta: { liveStoreThunkType: 'graphqlResults' } });
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns a new reactive query that contains the result of
|
|
79
|
+
* running an arbitrary JS computation on the results of this SQL query.
|
|
80
|
+
*/
|
|
81
|
+
// pipe = <U>(fn: (result: TResult, get: GetAtomResult) => U): LiveStoreJSQuery<U> =>
|
|
82
|
+
// new LiveStoreJSQuery({
|
|
83
|
+
// fn: (get) => {
|
|
84
|
+
// const results = get(this.results$)
|
|
85
|
+
// return fn(results, get)
|
|
86
|
+
// },
|
|
87
|
+
// label: `${this.label}:js`,
|
|
88
|
+
// onDestroy: () => this.destroy(),
|
|
89
|
+
// reactivityGraph: this.reactivityGraph,
|
|
90
|
+
// })
|
|
77
91
|
queryOnce = ({ document, otelContext, otelTracer, variableValues, store, get, }) => {
|
|
78
92
|
const schema = store.graphQLSchema ?? shouldNeverHappen("Can't run a GraphQL query on a store without GraphQL schema");
|
|
79
93
|
const context = store.graphQLContext ?? shouldNeverHappen("Can't run a GraphQL query on a store without GraphQL context");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/reactiveQueries/graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Bindable, type QueryInfo, type QueryInfoNone } from '@livestore/common';
|
|
2
|
+
import { Schema } from '@livestore/utils/effect';
|
|
3
|
+
import type { Thunk } from '../reactive.js';
|
|
4
|
+
import type { RefreshReason } from '../store/store-types.js';
|
|
5
|
+
import type { GetAtomResult, LiveQuery, QueryContext, ReactivityGraph } from './base-class.js';
|
|
6
|
+
import { LiveStoreQueryBase } from './base-class.js';
|
|
7
|
+
/**
|
|
8
|
+
* NOTE `querySQL` is only supposed to read data. Don't use it to insert/update/delete data but use mutations instead.
|
|
9
|
+
*/
|
|
10
|
+
export declare const querySQL: <TResultSchema, TResult = TResultSchema>(query: string | ((get: GetAtomResult) => string), options: {
|
|
11
|
+
schema: Schema.Schema<TResultSchema, ReadonlyArray<any>>;
|
|
12
|
+
map?: (rows: TResultSchema) => TResult;
|
|
13
|
+
/**
|
|
14
|
+
* Can be provided explicitly to slightly speed up initial query performance
|
|
15
|
+
*
|
|
16
|
+
* NOTE In the future we want to do this automatically at build time
|
|
17
|
+
*/
|
|
18
|
+
queriedTables?: Set<string>;
|
|
19
|
+
bindValues?: Bindable;
|
|
20
|
+
label?: string;
|
|
21
|
+
reactivityGraph?: ReactivityGraph;
|
|
22
|
+
}) => LiveQuery<TResult, QueryInfoNone>;
|
|
23
|
+
export declare class LiveStoreSQLQuery<TResultSchema, TResult = TResultSchema, TQueryInfo extends QueryInfo = QueryInfoNone> extends LiveStoreQueryBase<TResult, TQueryInfo> {
|
|
24
|
+
_tag: 'sql';
|
|
25
|
+
/** A reactive thunk representing the query text */
|
|
26
|
+
queryString$: Thunk<string, QueryContext, RefreshReason> | undefined;
|
|
27
|
+
/** A reactive thunk representing the query results */
|
|
28
|
+
results$: Thunk<TResult, QueryContext, RefreshReason>;
|
|
29
|
+
label: string;
|
|
30
|
+
protected reactivityGraph: ReactivityGraph;
|
|
31
|
+
/** Currently only used by `rowQuery` for lazy table migrations and eager default row insertion */
|
|
32
|
+
private execBeforeFirstRun;
|
|
33
|
+
private mapResult;
|
|
34
|
+
private schema;
|
|
35
|
+
queryInfo: TQueryInfo;
|
|
36
|
+
constructor({ genQueryString, queriedTables, bindValues, label, reactivityGraph, schema, map, execBeforeFirstRun, queryInfo, }: {
|
|
37
|
+
label?: string;
|
|
38
|
+
genQueryString: string | ((get: GetAtomResult, ctx: QueryContext) => string);
|
|
39
|
+
queriedTables?: Set<string>;
|
|
40
|
+
bindValues?: Bindable;
|
|
41
|
+
reactivityGraph?: ReactivityGraph;
|
|
42
|
+
schema: Schema.Schema<TResultSchema, ReadonlyArray<any>>;
|
|
43
|
+
map?: (rows: TResultSchema) => TResult;
|
|
44
|
+
execBeforeFirstRun?: (ctx: QueryContext) => void;
|
|
45
|
+
queryInfo?: TQueryInfo;
|
|
46
|
+
});
|
|
47
|
+
destroy: () => void;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAqB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAExG,OAAO,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAI/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAA;AAEvE;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAa,EAAE,OAAO,yBACtC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC,WACvC;IACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,QAAQ,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC,KACA,SAAS,CAAC,OAAO,EAAE,aAAa,CAU/B,CAAA;AAGJ,qBAAa,iBAAiB,CAC5B,aAAa,EACb,OAAO,GAAG,aAAa,EACvB,UAAU,SAAS,SAAS,GAAG,aAAa,CAC5C,SAAQ,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC/C,IAAI,EAAE,KAAK,CAAQ;IAEnB,mDAAmD;IACnD,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,GAAG,SAAS,CAAA;IAEpE,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IAErD,KAAK,EAAE,MAAM,CAAA;IAEb,SAAS,CAAC,eAAe,kBAAA;IAEzB,kGAAkG;IAClG,OAAO,CAAC,kBAAkB,CAAA;IAE1B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,MAAM,CAAkD;IAEhE,SAAS,EAAE,UAAU,CAAA;gBAET,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAiC,EACjC,eAAe,EACf,MAAM,EACN,GAAG,EACH,kBAAkB,EAClB,SAAS,GACV,EAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,KAAK,MAAM,CAAC,CAAA;QAC5E,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,UAAU,CAAC,EAAE,QAAQ,CAAA;QACrB,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;QACtC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;QAChD,SAAS,CAAC,EAAE,UAAU,CAAA;KACvB;IAiID,OAAO,aAMN;CACF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { prepareBindValues } from '@livestore/common';
|
|
2
|
+
import { shouldNeverHappen } from '@livestore/utils';
|
|
3
|
+
import { Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
4
|
+
import * as otel from '@opentelemetry/api';
|
|
5
|
+
import { globalReactivityGraph } from '../global-state.js';
|
|
6
|
+
import { NOT_REFRESHED_YET } from '../reactive.js';
|
|
7
|
+
import { getDurationMsFromSpan } from '../utils/otel.js';
|
|
8
|
+
import { LiveStoreQueryBase, makeGetAtomResult } from './base-class.js';
|
|
9
|
+
/**
|
|
10
|
+
* NOTE `querySQL` is only supposed to read data. Don't use it to insert/update/delete data but use mutations instead.
|
|
11
|
+
*/
|
|
12
|
+
export const querySQL = (query, options) => new LiveStoreSQLQuery({
|
|
13
|
+
label: options?.label,
|
|
14
|
+
genQueryString: query,
|
|
15
|
+
queriedTables: options?.queriedTables,
|
|
16
|
+
bindValues: options?.bindValues,
|
|
17
|
+
reactivityGraph: options?.reactivityGraph,
|
|
18
|
+
map: options?.map,
|
|
19
|
+
schema: options.schema,
|
|
20
|
+
queryInfo: { _tag: 'None' },
|
|
21
|
+
});
|
|
22
|
+
/* An object encapsulating a reactive SQL query */
|
|
23
|
+
export class LiveStoreSQLQuery extends LiveStoreQueryBase {
|
|
24
|
+
_tag = 'sql';
|
|
25
|
+
/** A reactive thunk representing the query text */
|
|
26
|
+
queryString$;
|
|
27
|
+
/** A reactive thunk representing the query results */
|
|
28
|
+
results$;
|
|
29
|
+
label;
|
|
30
|
+
reactivityGraph;
|
|
31
|
+
/** Currently only used by `rowQuery` for lazy table migrations and eager default row insertion */
|
|
32
|
+
execBeforeFirstRun;
|
|
33
|
+
mapResult;
|
|
34
|
+
schema;
|
|
35
|
+
queryInfo;
|
|
36
|
+
constructor({ genQueryString, queriedTables, bindValues, label = genQueryString.toString(), reactivityGraph, schema, map, execBeforeFirstRun, queryInfo, }) {
|
|
37
|
+
super();
|
|
38
|
+
this.label = `sql(${label})`;
|
|
39
|
+
this.reactivityGraph = reactivityGraph ?? globalReactivityGraph;
|
|
40
|
+
this.execBeforeFirstRun = execBeforeFirstRun;
|
|
41
|
+
this.queryInfo = queryInfo ?? { _tag: 'None' };
|
|
42
|
+
this.schema = schema;
|
|
43
|
+
this.mapResult = map === undefined ? (rows) => rows : map;
|
|
44
|
+
let queryString$OrQueryString;
|
|
45
|
+
if (typeof genQueryString === 'function') {
|
|
46
|
+
queryString$OrQueryString = this.reactivityGraph.makeThunk((get, setDebugInfo, ctx, otelContext) => {
|
|
47
|
+
const startMs = performance.now();
|
|
48
|
+
const queryString = genQueryString(makeGetAtomResult(get, otelContext ?? ctx.rootOtelContext), ctx);
|
|
49
|
+
const durationMs = performance.now() - startMs;
|
|
50
|
+
setDebugInfo({ _tag: 'computed', label: `${label}:queryString`, query: queryString, durationMs });
|
|
51
|
+
return queryString;
|
|
52
|
+
}, {
|
|
53
|
+
label: `${label}:queryString`,
|
|
54
|
+
meta: { liveStoreThunkType: 'sqlQueryString' },
|
|
55
|
+
equal: (a, b) => a === b,
|
|
56
|
+
});
|
|
57
|
+
this.queryString$ = queryString$OrQueryString;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
queryString$OrQueryString = genQueryString;
|
|
61
|
+
}
|
|
62
|
+
const queryLabel = `${label}:results`;
|
|
63
|
+
const queriedTablesRef = { current: queriedTables };
|
|
64
|
+
const schemaEqual = Schema.equivalence(schema);
|
|
65
|
+
// TODO also support derived equality for `map` (probably will depend on having an easy way to transform a schema without an `encode` step)
|
|
66
|
+
// This would mean dropping the `map` option
|
|
67
|
+
const equal = map === undefined
|
|
68
|
+
? (a, b) => a === NOT_REFRESHED_YET || b === NOT_REFRESHED_YET ? false : schemaEqual(a, b)
|
|
69
|
+
: undefined;
|
|
70
|
+
const results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, { store, otelTracer, rootOtelContext }, otelContext) => otelTracer.startActiveSpan('sql:...', // NOTE span name will be overridden further down
|
|
71
|
+
{}, otelContext ?? rootOtelContext, (span) => {
|
|
72
|
+
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
73
|
+
if (this.execBeforeFirstRun !== undefined) {
|
|
74
|
+
this.execBeforeFirstRun({ store, otelTracer, rootOtelContext, effectsWrapper: (run) => run() });
|
|
75
|
+
this.execBeforeFirstRun = undefined;
|
|
76
|
+
}
|
|
77
|
+
const sqlString = typeof queryString$OrQueryString === 'string'
|
|
78
|
+
? queryString$OrQueryString
|
|
79
|
+
: get(queryString$OrQueryString, otelContext);
|
|
80
|
+
if (queriedTablesRef.current === undefined) {
|
|
81
|
+
queriedTablesRef.current = store.syncDbWrapper.getTablesUsed(sqlString);
|
|
82
|
+
}
|
|
83
|
+
// Establish a reactive dependency on the tables used in the query
|
|
84
|
+
for (const tableName of queriedTablesRef.current) {
|
|
85
|
+
const tableRef = store.tableRefs[tableName] ?? shouldNeverHappen(`No table ref found for ${tableName}`);
|
|
86
|
+
get(tableRef, otelContext);
|
|
87
|
+
}
|
|
88
|
+
span.setAttribute('sql.query', sqlString);
|
|
89
|
+
span.updateName(`sql:${sqlString.slice(0, 50)}`);
|
|
90
|
+
const rawResults = store.syncDbWrapper.select(sqlString, {
|
|
91
|
+
queriedTables,
|
|
92
|
+
bindValues: bindValues ? prepareBindValues(bindValues, sqlString) : undefined,
|
|
93
|
+
otelContext,
|
|
94
|
+
});
|
|
95
|
+
span.setAttribute('sql.rowsCount', rawResults.length);
|
|
96
|
+
const parsedResult = Schema.decodeEither(this.schema)(rawResults);
|
|
97
|
+
if (parsedResult._tag === 'Left') {
|
|
98
|
+
const parseErrorStr = TreeFormatter.formatErrorSync(parsedResult.left);
|
|
99
|
+
const expectedSchemaStr = String(this.schema.ast);
|
|
100
|
+
const bindValuesStr = bindValues === undefined ? '' : `\nBind values: ${JSON.stringify(bindValues)}`;
|
|
101
|
+
console.error(`\
|
|
102
|
+
Error parsing SQL query result.
|
|
103
|
+
|
|
104
|
+
Query: ${sqlString}\
|
|
105
|
+
${bindValuesStr}
|
|
106
|
+
|
|
107
|
+
Expected schema: ${expectedSchemaStr}
|
|
108
|
+
|
|
109
|
+
Error: ${parseErrorStr}
|
|
110
|
+
|
|
111
|
+
Result:`, rawResults);
|
|
112
|
+
return shouldNeverHappen(`Error parsing SQL query result: ${parsedResult.left}`);
|
|
113
|
+
}
|
|
114
|
+
const result = this.mapResult(parsedResult.right);
|
|
115
|
+
span.end();
|
|
116
|
+
const durationMs = getDurationMsFromSpan(span);
|
|
117
|
+
this.executionTimes.push(durationMs);
|
|
118
|
+
setDebugInfo({ _tag: 'sql', label, query: sqlString, durationMs });
|
|
119
|
+
return result;
|
|
120
|
+
}), { label: queryLabel, equal });
|
|
121
|
+
this.results$ = results$;
|
|
122
|
+
}
|
|
123
|
+
destroy = () => {
|
|
124
|
+
if (this.queryString$ !== undefined) {
|
|
125
|
+
this.reactivityGraph.destroyNode(this.queryString$);
|
|
126
|
+
}
|
|
127
|
+
this.reactivityGraph.destroyNode(this.results$);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.test.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/sql.test.ts"],"names":[],"mappings":""}
|