@livestore/livestore 0.0.47 → 0.0.48-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/README.md +3 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/MainDatabaseWrapper.d.ts +2 -2
- package/dist/MainDatabaseWrapper.d.ts.map +1 -1
- package/dist/MainDatabaseWrapper.js.map +1 -1
- package/dist/__tests__/react/fixture.d.ts +262 -158
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +14 -12
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/__tests__/react/utils/otel.d.ts +1 -1
- package/dist/__tests__/react/utils/otel.d.ts.map +1 -1
- package/dist/effect/LiveStore.d.ts +5 -5
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +5 -4
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/react/LiveStoreProvider.d.ts +4 -4
- package/dist/react/LiveStoreProvider.d.ts.map +1 -1
- package/dist/react/LiveStoreProvider.js +8 -8
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/react/LiveStoreProvider.test.js +3 -4
- package/dist/react/LiveStoreProvider.test.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/useAtom.d.ts +5 -2
- package/dist/react/useAtom.d.ts.map +1 -1
- package/dist/react/useAtom.js +20 -4
- package/dist/react/useAtom.js.map +1 -1
- package/dist/react/useLocalId.d.ts +10 -0
- package/dist/react/useLocalId.d.ts.map +1 -0
- package/dist/react/useLocalId.js +15 -0
- package/dist/react/useLocalId.js.map +1 -0
- package/dist/react/useQuery.test.js +7 -7
- package/dist/react/useQuery.test.js.map +1 -1
- package/dist/react/useRow.d.ts +3 -1
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +25 -8
- package/dist/react/useRow.js.map +1 -1
- package/dist/react/useRow.test.js +58 -29
- package/dist/react/useRow.test.js.map +1 -1
- package/dist/react/useTemporaryQuery.d.ts +1 -1
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/react/useTemporaryQuery.test.js +3 -3
- package/dist/react/useTemporaryQuery.test.js.map +1 -1
- package/dist/react/utils/useStateRefWithReactiveInput.d.ts.map +1 -1
- package/dist/reactive.test.js +1 -1
- package/dist/reactive.test.js.map +1 -1
- package/dist/reactiveQueries/base-class.d.ts +1 -1
- package/dist/reactiveQueries/base-class.d.ts.map +1 -1
- package/dist/reactiveQueries/base-class.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts +4 -4
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js +2 -1
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/js.d.ts +1 -1
- package/dist/reactiveQueries/js.d.ts.map +1 -1
- package/dist/reactiveQueries/js.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +1 -1
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +2 -2
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/row-query.d.ts +3 -3
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +47 -34
- package/dist/row-query.js.map +1 -1
- package/dist/store.d.ts +20 -19
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +67 -41
- package/dist/store.js.map +1 -1
- package/dist/utils/bounded-collections.d.ts +1 -1
- package/dist/utils/bounded-collections.d.ts.map +1 -1
- package/dist/utils/util.d.ts +0 -1
- package/dist/utils/util.d.ts.map +1 -1
- package/dist/utils/util.js.map +1 -1
- package/package.json +16 -16
- package/src/MainDatabaseWrapper.ts +3 -3
- package/src/__tests__/react/fixture.tsx +32 -18
- package/src/effect/LiveStore.ts +9 -8
- package/src/index.ts +7 -5
- package/src/react/LiveStoreProvider.test.tsx +5 -5
- package/src/react/LiveStoreProvider.tsx +11 -11
- package/src/react/index.ts +1 -0
- package/src/react/useAtom.ts +31 -5
- package/src/react/useLocalId.ts +25 -0
- package/src/react/useQuery.test.tsx +8 -8
- package/src/react/useRow.test.tsx +60 -35
- package/src/react/useRow.ts +43 -12
- package/src/react/useTemporaryQuery.test.tsx +4 -4
- package/src/react/useTemporaryQuery.ts +1 -1
- package/src/reactive.test.ts +1 -1
- package/src/reactiveQueries/base-class.ts +1 -1
- package/src/reactiveQueries/graphql.ts +3 -2
- package/src/reactiveQueries/js.ts +1 -1
- package/src/reactiveQueries/sql.ts +3 -3
- package/src/row-query.ts +67 -55
- package/src/store.ts +89 -59
- package/src/utils/util.ts +0 -2
- package/dist/cud.d.ts +0 -28
- package/dist/cud.d.ts.map +0 -1
- package/dist/cud.js +0 -47
- package/dist/cud.js.map +0 -1
- package/dist/cud.test.d.ts +0 -2
- package/dist/cud.test.d.ts.map +0 -1
- package/dist/cud.test.js +0 -47
- package/dist/cud.test.js.map +0 -1
- package/dist/migrations.d.ts +0 -16
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js +0 -98
- package/dist/migrations.js.map +0 -1
- package/dist/query-info.d.ts +0 -48
- package/dist/query-info.d.ts.map +0 -1
- package/dist/query-info.js +0 -39
- package/dist/query-info.js.map +0 -1
- package/src/cud.test.ts +0 -52
- package/src/cud.ts +0 -88
- package/src/migrations.ts +0 -151
- package/src/query-info.ts +0 -104
|
@@ -5,6 +5,6 @@ type SimplifiedNestedSpan = {
|
|
|
5
5
|
attributes: any;
|
|
6
6
|
children: SimplifiedNestedSpan[];
|
|
7
7
|
};
|
|
8
|
-
export declare const getSimplifiedRootSpan: (exporter: InMemorySpanExporter, mapAttributes?: (
|
|
8
|
+
export declare const getSimplifiedRootSpan: (exporter: InMemorySpanExporter, mapAttributes?: (attributes: Attributes) => Attributes) => SimplifiedNestedSpan;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=otel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/react/utils/otel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAgB,MAAM,+BAA+B,CAAA;AAEvF,KAAK,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAA;AAEhG,eAAO,MAAM,qBAAqB,aACtB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/react/utils/otel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAgB,MAAM,+BAA+B,CAAA;AAEvF,KAAK,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAA;AAEhG,eAAO,MAAM,qBAAqB,aACtB,oBAAoB,kBACd,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,yBAiCvD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BootDb, StoreAdapterFactory } from '@livestore/common';
|
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema';
|
|
3
3
|
import type { Scope } from '@livestore/utils/effect';
|
|
4
4
|
import { Context, Deferred, Effect, Layer } from '@livestore/utils/effect';
|
|
@@ -6,7 +6,7 @@ import * as otel from '@opentelemetry/api';
|
|
|
6
6
|
import type { GraphQLSchema } from 'graphql';
|
|
7
7
|
import type { MainDatabaseWrapper } from '../MainDatabaseWrapper.js';
|
|
8
8
|
import type { LiveQuery } from '../reactiveQueries/base-class.js';
|
|
9
|
-
import type { BaseGraphQLContext,
|
|
9
|
+
import type { BaseGraphQLContext, GraphQLOptions, Store } from '../store.js';
|
|
10
10
|
export type LiveStoreContext = {
|
|
11
11
|
store: Store;
|
|
12
12
|
};
|
|
@@ -17,7 +17,7 @@ export type LiveStoreCreateStoreOptions<GraphQLContext extends BaseGraphQLContex
|
|
|
17
17
|
otelTracer?: otel.Tracer;
|
|
18
18
|
otelRootSpanContext?: otel.Context;
|
|
19
19
|
boot?: (db: BootDb, parentSpan: otel.Span) => unknown | Promise<unknown>;
|
|
20
|
-
|
|
20
|
+
adapter: StoreAdapterFactory;
|
|
21
21
|
batchUpdates?: (run: () => void) => void;
|
|
22
22
|
};
|
|
23
23
|
export declare const LiveStoreContext: Context.Tag<LiveStoreContext, LiveStoreContext>;
|
|
@@ -30,9 +30,9 @@ export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
|
|
|
30
30
|
makeContext: (db: MainDatabaseWrapper) => GraphQLContext;
|
|
31
31
|
};
|
|
32
32
|
boot?: (db: BootDb) => Effect.Effect<void>;
|
|
33
|
-
|
|
33
|
+
adapter: StoreAdapterFactory;
|
|
34
34
|
};
|
|
35
35
|
export declare const LiveStoreContextLayer: <GraphQLContext extends BaseGraphQLContext>(props: LiveStoreContextProps<GraphQLContext>) => Layer.Layer<LiveStoreContext, never, otel.Tracer>;
|
|
36
36
|
export declare const LiveStoreContextDeferred: Layer.Layer<DeferredStoreContext, never, never>;
|
|
37
|
-
export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, graphQLOptions: graphQLOptions_, boot: boot_,
|
|
37
|
+
export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, graphQLOptions: graphQLOptions_, boot: boot_, adapter, }: LiveStoreContextProps<GraphQLContext>) => Effect.Effect<LiveStoreContext, never, DeferredStoreContext | Scope.Scope | otel.Tracer>;
|
|
38
38
|
//# 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,
|
|
1
|
+
{"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAY,MAAM,EAAE,KAAK,EAA6B,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAI5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,OAAO,CAAC,CAAA;AAE3E,MAAM,MAAM,2BAA2B,CAAC,cAAc,SAAS,kBAAkB,IAAI;IACnF,MAAM,EAAE,eAAe,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;IAClC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACxE,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,gBAAgB,iDAAgF,CAAA;AAE7G,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AACtE,eAAO,MAAM,oBAAoB,yDAEhC,CAAA;AAID,MAAM,MAAM,qBAAqB,CAAC,cAAc,SAAS,kBAAkB,IAAI;IAC7E,MAAM,EAAE,eAAe,CAAA;IACvB,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACxD,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,cAAc,CAAA;KACzD,CAAA;IACD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,qBAAqB,qDACzB,sBAAsB,cAAc,CAAC,KAC3C,MAAM,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,MAAM,CAIhD,CAAA;AAEH,eAAO,MAAM,wBAAwB,iDAAwE,CAAA;AAE7G,eAAO,MAAM,oBAAoB,kHAK9B,sBAAsB,cAAc,CAAC,KAAG,OAAO,MAAM,CACtD,gBAAgB,EAChB,KAAK,EACL,oBAAoB,GAAG,MAAM,KAAK,GAAG,KAAK,MAAM,CA6C/C,CAAA"}
|
package/dist/effect/LiveStore.js
CHANGED
|
@@ -5,7 +5,7 @@ export const LiveStoreContext = Context.GenericTag('@livestore/livestore/LiveSto
|
|
|
5
5
|
export const DeferredStoreContext = Context.GenericTag('@livestore/livestore/DeferredStoreContext');
|
|
6
6
|
export const LiveStoreContextLayer = (props) => Layer.scoped(LiveStoreContext, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
|
|
7
7
|
export const LiveStoreContextDeferred = Layer.effect(DeferredStoreContext, Deferred.make());
|
|
8
|
-
export const makeLiveStoreContext = ({ schema, graphQLOptions: graphQLOptions_, boot: boot_,
|
|
8
|
+
export const makeLiveStoreContext = ({ schema, graphQLOptions: graphQLOptions_, boot: boot_, adapter, }) => pipe(Effect.gen(function* ($) {
|
|
9
9
|
const runtime = yield* $(Effect.runtime());
|
|
10
10
|
const otelRootSpanContext = otel.context.active();
|
|
11
11
|
const otelTracer = yield* $(OtelTracer.Tracer);
|
|
@@ -21,12 +21,13 @@ export const makeLiveStoreContext = ({ schema, graphQLOptions: graphQLOptions_,
|
|
|
21
21
|
otelTracer,
|
|
22
22
|
otelRootSpanContext,
|
|
23
23
|
boot,
|
|
24
|
-
|
|
24
|
+
adapter,
|
|
25
25
|
})), Effect.acquireRelease((store) => Effect.sync(() => store.destroy())));
|
|
26
26
|
window.__debugLiveStore = store;
|
|
27
27
|
return { store };
|
|
28
28
|
}), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))), Effect.timeoutFail({
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
// NOTE migrating from the mutation log can take a long time (so might need to increase this even further)
|
|
30
|
+
onTimeout: () => new Error('Timed out while creating LiveStore store after 60sec'),
|
|
31
|
+
duration: Duration.seconds(60),
|
|
31
32
|
}), Effect.orDie);
|
|
32
33
|
//# sourceMappingURL=LiveStore.js.map
|
|
@@ -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,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAM1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAmBzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAmB,uCAAuC,CAAC,CAAA;AAG7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CACpD,2CAA2C,CAC5C,CAAA;AAcD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA4C,EACO,EAAE,CACrD,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CACxC,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAoB,CAAC,CAAA;AAE7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA4C,EAC9E,MAAM,EACN,cAAc,EAAE,eAAe,EAC/B,IAAI,EAAE,KAAK,EACX,
|
|
1
|
+
{"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAM1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAmBzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAmB,uCAAuC,CAAC,CAAA;AAG7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CACpD,2CAA2C,CAC5C,CAAA;AAcD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA4C,EACO,EAAE,CACrD,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CACxC,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAoB,CAAC,CAAA;AAE7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA4C,EAC9E,MAAM,EACN,cAAc,EAAE,eAAe,EAC/B,IAAI,EAAE,KAAK,EACX,OAAO,GAC+B,EAItC,EAAE,CACF,IAAI,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC,CAAA;IAEjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAEjD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAE9C,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAC7B,eAAe;QACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1G,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC9B,CAAA;IAED,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChH,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CACpB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CACrB,WAAW,CAAC;QACV,MAAM;QACN,cAAc;QACd,UAAU;QACV,mBAAmB;QACnB,IAAI;QACJ,OAAO;KACR,CAAC,CACH,EACD,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CACrE,CAAA;IAED,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAA;IAE/B,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EACxG,MAAM,CAAC,WAAW,CAAC;IACjB,0GAA0G;IAC1G,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC;IAClF,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC,EACF,MAAM,CAAC,KAAK,CACb,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Store, createStore } from './store.js';
|
|
2
|
-
export type { BaseGraphQLContext, QueryDebugInfo, RefreshReason
|
|
2
|
+
export type { BaseGraphQLContext, QueryDebugInfo, RefreshReason } from './store.js';
|
|
3
3
|
export type { QueryDefinition, LiveStoreCreateStoreOptions, LiveStoreContext } from './effect/LiveStore.js';
|
|
4
4
|
export { MainDatabaseWrapper, type DebugInfo, emptyDebugInfo } from './MainDatabaseWrapper.js';
|
|
5
5
|
export type { GetAtom, AtomDebugInfo, RefreshDebugInfo, ReactiveGraphSnapshot, SerializedAtom, SerializedEffect, Atom, Node, Ref, Effect, } from './reactive.js';
|
|
@@ -9,11 +9,10 @@ export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.j
|
|
|
9
9
|
export { type GetAtomResult, type DbGraph, makeDbGraph, type LiveQuery } from './reactiveQueries/base-class.js';
|
|
10
10
|
export { globalDbGraph, dynamicallyRegisteredTables } from './global-state.js';
|
|
11
11
|
export { type RowResult, type RowResultEncoded, rowQuery, deriveColQuery } from './row-query.js';
|
|
12
|
-
export * from './cud.js';
|
|
13
12
|
export * from '@livestore/common/schema';
|
|
14
|
-
export { sql } from '@livestore/common';
|
|
13
|
+
export { sql, type BootDb, type InMemoryDatabase } from '@livestore/common';
|
|
15
14
|
export { SqliteAst, SqliteDsl } from 'effect-db-schema';
|
|
16
15
|
export { prepareBindValues, type Bindable, type PreparedBindValues } from './utils/util.js';
|
|
17
16
|
export { isEqual } from 'lodash-es';
|
|
18
|
-
export type { DatabaseImpl, DatabaseFactory, PreparedStatement } from '@livestore/common';
|
|
17
|
+
export type { StoreAdapter as DatabaseImpl, StoreAdapterFactory as DatabaseFactory, PreparedStatement, } from '@livestore/common';
|
|
19
18
|
//# sourceMappingURL=index.d.ts.map
|
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,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEnF,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE3G,OAAO,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9F,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,yBAAyB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE/G,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE3E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,YAAY,EACV,YAAY,IAAI,YAAY,EAC5B,mBAAmB,IAAI,eAAe,EACtC,iBAAiB,GAClB,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,6 @@ export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.j
|
|
|
6
6
|
export { makeDbGraph } from './reactiveQueries/base-class.js';
|
|
7
7
|
export { globalDbGraph, dynamicallyRegisteredTables } from './global-state.js';
|
|
8
8
|
export { rowQuery, deriveColQuery } from './row-query.js';
|
|
9
|
-
export * from './cud.js';
|
|
10
9
|
export * from '@livestore/common/schema';
|
|
11
10
|
export { sql } from '@livestore/common';
|
|
12
11
|
export { SqliteAst, SqliteDsl } from 'effect-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,WAAW,EAAE,MAAM,YAAY,CAAA;AAK/C,OAAO,EAAE,mBAAmB,EAAkB,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAc9F,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAoC,WAAW,EAAkB,MAAM,iCAAiC,CAAA;AAE/G,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAyC,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAK/C,OAAO,EAAE,mBAAmB,EAAkB,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAc9F,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAgB,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAoC,WAAW,EAAkB,MAAM,iCAAiC,CAAA;AAE/G,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAyC,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,GAAG,EAAsC,MAAM,mBAAmB,CAAA;AAE3E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAA0C,MAAM,iBAAiB,CAAA;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BootDb, StoreAdapterFactory } from '@livestore/common';
|
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema';
|
|
3
3
|
import type * as otel from '@opentelemetry/api';
|
|
4
4
|
import type { ReactElement, ReactNode } from 'react';
|
|
5
|
-
import type { BaseGraphQLContext,
|
|
5
|
+
import type { BaseGraphQLContext, GraphQLOptions } from '../store.js';
|
|
6
6
|
interface LiveStoreProviderProps<GraphQLContext> {
|
|
7
7
|
schema: LiveStoreSchema;
|
|
8
8
|
boot?: (db: BootDb, parentSpan: otel.Span) => unknown | Promise<unknown>;
|
|
@@ -10,10 +10,10 @@ interface LiveStoreProviderProps<GraphQLContext> {
|
|
|
10
10
|
otelTracer?: otel.Tracer;
|
|
11
11
|
otelRootSpanContext?: otel.Context;
|
|
12
12
|
fallback: ReactElement;
|
|
13
|
-
|
|
13
|
+
adapter: StoreAdapterFactory;
|
|
14
14
|
batchUpdates?: (run: () => void) => void;
|
|
15
15
|
}
|
|
16
|
-
export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ fallback, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot,
|
|
16
|
+
export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ fallback, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, adapter, batchUpdates, }: LiveStoreProviderProps<GraphQLContext> & {
|
|
17
17
|
children?: ReactNode;
|
|
18
18
|
}) => JSX.Element;
|
|
19
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAS,MAAM,aAAa,CAAA;AAI5E,UAAU,sBAAsB,CAAC,cAAc;IAC7C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACxE,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACzC;AAED,eAAO,MAAM,iBAAiB,6JAU3B,uBAAuB,cAAc,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,KAAG,WAkBtE,CAAA"}
|
|
@@ -2,14 +2,14 @@ import { shouldNeverHappen } from '@livestore/utils';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { createStore } from '../store.js';
|
|
4
4
|
import { LiveStoreContext } from './LiveStoreContext.js';
|
|
5
|
-
export const LiveStoreProvider = ({ fallback, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot,
|
|
5
|
+
export const LiveStoreProvider = ({ fallback, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, adapter, batchUpdates, }) => {
|
|
6
6
|
const storeCtx = useCreateStore({
|
|
7
7
|
schema,
|
|
8
8
|
graphQLOptions,
|
|
9
9
|
otelTracer,
|
|
10
10
|
otelRootSpanContext,
|
|
11
11
|
boot,
|
|
12
|
-
|
|
12
|
+
adapter,
|
|
13
13
|
batchUpdates,
|
|
14
14
|
});
|
|
15
15
|
if (storeCtx === undefined) {
|
|
@@ -18,7 +18,7 @@ export const LiveStoreProvider = ({ fallback, graphQLOptions, otelTracer, otelRo
|
|
|
18
18
|
window.__debugLiveStore = storeCtx.store;
|
|
19
19
|
return React.createElement(LiveStoreContext.Provider, { value: storeCtx }, children);
|
|
20
20
|
};
|
|
21
|
-
const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContext, boot,
|
|
21
|
+
const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContext, boot, adapter, batchUpdates, }) => {
|
|
22
22
|
const [_, rerender] = React.useState(0);
|
|
23
23
|
const ctxValueRef = React.useRef(undefined);
|
|
24
24
|
const inputPropsCacheRef = React.useRef({
|
|
@@ -27,7 +27,7 @@ const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContex
|
|
|
27
27
|
otelTracer,
|
|
28
28
|
otelRootSpanContext,
|
|
29
29
|
boot,
|
|
30
|
-
|
|
30
|
+
adapter,
|
|
31
31
|
batchUpdates,
|
|
32
32
|
});
|
|
33
33
|
const oldStoreAlreadyDestroyedRef = React.useRef(false);
|
|
@@ -36,7 +36,7 @@ const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContex
|
|
|
36
36
|
inputPropsCacheRef.current.otelTracer !== otelTracer ||
|
|
37
37
|
inputPropsCacheRef.current.otelRootSpanContext !== otelRootSpanContext ||
|
|
38
38
|
inputPropsCacheRef.current.boot !== boot ||
|
|
39
|
-
inputPropsCacheRef.current.
|
|
39
|
+
inputPropsCacheRef.current.adapter !== adapter ||
|
|
40
40
|
inputPropsCacheRef.current.batchUpdates !== batchUpdates) {
|
|
41
41
|
inputPropsCacheRef.current = {
|
|
42
42
|
schema,
|
|
@@ -44,7 +44,7 @@ const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContex
|
|
|
44
44
|
otelTracer,
|
|
45
45
|
otelRootSpanContext,
|
|
46
46
|
boot,
|
|
47
|
-
|
|
47
|
+
adapter,
|
|
48
48
|
batchUpdates,
|
|
49
49
|
};
|
|
50
50
|
ctxValueRef.current?.store.destroy();
|
|
@@ -61,7 +61,7 @@ const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContex
|
|
|
61
61
|
otelTracer,
|
|
62
62
|
otelRootSpanContext,
|
|
63
63
|
boot,
|
|
64
|
-
|
|
64
|
+
adapter,
|
|
65
65
|
batchUpdates,
|
|
66
66
|
});
|
|
67
67
|
ctxValueRef.current = { store };
|
|
@@ -77,7 +77,7 @@ const useCreateStore = ({ schema, graphQLOptions, otelTracer, otelRootSpanContex
|
|
|
77
77
|
store?.destroy();
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
-
}, [schema, graphQLOptions, otelTracer, otelRootSpanContext, boot,
|
|
80
|
+
}, [schema, graphQLOptions, otelTracer, otelRootSpanContext, boot, adapter, batchUpdates]);
|
|
81
81
|
return ctxValueRef.current;
|
|
82
82
|
};
|
|
83
83
|
//# sourceMappingURL=LiveStoreProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAaxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA4C,EAC3E,QAAQ,EACR,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { sql } from '@livestore/common';
|
|
2
|
-
import {
|
|
3
|
-
import { InMemoryStorage } from '@livestore/web/storage/in-memory';
|
|
2
|
+
import { makeInMemoryAdapter } from '@livestore/web';
|
|
4
3
|
import { render, screen, waitFor, waitForElementToBeRemoved } from '@testing-library/react';
|
|
5
4
|
import React from 'react';
|
|
6
5
|
import { describe, expect, it } from 'vitest';
|
|
@@ -22,8 +21,8 @@ describe('LiveStoreProvider', () => {
|
|
|
22
21
|
const Root = ({ forceUpdate }) => {
|
|
23
22
|
const bootCb = React.useCallback((db) => db.execute(sql `INSERT OR IGNORE INTO todos (id, text, completed) VALUES ('t1', 'buy milk', 0);`), []);
|
|
24
23
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
25
|
-
const
|
|
26
|
-
return (React.createElement(LiveStoreProvider, { schema: schema, fallback: React.createElement("div", null, "Loading LiveStore"),
|
|
24
|
+
const adapterMemo = React.useMemo(() => makeInMemoryAdapter(), [forceUpdate]);
|
|
25
|
+
return (React.createElement(LiveStoreProvider, { schema: schema, fallback: React.createElement("div", null, "Loading LiveStore"), adapter: adapterMemo, boot: bootCb },
|
|
27
26
|
React.createElement(App, null)));
|
|
28
27
|
};
|
|
29
28
|
const { rerender } = render(React.createElement(Root, { forceUpdate: 1 }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveStoreProvider.test.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.test.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LiveStoreProvider.test.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.test.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEpD,OAAO,KAAK,cAAc,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtB,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;QACtE,IAAI,cAAc,GAAiC,SAAS,CAAA;QAE5D,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,WAAW,EAAE,CAAA;YAEb,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;YAE1C,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YAEhD,OAAO,iCAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAO,CAAA;QAC3C,CAAC,CAAA;QAED,MAAM,IAAI,GAAG,CAAC,EAAE,WAAW,EAA2B,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,EAAU,EAAE,EAAE,CACb,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,iFAAiF,CAAC,EAClG,EAAE,CACH,CAAA;YACD,uDAAuD;YACvD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;YAC7E,OAAO,CACL,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,qDAA4B,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;gBAC3G,oBAAC,GAAG,OAAG,CACW,CACrB,CAAA;QACH,CAAC,CAAA;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,oBAAC,IAAI,IAAC,WAAW,EAAE,CAAC,GAAI,CAAC,CAAA;QAErD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,MAAM,yBAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAE5E,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,QAAQ,CAAC,oBAAC,IAAI,IAAC,WAAW,EAAE,CAAC,GAAI,CAAC,CAAA;QAElC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAC1D,MAAM,yBAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAE5E,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE3B,MAAM,cAAe,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { useTemporaryQuery } from './useTemporaryQuery.js';
|
|
|
5
5
|
export { useStackInfo } from './utils/stack-info.js';
|
|
6
6
|
export { useRow, type StateSetters, type SetStateAction, type Dispatch, type UseRowResult as UseStateResult, } from './useRow.js';
|
|
7
7
|
export { useAtom } from './useAtom.js';
|
|
8
|
+
export { useLocalId, getLocalId } from './useLocalId.js';
|
|
8
9
|
export { LiveList, type LiveListProps } from './components/LiveList.js';
|
|
9
10
|
export type { TypedDocumentNode } from '@graphql-typed-document-node/core';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,YAAY,IAAI,cAAc,GACpC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,YAAY,IAAI,cAAc,GACpC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA"}
|
package/dist/react/index.js
CHANGED
|
@@ -5,5 +5,6 @@ export { useTemporaryQuery } from './useTemporaryQuery.js';
|
|
|
5
5
|
export { useStackInfo } from './utils/stack-info.js';
|
|
6
6
|
export { useRow, } from './useRow.js';
|
|
7
7
|
export { useAtom } from './useAtom.js';
|
|
8
|
+
export { useLocalId, getLocalId } from './useLocalId.js';
|
|
8
9
|
export { LiveList } from './components/LiveList.js';
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,MAAM,GAKP,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,MAAM,GAKP,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAsB,MAAM,0BAA0B,CAAA"}
|
package/dist/react/useAtom.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { type QueryInfoCol, type QueryInfoRow } from '
|
|
1
|
+
import { type QueryInfoCol, type QueryInfoRow } from '@livestore/common';
|
|
2
|
+
import type { DbSchema } from '@livestore/common/schema';
|
|
2
3
|
import type { LiveQuery } from '../reactiveQueries/base-class.js';
|
|
3
4
|
import type { Dispatch, SetStateAction } from './useRow.js';
|
|
4
|
-
export declare const useAtom: <TQuery extends LiveQuery<any, QueryInfoRow<
|
|
5
|
+
export declare const useAtom: <TQuery extends LiveQuery<any, QueryInfoRow<TTableDef> | QueryInfoCol<TTableDef, any>>, TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDefConstrained, boolean, DbSchema.TableOptions & {
|
|
6
|
+
deriveMutations: true;
|
|
7
|
+
}, import("@effect/schema/Schema").Schema<any, any, never>>>(query$: TQuery) => [value: TQuery['__result!'], setValue: Dispatch<SetStateAction<Partial<TQuery['__result!']>>>];
|
|
5
8
|
//# sourceMappingURL=useAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAtom.d.ts","sourceRoot":"","sources":["../../src/react/useAtom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAtom.d.ts","sourceRoot":"","sources":["../../src/react/useAtom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAGjE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3D,eAAO,MAAM,OAAO;qBAK2B,IAAI;qEAGzC,MAAM,KACb,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,eAAe,QAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAoC/F,CAAA"}
|
package/dist/react/useAtom.js
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { mutationForQueryInfo } from '../query-info.js';
|
|
3
2
|
import { useStore } from './LiveStoreContext.js';
|
|
4
3
|
import { useQueryRef } from './useQuery.js';
|
|
5
4
|
export const useAtom = (query$) => {
|
|
6
5
|
const query$Ref = useQueryRef(query$);
|
|
7
6
|
const { store } = useStore();
|
|
7
|
+
// TODO make API equivalent to useRow
|
|
8
8
|
const setValue = React.useMemo(() => {
|
|
9
9
|
return (newValueOrFn) => {
|
|
10
10
|
const newValue = typeof newValueOrFn === 'function' ? newValueOrFn(query$Ref.current) : newValueOrFn;
|
|
11
|
-
if (query$.queryInfo._tag === 'Row'
|
|
12
|
-
|
|
11
|
+
if (query$.queryInfo._tag === 'Row') {
|
|
12
|
+
if (query$.queryInfo.table.options.isSingleton && query$.queryInfo.table.isSingleColumn) {
|
|
13
|
+
store.mutate(query$.queryInfo.table.update(newValue));
|
|
14
|
+
}
|
|
15
|
+
else if (query$.queryInfo.table.options.isSingleColumn) {
|
|
16
|
+
store.mutate(query$.queryInfo.table.update({ where: { id: query$.queryInfo.id }, values: { value: newValue } }));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
store.mutate(query$.queryInfo.table.update({ where: { id: query$.queryInfo.id }, values: newValue }));
|
|
20
|
+
}
|
|
13
21
|
}
|
|
14
22
|
else {
|
|
15
|
-
|
|
23
|
+
if (query$.queryInfo.table.options.isSingleton && query$.queryInfo.table.isSingleColumn) {
|
|
24
|
+
store.mutate(query$.queryInfo.table.update({ [query$.queryInfo.column]: newValue }));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
store.mutate(query$.queryInfo.table.update({
|
|
28
|
+
where: { id: query$.queryInfo.id },
|
|
29
|
+
values: { [query$.queryInfo.column]: newValue },
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
16
32
|
}
|
|
17
33
|
};
|
|
18
34
|
}, [query$.queryInfo, query$Ref, store]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAtom.js","sourceRoot":"","sources":["../../src/react/useAtom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAtom.js","sourceRoot":"","sources":["../../src/react/useAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,CAAC,MAAM,OAAO,GAAG,CAQrB,MAAc,EACkF,EAAE;IAClG,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAErC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE5B,qCAAqC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAgD,GAAG,EAAE;QACjF,OAAO,CAAC,YAAiB,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;YAEpG,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACxF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACvD,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;oBACzD,KAAK,CAAC,MAAM,CACV,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CACnG,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACvG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACxF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACtF,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,MAAM,CACV,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;wBAC5B,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;wBAClC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE;qBAChD,CAAC,CACH,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAExC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type LocalIdOptions = {
|
|
2
|
+
key: string;
|
|
3
|
+
storageType: 'session' | 'local';
|
|
4
|
+
storageKeyPrefix: string;
|
|
5
|
+
makeId: () => string;
|
|
6
|
+
};
|
|
7
|
+
export declare const useLocalId: (opts?: Partial<LocalIdOptions>) => string;
|
|
8
|
+
export declare const getLocalId: (opts?: Partial<LocalIdOptions>) => string;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=useLocalId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalId.d.ts","sourceRoot":"","sources":["../../src/react/useLocalId.ts"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,SAAS,GAAG,OAAO,CAAA;IAChC,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,UAAU,UAAW,QAAQ,cAAc,CAAC,WAAkD,CAAA;AAE3G,eAAO,MAAM,UAAU,UAAW,QAAQ,cAAc,CAAC,WAYxD,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { cuid } from '@livestore/utils/cuid';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export const useLocalId = (opts) => React.useMemo(() => getLocalId(opts), [opts]);
|
|
4
|
+
export const getLocalId = (opts) => {
|
|
5
|
+
const { key = '', storageType = 'session', storageKeyPrefix = 'livestore:localid:', makeId = cuid } = opts ?? {};
|
|
6
|
+
const storage = storageType === 'session' ? window.sessionStorage : window.localStorage;
|
|
7
|
+
const fullKey = `${storageKeyPrefix}:${key}`;
|
|
8
|
+
const storedKey = storage.getItem(fullKey);
|
|
9
|
+
if (storedKey)
|
|
10
|
+
return storedKey;
|
|
11
|
+
const newKey = makeId();
|
|
12
|
+
storage.setItem(fullKey, newKey);
|
|
13
|
+
return newKey;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useLocalId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalId.js","sourceRoot":"","sources":["../../src/react/useLocalId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3G,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAA8B,EAAE,EAAE;IAC3D,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,WAAW,GAAG,SAAS,EAAE,gBAAgB,GAAG,oBAAoB,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAEhH,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAA;IACvF,MAAM,OAAO,GAAG,GAAG,gBAAgB,IAAI,GAAG,EAAE,CAAA;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { renderHook } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { describe, expect, it } from 'vitest';
|
|
4
|
-
import { makeTodoMvc, parseTodos } from '../__tests__/react/fixture.js';
|
|
4
|
+
import { makeTodoMvc, parseTodos, todos } from '../__tests__/react/fixture.js';
|
|
5
5
|
import { querySQL } from '../reactiveQueries/sql.js';
|
|
6
6
|
import * as LiveStoreReact from './index.js';
|
|
7
7
|
describe('useQuery', () => {
|
|
8
8
|
it('simple', async () => {
|
|
9
|
-
const { wrapper, store,
|
|
9
|
+
const { wrapper, store, makeRenderCount } = await makeTodoMvc();
|
|
10
10
|
const renderCount = makeRenderCount();
|
|
11
11
|
const allTodos$ = querySQL(`select * from todos`, { map: parseTodos });
|
|
12
12
|
const { result } = renderHook(() => {
|
|
@@ -15,17 +15,17 @@ describe('useQuery', () => {
|
|
|
15
15
|
}, { wrapper });
|
|
16
16
|
expect(result.current.length).toBe(0);
|
|
17
17
|
expect(renderCount.val).toBe(1);
|
|
18
|
-
act(() => store.mutate(
|
|
18
|
+
React.act(() => store.mutate(todos.insert({ id: 't1', text: 'buy milk', completed: false })));
|
|
19
19
|
expect(result.current.length).toBe(1);
|
|
20
20
|
expect(result.current[0].text).toBe('buy milk');
|
|
21
21
|
expect(renderCount.val).toBe(2);
|
|
22
22
|
});
|
|
23
23
|
it('same `useQuery` hook invoked with different queries', async () => {
|
|
24
|
-
const { wrapper, store,
|
|
24
|
+
const { wrapper, store, makeRenderCount } = await makeTodoMvc();
|
|
25
25
|
const renderCount = makeRenderCount();
|
|
26
26
|
const todo1$ = querySQL(`select * from todos where id = 't1'`, { label: 'libraryTracksView1', map: parseTodos });
|
|
27
27
|
const todo2$ = querySQL(`select * from todos where id = 't2'`, { label: 'libraryTracksView2', map: parseTodos });
|
|
28
|
-
store.mutate(
|
|
28
|
+
store.mutate(todos.insert({ id: 't1', text: 'buy milk', completed: false }), todos.insert({ id: 't2', text: 'buy eggs', completed: false }));
|
|
29
29
|
const { result, rerender } = renderHook((todoId) => {
|
|
30
30
|
renderCount.inc();
|
|
31
31
|
const query$ = React.useMemo(() => (todoId === 't1' ? todo1$ : todo2$), [todoId]);
|
|
@@ -33,7 +33,7 @@ describe('useQuery', () => {
|
|
|
33
33
|
}, { wrapper, initialProps: 't1' });
|
|
34
34
|
expect(result.current).toBe('buy milk');
|
|
35
35
|
expect(renderCount.val).toBe(1);
|
|
36
|
-
act(() => store.mutate(
|
|
36
|
+
React.act(() => store.mutate(todos.update({ where: { id: 't1' }, values: { text: 'buy soy milk' } })));
|
|
37
37
|
expect(result.current).toBe('buy soy milk');
|
|
38
38
|
expect(renderCount.val).toBe(2);
|
|
39
39
|
rerender('t2');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.test.js","sourceRoot":"","sources":["../../src/react/useQuery.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useQuery.test.js","sourceRoot":"","sources":["../../src/react/useQuery.test.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/useRow.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { QueryInfo } from '@livestore/common';
|
|
1
2
|
import { DbSchema } from '@livestore/common/schema';
|
|
2
3
|
import type { DbGraph, LiveQuery } from '../index.js';
|
|
3
|
-
import type { QueryInfo } from '../query-info.js';
|
|
4
4
|
import type { RowResult } from '../row-query.js';
|
|
5
5
|
export type UseRowResult<TTableDef extends DbSchema.TableDef> = [
|
|
6
6
|
row: RowResult<TTableDef>,
|
|
@@ -25,9 +25,11 @@ export type UseRowOptionsBase = {
|
|
|
25
25
|
export declare const useRow: {
|
|
26
26
|
<TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, boolean, DbSchema.TableOptions & {
|
|
27
27
|
isSingleton: true;
|
|
28
|
+
deriveMutations: true;
|
|
28
29
|
}>>(table: TTableDef, options?: UseRowOptionsBase): UseRowResult<TTableDef>;
|
|
29
30
|
<TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, boolean, DbSchema.TableOptions & {
|
|
30
31
|
isSingleton: false;
|
|
32
|
+
deriveMutations: true;
|
|
31
33
|
}>>(table: TTableDef, id: string, options?: UseRowOptionsBase & UseRowOptionsDefaulValues<TTableDef>): UseRowResult<TTableDef>;
|
|
32
34
|
};
|
|
33
35
|
export type Dispatch<A> = (action: A) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRow.d.ts","sourceRoot":"","sources":["../../src/react/useRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useRow.d.ts","sourceRoot":"","sources":["../../src/react/useRow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAIlD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAMnD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAMhD,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI;IAC9D,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC;IAC/B,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CACnD,CAAA;AAED,MAAM,MAAM,yBAAyB,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CACE,SAAS,SAAS,QAAQ,CAAC,QAAQ,CACjC,QAAQ,CAAC,qBAAqB,EAC9B,OAAO,EACP,QAAQ,CAAC,YAAY,GAAG;QAAE,WAAW,EAAE,IAAI,CAAC;QAAC,eAAe,EAAE,IAAI,CAAA;KAAE,CACrE,EAED,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,YAAY,CAAC,SAAS,CAAC,CAAA;IAC1B,CACE,SAAS,SAAS,QAAQ,CAAC,QAAQ,CACjC,QAAQ,CAAC,qBAAqB,EAC9B,OAAO,EACP,QAAQ,CAAC,YAAY,GAAG;QAAE,WAAW,EAAE,KAAK,CAAC;QAAC,eAAe,EAAE,IAAI,CAAA;KAAE,CACtE,EAED,KAAK,EAAE,SAAS,EAEhB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,iBAAiB,GAAG,yBAAyB,CAAC,SAAS,CAAC,GACjE,YAAY,CAAC,SAAS,CAAC,CAAA;CA6G3B,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;AAC7C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAE7D,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,IAAI,GACpG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAC9C;KACG,CAAC,IAAI,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrF,GAAG;IACF,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;CACjE,CAAA"}
|