@livestore/livestore 0.0.54-dev.26 → 0.0.54-dev.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/QueryCache.d.ts.map +1 -1
  3. package/dist/__tests__/react/fixture.d.ts +5 -15
  4. package/dist/__tests__/react/fixture.d.ts.map +1 -1
  5. package/dist/__tests__/react/fixture.js +2 -2
  6. package/dist/__tests__/react/fixture.js.map +1 -1
  7. package/dist/effect/LiveStore.d.ts +15 -8
  8. package/dist/effect/LiveStore.d.ts.map +1 -1
  9. package/dist/effect/LiveStore.js +15 -16
  10. package/dist/effect/LiveStore.js.map +1 -1
  11. package/dist/effect/index.d.ts +1 -1
  12. package/dist/effect/index.d.ts.map +1 -1
  13. package/dist/effect/index.js +1 -1
  14. package/dist/effect/index.js.map +1 -1
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/react/LiveStoreContext.d.ts +5 -2
  20. package/dist/react/LiveStoreContext.d.ts.map +1 -1
  21. package/dist/react/LiveStoreContext.js.map +1 -1
  22. package/dist/react/LiveStoreProvider.d.ts +3 -2
  23. package/dist/react/LiveStoreProvider.d.ts.map +1 -1
  24. package/dist/react/LiveStoreProvider.js +63 -39
  25. package/dist/react/LiveStoreProvider.js.map +1 -1
  26. package/dist/react/LiveStoreProvider.test.js +28 -9
  27. package/dist/react/LiveStoreProvider.test.js.map +1 -1
  28. package/dist/react/components/LiveList.d.ts.map +1 -1
  29. package/dist/react/useAtom.d.ts +1 -1
  30. package/dist/react/useAtom.d.ts.map +1 -1
  31. package/dist/react/useLocalId.d.ts.map +1 -1
  32. package/dist/react/useQuery.d.ts.map +1 -1
  33. package/dist/react/useQuery.js +2 -2
  34. package/dist/react/useQuery.js.map +1 -1
  35. package/dist/react/useRow.d.ts.map +1 -1
  36. package/dist/react/useRow.js +2 -2
  37. package/dist/react/useRow.js.map +1 -1
  38. package/dist/react/useRow.test.js +1 -1
  39. package/dist/react/useRow.test.js.map +1 -1
  40. package/dist/react/useTemporaryQuery.d.ts.map +1 -1
  41. package/dist/react/utils/useStateRefWithReactiveInput.d.ts.map +1 -1
  42. package/dist/reactive.d.ts +1 -1
  43. package/dist/reactive.d.ts.map +1 -1
  44. package/dist/reactive.js +3 -4
  45. package/dist/reactive.js.map +1 -1
  46. package/dist/reactiveQueries/base-class.d.ts.map +1 -1
  47. package/dist/reactiveQueries/graphql.d.ts.map +1 -1
  48. package/dist/reactiveQueries/js.d.ts.map +1 -1
  49. package/dist/reactiveQueries/sql.d.ts.map +1 -1
  50. package/dist/reactiveQueries/sql.test.js +6 -6
  51. package/dist/reactiveQueries/sql.test.js.map +1 -1
  52. package/dist/store.d.ts +12 -5
  53. package/dist/store.d.ts.map +1 -1
  54. package/dist/store.js +59 -122
  55. package/dist/store.js.map +1 -1
  56. package/dist/utils/otel.d.ts.map +1 -1
  57. package/package.json +8 -10
  58. package/src/__tests__/react/fixture.tsx +2 -2
  59. package/src/effect/LiveStore.ts +50 -43
  60. package/src/effect/index.ts +2 -1
  61. package/src/index.ts +7 -3
  62. package/src/react/LiveStoreContext.ts +3 -2
  63. package/src/react/LiveStoreProvider.test.tsx +47 -10
  64. package/src/react/LiveStoreProvider.tsx +95 -38
  65. package/src/react/useQuery.ts +2 -2
  66. package/src/react/useRow.test.tsx +1 -1
  67. package/src/react/useRow.ts +2 -5
  68. package/src/reactive.ts +3 -4
  69. package/src/reactiveQueries/sql.test.ts +6 -6
  70. package/src/store.ts +243 -286
@@ -1 +1 @@
1
- {"version":3,"file":"QueryCache.d.ts","sourceRoot":"","sources":["../src/QueryCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGjD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,IAAI,QAAQ,GAAG;IACtD,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACjC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CACpC,CAAA;AAED,kBAAU,OAAO,CAAC;IACD,MAAM,IAAI,EAAE,OAAO,MAAM,CAAA;IACzB,MAAM,KAAK,EAAE,OAAO,MAAM,CAAA;CAC1C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAO7C,MAAM,CAAC,OAAO,OAAO,UAAU;;IAI7B,MAAM,QAAS,MAAM,eAAe,QAAQ,KAAG,QAAQ,CAUtD;IAED,GAAG,QAAS,QAAQ,SAEnB;IAED,GAAG,kBAAmB,SAAS,MAAM,CAAC,OAAO,QAAQ,WAAW,GAAG,UAWlE;IAMD,WAAW,UAAW,MAAM,aAE3B;IAUD,UAAU,kBAAmB,SAAS,MAAM,CAAC,UAU5C;CACF"}
1
+ {"version":3,"file":"QueryCache.d.ts","sourceRoot":"","sources":["../src/QueryCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGjD,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,IAAI,QAAQ,GAAG;IACtD,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACjC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CACpC,CAAA;AAED,kBAAU,OAAO,CAAC;IACD,MAAM,IAAI,EAAE,OAAO,MAAM,CAAA;IACzB,MAAM,KAAK,EAAE,OAAO,MAAM,CAAA;CAC1C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAO7C,MAAM,CAAC,OAAO,OAAO,UAAU;;IAI7B,MAAM,QAAS,MAAM,eAAe,QAAQ,KAAG,QAAQ,CAUtD;IAED,GAAG,QAAS,QAAQ,SAEnB;IAED,GAAG,kBAAmB,QAAQ,CAAC,MAAM,CAAC,OAAO,QAAQ,WAAW,GAAG,UAWlE;IAMD,WAAW,UAAW,MAAM,aAE3B;IAUD,UAAU,kBAAmB,QAAQ,CAAC,MAAM,CAAC,UAU5C;CACF"}
@@ -222,7 +222,7 @@ export declare const tables: {
222
222
  }, never>>;
223
223
  };
224
224
  export declare const schema: {
225
- readonly _Type: typeof import("@livestore/common/dist/schema/index.js").LiveStoreSchemaSymbol;
225
+ readonly _Type: import("@livestore/common/dist/schema/index.js").LiveStoreSchemaSymbol;
226
226
  readonly _DbSchemaType: {
227
227
  todos: DbSchema.SqliteDsl.TableDefinition<"todos", {
228
228
  id: {
@@ -299,17 +299,12 @@ export declare const schema: {
299
299
  }>;
300
300
  };
301
301
  readonly _MutationDefMapType: never;
302
- readonly tables: Map<string, {
303
- sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
304
- isSingleColumn: boolean;
305
- options: DbSchema.TableOptions;
306
- schema: __Schema.Schema<any, any, never>;
307
- }>;
302
+ readonly tables: Map<string, DbSchema.TableDef>;
308
303
  readonly mutations: import("@livestore/common/dist/schema/mutations.js").MutationDefMap;
309
304
  readonly hash: number;
310
305
  migrationOptions: import("@livestore/common/dist/adapter-types.js").MigrationOptions;
311
306
  };
312
- export declare const parseTodos: (rawRows: readonly any[]) => readonly {
307
+ export declare const parseTodos: (rawRows: ReadonlyArray<any>) => readonly {
313
308
  id: string;
314
309
  text: string;
315
310
  completed: boolean;
@@ -380,7 +375,7 @@ export declare const makeTodoMvc: ({ otelTracer, otelContext, useGlobalReactivit
380
375
  readonly id: "singleton";
381
376
  }, never>>;
382
377
  store: import("../../store.js").Store<import("../../store.js").BaseGraphQLContext, {
383
- readonly _Type: typeof import("@livestore/common/dist/schema/index.js").LiveStoreSchemaSymbol;
378
+ readonly _Type: import("@livestore/common/dist/schema/index.js").LiveStoreSchemaSymbol;
384
379
  readonly _DbSchemaType: {
385
380
  todos: DbSchema.SqliteDsl.TableDefinition<"todos", {
386
381
  id: {
@@ -457,12 +452,7 @@ export declare const makeTodoMvc: ({ otelTracer, otelContext, useGlobalReactivit
457
452
  }>;
458
453
  };
459
454
  readonly _MutationDefMapType: never;
460
- readonly tables: Map<string, {
461
- sqliteDef: DbSchema.DefaultSqliteTableDefConstrained;
462
- isSingleColumn: boolean;
463
- options: DbSchema.TableOptions;
464
- schema: __Schema.Schema<any, any, never>;
465
- }>;
455
+ readonly tables: Map<string, DbSchema.TableDef>;
466
456
  readonly mutations: import("@livestore/common/dist/schema/mutations.js").MutationDefMap;
467
457
  readonly hash: number;
468
458
  migrationOptions: import("@livestore/common/dist/adapter-types.js").MigrationOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAe,QAAQ,EAAoD,MAAM,gBAAgB,CAAA;AAGxG,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQjB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAId,CAAA;AAmBF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA4C,CAAA;AAC/D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAA;AAE5C,eAAO,MAAM,UAAU;;;;GAAyB,CAAA;AAEhD,eAAO,MAAM,WAAW,wEAKrB;IACD,UAAU,CAAC,EAAE,KAAK,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,KAAK,OAAO,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;;4BAkCgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBnC,CAAA"}
1
+ {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAsB,QAAQ,EAAoD,MAAM,gBAAgB,CAAA;AAG/G,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQjB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAId,CAAA;AAmBF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA4C,CAAA;AAC/D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAA;AAE5C,eAAO,MAAM,UAAU;;;;GAAyB,CAAA;AAEhD,eAAO,MAAM,WAAW,wEAKrB;IACD,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;;4BAkCgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBnC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { makeInMemoryAdapter } from '@livestore/web';
2
2
  import React from 'react';
3
3
  import { globalReactivityGraph } from '../../global-state.js';
4
- import { createStore, DbSchema, makeReactivityGraph, makeSchema, ParseUtils, sql } from '../../index.js';
4
+ import { createStorePromise, DbSchema, makeReactivityGraph, makeSchema, ParseUtils, sql } from '../../index.js';
5
5
  import * as LiveStoreReact from '../../react/index.js';
6
6
  export const todos = DbSchema.table('todos', {
7
7
  id: DbSchema.text({ primaryKey: true }),
@@ -37,7 +37,7 @@ export const makeTodoMvc = async ({ otelTracer, otelContext, useGlobalReactivity
37
37
  inc,
38
38
  };
39
39
  };
40
- const store = await createStore({
40
+ const store = await createStorePromise({
41
41
  schema,
42
42
  boot: (db) => db.execute(sql `INSERT OR IGNORE INTO app (id, newTodoText, filter) VALUES ('static', '', 'all');`),
43
43
  adapter: makeInMemoryAdapter(),
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- import type { BootDb, StoreAdapterFactory } from '@livestore/common';
1
+ import type { BootDb, StoreAdapterFactory, UnexpectedError } from '@livestore/common';
2
2
  import type { LiveStoreSchema } from '@livestore/common/schema';
3
- import type { Scope } from '@livestore/utils/effect';
4
- import { Context, Deferred, Effect, Layer } from '@livestore/utils/effect';
3
+ import type { Cause } from '@livestore/utils/effect';
4
+ import { Context, Deferred, Effect, Layer, Scope } from '@livestore/utils/effect';
5
5
  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
9
  import type { BaseGraphQLContext, GraphQLOptions, OtelOptions, Store } from '../store.js';
10
- export type LiveStoreContext = {
10
+ export type LiveStoreContext = LiveStoreContextRunning | {
11
+ stage: 'error';
12
+ error: UnexpectedError | unknown;
13
+ } | {
14
+ stage: 'shutdown';
15
+ };
16
+ export type LiveStoreContextRunning = {
11
17
  stage: 'running';
12
18
  store: Store;
13
19
  };
@@ -20,9 +26,10 @@ export type LiveStoreCreateStoreOptions<GraphQLContext extends BaseGraphQLContex
20
26
  adapter: StoreAdapterFactory;
21
27
  batchUpdates?: (run: () => void) => void;
22
28
  disableDevtools?: boolean;
29
+ signal?: AbortSignal;
23
30
  };
24
- export declare const LiveStoreContext: Context.Tag<LiveStoreContext, LiveStoreContext>;
25
- export type DeferredStoreContext = Deferred.Deferred<LiveStoreContext>;
31
+ export declare const LiveStoreContextRunning: Context.Tag<LiveStoreContextRunning, LiveStoreContextRunning>;
32
+ export type DeferredStoreContext = Deferred.Deferred<LiveStoreContextRunning>;
26
33
  export declare const DeferredStoreContext: Context.Tag<DeferredStoreContext, DeferredStoreContext>;
27
34
  export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
28
35
  schema: LiveStoreSchema;
@@ -34,7 +41,7 @@ export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
34
41
  adapter: StoreAdapterFactory;
35
42
  disableDevtools?: boolean;
36
43
  };
37
- export declare const LiveStoreContextLayer: <GraphQLContext extends BaseGraphQLContext>(props: LiveStoreContextProps<GraphQLContext>) => Layer.Layer<LiveStoreContext, never, otel.Tracer>;
44
+ export declare const LiveStoreContextLayer: <GraphQLContext extends BaseGraphQLContext>(props: LiveStoreContextProps<GraphQLContext>) => Layer.Layer<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, otel.Tracer>;
38
45
  export declare const LiveStoreContextDeferred: Layer.Layer<DeferredStoreContext, never, never>;
39
- export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, graphQLOptions: graphQLOptions_, boot: boot_, adapter, disableDevtools, }: LiveStoreContextProps<GraphQLContext>) => Effect.Effect<LiveStoreContext, never, DeferredStoreContext | Scope.Scope | otel.Tracer>;
46
+ export declare const makeLiveStoreContext: <GraphQLContext extends BaseGraphQLContext>({ schema, graphQLOptions: graphQLOptions_, boot: boot_, adapter, disableDevtools, }: LiveStoreContextProps<GraphQLContext>) => Effect.Effect<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, DeferredStoreContext | Scope.Scope | otel.Tracer>;
40
47
  //# 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,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,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIzF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,SAAS,CAAA;IAChB,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,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,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;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,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;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,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,mIAM9B,sBAAsB,cAAc,CAAC,KAAG,OAAO,MAAM,CACtD,gBAAgB,EAChB,KAAK,EACL,oBAAoB,GAAG,MAAM,KAAK,GAAG,KAAK,MAAM,CAgD/C,CAAA"}
1
+ {"version":3,"file":"LiveStore.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,23 @@
1
- import { Context, Deferred, Duration, Effect, Layer, OtelTracer, pipe, Runtime } from '@livestore/utils/effect';
1
+ import { Context, Deferred, Duration, Effect, Layer, OtelTracer, pipe, Runtime, Scope } from '@livestore/utils/effect';
2
2
  import * as otel from '@opentelemetry/api';
3
3
  import { createStore } from '../store.js';
4
- export const LiveStoreContext = Context.GenericTag('@livestore/livestore/LiveStoreContext');
5
- export const DeferredStoreContext = Context.GenericTag('@livestore/livestore/DeferredStoreContext');
6
- export const LiveStoreContextLayer = (props) => Layer.scoped(LiveStoreContext, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
4
+ export const LiveStoreContextRunning = Context.GenericTag('@livestore/livestore/effect/LiveStoreContextRunning');
5
+ export const DeferredStoreContext = Context.GenericTag('@livestore/livestore/effect/DeferredStoreContext');
6
+ export const LiveStoreContextLayer = (props) => Layer.scoped(LiveStoreContextRunning, 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_, adapter, disableDevtools, }) => pipe(Effect.gen(function* ($) {
9
- const runtime = yield* $(Effect.runtime());
8
+ export const makeLiveStoreContext = ({ schema, graphQLOptions: graphQLOptions_, boot: boot_, adapter, disableDevtools, }) => pipe(Effect.gen(function* () {
9
+ const runtime = yield* Effect.runtime();
10
10
  const otelRootSpanContext = otel.context.active();
11
- const otelTracer = yield* $(OtelTracer.Tracer);
12
- const graphQLOptions = yield* $(graphQLOptions_
11
+ const storeScope = yield* Scope.make();
12
+ yield* Effect.addFinalizer((ex) => Scope.close(storeScope, ex));
13
+ const otelTracer = yield* OtelTracer.Tracer;
14
+ const graphQLOptions = yield* graphQLOptions_
13
15
  ? Effect.all({ schema: graphQLOptions_.schema, makeContext: Effect.succeed(graphQLOptions_.makeContext) })
14
- : Effect.succeed(undefined));
16
+ : Effect.succeed(undefined);
15
17
  const boot = boot_
16
18
  ? (db) => boot_(db).pipe(Effect.withSpan('boot'), Effect.tapCauseLogPretty, Runtime.runPromise(runtime))
17
19
  : undefined;
18
- const store = yield* $(Effect.tryPromise(() => createStore({
20
+ const store = yield* createStore({
19
21
  schema,
20
22
  graphQLOptions,
21
23
  otelOptions: {
@@ -25,12 +27,9 @@ export const makeLiveStoreContext = ({ schema, graphQLOptions: graphQLOptions_,
25
27
  boot,
26
28
  adapter,
27
29
  disableDevtools,
28
- })), Effect.acquireRelease((store) => Effect.sync(() => store.destroy())));
30
+ storeScope,
31
+ });
29
32
  window.__debugLiveStore = store;
30
33
  return { stage: 'running', store };
31
- }), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))), Effect.timeoutFail({
32
- // NOTE migrating from the mutation log can take a long time (so might need to increase this even further)
33
- onTimeout: () => new Error('Timed out while creating LiveStore store after 60sec'),
34
- duration: Duration.seconds(60),
35
- }), Effect.orDie);
34
+ }), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))), Effect.timeout(Duration.seconds(60)), Effect.withSpan('@livestore/livestore/effect:makeLiveStoreContext'));
36
35
  //# sourceMappingURL=LiveStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { LiveStoreContextLayer, LiveStoreContext, LiveStoreContextDeferred, DeferredStoreContext, type LiveStoreContextProps, } from './LiveStore.js';
1
+ export { LiveStoreContextLayer, LiveStoreContextRunning as LiveStoreContext, LiveStoreContextRunning, LiveStoreContextDeferred, DeferredStoreContext, type LiveStoreContextProps, } from './LiveStore.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAA"}
@@ -1,2 +1,2 @@
1
- export { LiveStoreContextLayer, LiveStoreContext, LiveStoreContextDeferred, DeferredStoreContext, } from './LiveStore.js';
1
+ export { LiveStoreContextLayer, LiveStoreContextRunning as LiveStoreContext, LiveStoreContextRunning, LiveStoreContextDeferred, DeferredStoreContext, } from './LiveStore.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,GAErB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GAErB,MAAM,gBAAgB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { Store, createStore } from './store.js';
1
+ export { Store, createStorePromise, createStore } from './store.js';
2
2
  export type { BaseGraphQLContext, QueryDebugInfo, RefreshReason } from './store.js';
3
- export type { QueryDefinition, LiveStoreCreateStoreOptions, LiveStoreContext } from './effect/LiveStore.js';
3
+ export type { QueryDefinition, LiveStoreCreateStoreOptions, LiveStoreContextRunning as LiveStoreContext, } from './effect/LiveStore.js';
4
4
  export { MainDatabaseWrapper, emptyDebugInfo } from './MainDatabaseWrapper.js';
5
5
  export type { GetAtom, AtomDebugInfo, RefreshDebugInfo, ReactiveGraphSnapshot, SerializedAtom, SerializedEffect, Atom, Node, Ref, Effect, } from './reactive.js';
6
6
  export { LiveStoreJSQuery, computed } from './reactiveQueries/js.js';
@@ -12,6 +12,6 @@ export { type RowResult, type RowResultEncoded, rowQuery, deriveColQuery } from
12
12
  export * from '@livestore/common/schema';
13
13
  export { sql, type BootDb, type BootStatus, type InMemoryDatabase, type DebugInfo, type MutableDebugInfo, prepareBindValues, type Bindable, type PreparedBindValues, } from '@livestore/common';
14
14
  export { SqliteAst, SqliteDsl } from 'effect-db-schema';
15
- export { isEqual } from 'lodash-es';
15
+ export { deepEqual } from '@livestore/utils';
16
16
  export type { StoreAdapter as DatabaseImpl, StoreAdapterFactory as DatabaseFactory, PreparedStatement, } from '@livestore/common';
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -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,YAAY,CAAA;AAEnF,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE3G,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9E,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,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,SAAS,GACf,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,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,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,kBAAkB,CAAA;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,YAAY,EACV,YAAY,IAAI,YAAY,EAC5B,mBAAmB,IAAI,eAAe,EACtC,iBAAiB,GAClB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACnE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEnF,YAAY,EACV,eAAe,EACf,2BAA2B,EAC3B,uBAAuB,IAAI,gBAAgB,GAC5C,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9E,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,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,SAAS,GACf,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,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,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,kBAAkB,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,YAAY,EACV,YAAY,IAAI,YAAY,EAC5B,mBAAmB,IAAI,eAAe,EACtC,iBAAiB,GAClB,MAAM,mBAAmB,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Store, createStore } from './store.js';
1
+ export { Store, createStorePromise, createStore } from './store.js';
2
2
  export { MainDatabaseWrapper, emptyDebugInfo } from './MainDatabaseWrapper.js';
3
3
  export { LiveStoreJSQuery, computed } from './reactiveQueries/js.js';
4
4
  export { LiveStoreSQLQuery, querySQL } from './reactiveQueries/sql.js';
@@ -9,5 +9,5 @@ export { rowQuery, deriveColQuery } from './row-query.js';
9
9
  export * from '@livestore/common/schema';
10
10
  export { sql, prepareBindValues, } from '@livestore/common';
11
11
  export { SqliteAst, SqliteDsl } from 'effect-db-schema';
12
- export { isEqual } from 'lodash-es';
12
+ export { deepEqual } from '@livestore/utils';
13
13
  //# sourceMappingURL=index.js.map
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,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAc9E,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,EAGL,mBAAmB,GAEpB,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,EAMH,iBAAiB,GAGlB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AASnE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAc9E,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,EAGL,mBAAmB,GAEpB,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,EAMH,iBAAiB,GAGlB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,5 +1,8 @@
1
1
  import React from 'react';
2
- import type { LiveStoreContext as LiveStoreContext_ } from '../effect/LiveStore.js';
2
+ import type { LiveStoreContextRunning as LiveStoreContext_ } from '../effect/LiveStore.js';
3
+ import type { Store } from '../store.js';
3
4
  export declare const LiveStoreContext: React.Context<LiveStoreContext_ | undefined>;
4
- export declare const useStore: () => LiveStoreContext_;
5
+ export declare const useStore: () => {
6
+ store: Store;
7
+ };
5
8
  //# sourceMappingURL=LiveStoreContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreContext.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEnF,eAAO,MAAM,gBAAgB,8CAAgE,CAAA;AAE7F,eAAO,MAAM,QAAQ,QAAO,iBAY3B,CAAA"}
1
+ {"version":3,"file":"LiveStoreContext.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,eAAO,MAAM,gBAAgB,8CAAgE,CAAA;AAE7F,eAAO,MAAM,QAAQ,QAAO;IAAE,KAAK,EAAE,KAAK,CAAA;CAYzC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreContext.js","sourceRoot":"","sources":["../../src/react/LiveStoreContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAgC,SAAS,CAAC,CAAA;AAE7F,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAsB,EAAE;IAC9C,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"LiveStoreContext.js","sourceRoot":"","sources":["../../src/react/LiveStoreContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAKzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAgC,SAAS,CAAC,CAAA;AAE7F,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAqB,EAAE;IAC7C,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { BootDb, BootStatus, StoreAdapterFactory } from '@livestore/common';
1
+ import { type BootDb, type BootStatus, type 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';
@@ -12,8 +12,9 @@ interface LiveStoreProviderProps<GraphQLContext> {
12
12
  adapter: StoreAdapterFactory;
13
13
  batchUpdates?: (run: () => void) => void;
14
14
  disableDevtools?: boolean;
15
+ signal?: AbortSignal;
15
16
  }
16
- export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ renderLoading, graphQLOptions, otelOptions, children, schema, boot, adapter, batchUpdates, disableDevtools, }: LiveStoreProviderProps<GraphQLContext> & {
17
+ export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ renderLoading, graphQLOptions, otelOptions, children, schema, boot, adapter, batchUpdates, disableDevtools, signal, }: LiveStoreProviderProps<GraphQLContext> & {
17
18
  children?: ReactNode;
18
19
  }) => JSX.Element;
19
20
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAChF,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,EAAE,WAAW,EAAS,MAAM,aAAa,CAAA;AAIzF,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,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,YAAY,CAAA;IACnD,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,iBAAiB,+JAU3B,uBAAuB,cAAc,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,KAAG,WAkBtE,CAAA"}
1
+ {"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAmB,MAAM,mBAAmB,CAAA;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAG/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,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIlF,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,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,YAAY,CAAA;IACnD,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,eAAO,MAAM,iBAAiB,GAAI,cAAc,SAAS,kBAAkB,2HAWxE,sBAAsB,CAAC,cAAc,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,KAAG,GAAG,CAAC,OA+B1E,CAAA"}
@@ -1,8 +1,10 @@
1
- import { shouldNeverHappen } from '@livestore/utils';
1
+ import { UnexpectedError } from '@livestore/common';
2
+ import { errorToString } from '@livestore/utils';
3
+ import { Effect, Exit, Logger, LogLevel, Schema, Scope } from '@livestore/utils/effect';
2
4
  import React from 'react';
3
5
  import { createStore } from '../store.js';
4
6
  import { LiveStoreContext } from './LiveStoreContext.js';
5
- export const LiveStoreProvider = ({ renderLoading, graphQLOptions, otelOptions, children, schema, boot, adapter, batchUpdates, disableDevtools, }) => {
7
+ export const LiveStoreProvider = ({ renderLoading, graphQLOptions, otelOptions, children, schema, boot, adapter, batchUpdates, disableDevtools, signal, }) => {
6
8
  const storeCtx = useCreateStore({
7
9
  schema,
8
10
  graphQLOptions,
@@ -11,16 +13,28 @@ export const LiveStoreProvider = ({ renderLoading, graphQLOptions, otelOptions,
11
13
  adapter,
12
14
  batchUpdates,
13
15
  disableDevtools,
16
+ signal,
14
17
  });
18
+ if (storeCtx.stage === 'error') {
19
+ return (React.createElement("div", null, Schema.is(UnexpectedError)(storeCtx.error) ? storeCtx.error.toString() : errorToString(storeCtx.error)));
20
+ }
21
+ if (storeCtx.stage === 'shutdown') {
22
+ return React.createElement("div", null, "LiveStore Shutdown");
23
+ }
15
24
  if (storeCtx.stage !== 'running') {
16
25
  return React.createElement("div", null, renderLoading(storeCtx));
17
26
  }
18
27
  window.__debugLiveStore = storeCtx.store;
19
28
  return React.createElement(LiveStoreContext.Provider, { value: storeCtx }, children);
20
29
  };
21
- const useCreateStore = ({ schema, graphQLOptions, otelOptions, boot, adapter, batchUpdates, disableDevtools, }) => {
30
+ const useCreateStore = ({ schema, graphQLOptions, otelOptions, boot, adapter, batchUpdates, disableDevtools, signal, }) => {
22
31
  const [_, rerender] = React.useState(0);
23
- const ctxValueRef = React.useRef({ stage: 'loading' });
32
+ const ctxValueRef = React.useRef({
33
+ value: { stage: 'loading' },
34
+ scope: undefined,
35
+ counter: 0,
36
+ });
37
+ // console.debug(`useCreateStore (${ctxValueRef.current.counter})`, ctxValueRef.current.value.stage)
24
38
  const inputPropsCacheRef = React.useRef({
25
39
  schema,
26
40
  graphQLOptions,
@@ -28,14 +42,17 @@ const useCreateStore = ({ schema, graphQLOptions, otelOptions, boot, adapter, ba
28
42
  boot,
29
43
  adapter,
30
44
  batchUpdates,
45
+ disableDevtools,
46
+ signal,
31
47
  });
32
- const oldStoreAlreadyDestroyedRef = React.useRef(false);
33
48
  if (inputPropsCacheRef.current.schema !== schema ||
34
49
  inputPropsCacheRef.current.graphQLOptions !== graphQLOptions ||
35
50
  inputPropsCacheRef.current.otelOptions !== otelOptions ||
36
51
  inputPropsCacheRef.current.boot !== boot ||
37
52
  inputPropsCacheRef.current.adapter !== adapter ||
38
- inputPropsCacheRef.current.batchUpdates !== batchUpdates) {
53
+ inputPropsCacheRef.current.batchUpdates !== batchUpdates ||
54
+ inputPropsCacheRef.current.disableDevtools !== disableDevtools ||
55
+ inputPropsCacheRef.current.signal !== signal) {
39
56
  inputPropsCacheRef.current = {
40
57
  schema,
41
58
  graphQLOptions,
@@ -43,46 +60,53 @@ const useCreateStore = ({ schema, graphQLOptions, otelOptions, boot, adapter, ba
43
60
  boot,
44
61
  adapter,
45
62
  batchUpdates,
63
+ disableDevtools,
64
+ signal,
46
65
  };
47
- if (ctxValueRef.current.stage === 'running') {
48
- ctxValueRef.current.store.destroy();
49
- oldStoreAlreadyDestroyedRef.current = true;
50
- ctxValueRef.current = { stage: 'loading' };
66
+ if (ctxValueRef.current.scope !== undefined) {
67
+ Scope.close(ctxValueRef.current.scope, Exit.void).pipe(Effect.tapCauseLogPretty, Effect.runFork);
51
68
  }
69
+ ctxValueRef.current = { value: { stage: 'loading' }, scope: undefined, counter: ctxValueRef.current.counter + 1 };
52
70
  }
53
71
  React.useEffect(() => {
54
- let store;
55
- void (async () => {
56
- try {
57
- store = await createStore({
58
- schema,
59
- graphQLOptions,
60
- otelOptions,
61
- boot,
62
- adapter,
63
- batchUpdates,
64
- disableDevtools,
65
- onBootStatus: (status) => {
66
- if (ctxValueRef.current.stage === 'running')
67
- return;
68
- ctxValueRef.current = status;
69
- rerender((c) => c + 1);
70
- },
71
- });
72
- ctxValueRef.current = { stage: 'running', store };
73
- oldStoreAlreadyDestroyedRef.current = false;
74
- rerender((c) => c + 1);
75
- }
76
- catch (e) {
77
- shouldNeverHappen(`Error creating LiveStore store: ${e}`);
72
+ const storeScope = Scope.make().pipe(Effect.runSync);
73
+ const counter = ctxValueRef.current.counter;
74
+ const setContextValue = (value) => {
75
+ if (ctxValueRef.current.counter !== counter)
76
+ return;
77
+ ctxValueRef.current.value = value;
78
+ rerender((c) => c + 1);
79
+ };
80
+ Scope.addFinalizer(storeScope, Effect.sync(() => setContextValue({ stage: 'shutdown' }))).pipe(Effect.runSync);
81
+ ctxValueRef.current.scope = storeScope;
82
+ signal?.addEventListener('abort', () => {
83
+ if (ctxValueRef.current.scope !== undefined && ctxValueRef.current.counter === counter) {
84
+ Scope.close(ctxValueRef.current.scope, Exit.void).pipe(Effect.tapCauseLogPretty, Effect.runFork);
85
+ ctxValueRef.current.scope = undefined;
78
86
  }
79
- })();
87
+ });
88
+ createStore({
89
+ storeScope,
90
+ schema,
91
+ graphQLOptions,
92
+ otelOptions,
93
+ boot,
94
+ adapter,
95
+ batchUpdates,
96
+ disableDevtools,
97
+ onBootStatus: (status) => {
98
+ if (ctxValueRef.current.value.stage === 'running' || ctxValueRef.current.value.stage === 'error')
99
+ return;
100
+ setContextValue(status);
101
+ },
102
+ }).pipe(Effect.tapSync((store) => setContextValue({ stage: 'running', store })), Effect.tapError((error) => Effect.sync(() => setContextValue({ stage: 'error', error }))), Effect.tapDefect((defect) => Effect.sync(() => setContextValue({ stage: 'error', error: defect }))), Scope.extend(storeScope), Effect.forkIn(storeScope), Effect.tapCauseLogPretty, Effect.annotateLogs({ thread: 'window' }), Effect.provide(Logger.pretty), Logger.withMinimumLogLevel(LogLevel.Debug), Effect.runFork);
80
103
  return () => {
81
- if (oldStoreAlreadyDestroyedRef.current === false) {
82
- store?.destroy();
104
+ if (ctxValueRef.current.scope !== undefined) {
105
+ Scope.close(ctxValueRef.current.scope, Exit.void).pipe(Effect.tapCauseLogPretty, Effect.runFork);
106
+ ctxValueRef.current.scope = undefined;
83
107
  }
84
108
  };
85
- }, [schema, graphQLOptions, otelOptions, boot, adapter, batchUpdates, disableDevtools]);
86
- return ctxValueRef.current;
109
+ }, [schema, graphQLOptions, otelOptions, boot, adapter, batchUpdates, disableDevtools, signal]);
110
+ return ctxValueRef.current.value;
87
111
  };
88
112
  //# sourceMappingURL=LiveStoreProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"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"}
@@ -9,33 +9,52 @@ import * as LiveStoreReact from './index.js';
9
9
  import { LiveStoreProvider } from './LiveStoreProvider.js';
10
10
  describe('LiveStoreProvider', () => {
11
11
  it('simple', async () => {
12
- let renderCount = 0;
12
+ let appRenderCount = 0;
13
13
  const allTodos$ = querySQL(`select * from todos`, { map: parseTodos });
14
- let latestStoreCtx = undefined;
15
14
  const App = () => {
16
- renderCount++;
17
- latestStoreCtx = LiveStoreReact.useStore();
15
+ appRenderCount++;
18
16
  const todos = LiveStoreReact.useQuery(allTodos$);
19
17
  return React.createElement("div", null, JSON.stringify(todos));
20
18
  };
19
+ const abortController = new AbortController();
21
20
  const Root = ({ forceUpdate }) => {
22
21
  const bootCb = React.useCallback((db) => db.execute(sql `INSERT OR IGNORE INTO todos (id, text, completed) VALUES ('t1', 'buy milk', 0);`), []);
23
22
  // eslint-disable-next-line react-hooks/exhaustive-deps
24
23
  const adapterMemo = React.useMemo(() => makeInMemoryAdapter(), [forceUpdate]);
25
24
  return (React.createElement(LiveStoreProvider, { schema: schema, renderLoading: (status) => React.createElement("div", null,
26
25
  "Loading LiveStore: ",
27
- status.stage), adapter: adapterMemo, boot: bootCb },
26
+ status.stage), adapter: adapterMemo, boot: bootCb, signal: abortController.signal },
28
27
  React.createElement(App, null)));
29
28
  };
30
29
  const { rerender } = render(React.createElement(Root, { forceUpdate: 1 }));
31
- expect(renderCount).toBe(0);
30
+ expect(appRenderCount).toBe(0);
32
31
  await waitForElementToBeRemoved(() => screen.getByText((_) => _.startsWith('Loading LiveStore')));
33
- expect(renderCount).toBe(1);
32
+ expect(appRenderCount).toBe(1);
34
33
  rerender(React.createElement(Root, { forceUpdate: 2 }));
35
34
  await waitFor(() => screen.getByText('Loading LiveStore: loading'));
36
35
  await waitForElementToBeRemoved(() => screen.getByText((_) => _.startsWith('Loading LiveStore')));
37
- expect(renderCount).toBe(2);
38
- await latestStoreCtx.store.destroy();
36
+ expect(appRenderCount).toBe(2);
37
+ abortController.abort();
38
+ await waitFor(() => screen.getByText('LiveStore Shutdown'));
39
+ });
40
+ it('error during boot', async () => {
41
+ let appRenderCount = 0;
42
+ const App = () => {
43
+ appRenderCount++;
44
+ return React.createElement("div", null, "hello world");
45
+ };
46
+ const Root = ({ forceUpdate }) => {
47
+ const bootCb = React.useCallback((db) => db.execute(sql `INSERT INTO todos_mising_table (id, text, completed) VALUES ('t1', 'buy milk', 0);`), []);
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ const adapterMemo = React.useMemo(() => makeInMemoryAdapter(), [forceUpdate]);
50
+ return (React.createElement(LiveStoreProvider, { schema: schema, renderLoading: (status) => React.createElement("div", null,
51
+ "Loading LiveStore: ",
52
+ status.stage), adapter: adapterMemo, boot: bootCb },
53
+ React.createElement(App, null)));
54
+ };
55
+ render(React.createElement(Root, { forceUpdate: 1 }));
56
+ expect(appRenderCount).toBe(0);
57
+ await waitFor(() => screen.getByText((_) => _.startsWith('LiveStore.UnexpectedError')));
39
58
  });
40
59
  });
41
60
  //# sourceMappingURL=LiveStoreProvider.test.js.map