@livestore/livestore 0.0.0-snapshot-2b8a9de3ec1a701aca891ebc2c98eb328274ae9e → 0.0.0-snapshot-2c861249e50661661613204300b1fc0d902c2e46

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 (68) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/SqliteDbWrapper.d.ts +7 -1
  3. package/dist/SqliteDbWrapper.d.ts.map +1 -1
  4. package/dist/SqliteDbWrapper.js +8 -2
  5. package/dist/SqliteDbWrapper.js.map +1 -1
  6. package/dist/live-queries/base-class.d.ts +8 -12
  7. package/dist/live-queries/base-class.d.ts.map +1 -1
  8. package/dist/live-queries/base-class.js.map +1 -1
  9. package/dist/live-queries/computed.d.ts +4 -8
  10. package/dist/live-queries/computed.d.ts.map +1 -1
  11. package/dist/live-queries/computed.js +1 -6
  12. package/dist/live-queries/computed.js.map +1 -1
  13. package/dist/live-queries/db-query.d.ts +13 -18
  14. package/dist/live-queries/db-query.d.ts.map +1 -1
  15. package/dist/live-queries/db-query.js +31 -30
  16. package/dist/live-queries/db-query.js.map +1 -1
  17. package/dist/live-queries/db-query.test.js +7 -7
  18. package/dist/live-queries/db-query.test.js.map +1 -1
  19. package/dist/live-queries/make-ref.d.ts.map +1 -1
  20. package/dist/live-queries/make-ref.js +1 -0
  21. package/dist/live-queries/make-ref.js.map +1 -1
  22. package/dist/live-queries/row-query-utils.d.ts +12 -0
  23. package/dist/live-queries/row-query-utils.d.ts.map +1 -0
  24. package/dist/live-queries/row-query-utils.js +18 -0
  25. package/dist/live-queries/row-query-utils.js.map +1 -0
  26. package/dist/mod.d.ts +0 -1
  27. package/dist/mod.d.ts.map +1 -1
  28. package/dist/mod.js +0 -1
  29. package/dist/mod.js.map +1 -1
  30. package/dist/reactive.d.ts.map +1 -1
  31. package/dist/reactive.js +1 -1
  32. package/dist/reactive.js.map +1 -1
  33. package/dist/store/create-store.d.ts +12 -2
  34. package/dist/store/create-store.d.ts.map +1 -1
  35. package/dist/store/create-store.js +18 -11
  36. package/dist/store/create-store.js.map +1 -1
  37. package/dist/store/store-types.d.ts +11 -10
  38. package/dist/store/store-types.d.ts.map +1 -1
  39. package/dist/store/store.d.ts +29 -30
  40. package/dist/store/store.d.ts.map +1 -1
  41. package/dist/store/store.js +84 -85
  42. package/dist/store/store.js.map +1 -1
  43. package/dist/utils/stack-info.test.js +6 -6
  44. package/dist/utils/tests/fixture.d.ts +54 -207
  45. package/dist/utils/tests/fixture.d.ts.map +1 -1
  46. package/dist/utils/tests/fixture.js +20 -13
  47. package/dist/utils/tests/fixture.js.map +1 -1
  48. package/package.json +4 -4
  49. package/src/SqliteDbWrapper.ts +12 -3
  50. package/src/live-queries/__snapshots__/db-query.test.ts.snap +9 -9
  51. package/src/live-queries/base-class.ts +8 -25
  52. package/src/live-queries/computed.ts +4 -18
  53. package/src/live-queries/db-query.test.ts +7 -7
  54. package/src/live-queries/db-query.ts +57 -63
  55. package/src/live-queries/make-ref.ts +2 -0
  56. package/src/live-queries/row-query-utils.ts +50 -0
  57. package/src/mod.ts +0 -2
  58. package/src/reactive.ts +1 -1
  59. package/src/store/create-store.ts +33 -15
  60. package/src/store/store-types.ts +11 -11
  61. package/src/store/store.ts +120 -122
  62. package/src/utils/stack-info.test.ts +6 -6
  63. package/src/utils/tests/fixture.ts +21 -25
  64. package/dist/row-query-utils.d.ts +0 -17
  65. package/dist/row-query-utils.d.ts.map +0 -1
  66. package/dist/row-query-utils.js +0 -34
  67. package/dist/row-query-utils.js.map +0 -1
  68. package/src/row-query-utils.ts +0 -76
@@ -1,34 +0,0 @@
1
- import { SessionIdSymbol } from '@livestore/common';
2
- import { DbSchema } from '@livestore/common/schema';
3
- import { shouldNeverHappen } from '@livestore/utils';
4
- import { computed } from './live-queries/computed.js';
5
- export const rowQueryLabel = (table, id) => `row:${table.sqliteDef.name}${id === undefined ? '' : id === SessionIdSymbol ? `:sessionId` : `:${id}`}`;
6
- export const deriveColQuery = (queryDef, colName) => {
7
- return computed((get) => get(queryDef)[colName], {
8
- label: `deriveColQuery:${queryDef.label}:${colName}`,
9
- queryInfo: queryDef.queryInfo._tag === 'Row'
10
- ? { _tag: 'Col', table: queryDef.queryInfo.table, column: colName, id: queryDef.queryInfo.id }
11
- : undefined,
12
- deps: [
13
- queryDef.queryInfo.table.sqliteDef.name,
14
- queryDef.queryInfo.id === SessionIdSymbol ? 'sessionId' : queryDef.queryInfo.id,
15
- queryDef.queryInfo._tag === 'Col' ? queryDef.queryInfo.column : undefined,
16
- ],
17
- });
18
- };
19
- export const makeExecBeforeFirstRun = ({ id, insertValues, table, otelContext: otelContext_, }) => ({ store }) => {
20
- const otelContext = otelContext_ ?? store.otel.queriesSpanContext;
21
- if (table.options.isSingleton === false) {
22
- const idVal = id === SessionIdSymbol ? store.sessionId : id;
23
- const rowExists = store.sqliteDbWrapper.select(`SELECT 1 FROM '${table.sqliteDef.name}' WHERE id = ?`, [idVal], { otelContext }).length === 1;
24
- if (rowExists)
25
- return;
26
- if (DbSchema.tableHasDerivedMutations(table) === false) {
27
- return shouldNeverHappen(`Cannot insert row for table "${table.sqliteDef.name}" which does not have 'deriveMutations: true' set`);
28
- }
29
- // It's important that we only commit and don't refresh here, as this function might be called during a render
30
- // and otherwise we might end up in a "reactive loop"
31
- store.commit({ otelContext, skipRefresh: true, label: `rowQuery:${table.sqliteDef.name}:${idVal}` }, table.insert({ id, ...insertValues }));
32
- }
33
- };
34
- //# sourceMappingURL=row-query-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row-query-utils.js","sourceRoot":"","sources":["../src/row-query-utils.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import type { PreparedBindValues, QueryInfo } from '@livestore/common'
2
- import { SessionIdSymbol } from '@livestore/common'
3
- import { DbSchema } from '@livestore/common/schema'
4
- import { shouldNeverHappen } from '@livestore/utils'
5
- import type * as otel from '@opentelemetry/api'
6
-
7
- import type { GetResult, LiveQueryDef, ReactivityGraphContext } from './live-queries/base-class.js'
8
- import { computed } from './live-queries/computed.js'
9
-
10
- export const rowQueryLabel = (table: DbSchema.TableDefBase, id: string | SessionIdSymbol | number | undefined) =>
11
- `row:${table.sqliteDef.name}${id === undefined ? '' : id === SessionIdSymbol ? `:sessionId` : `:${id}`}`
12
-
13
- export const deriveColQuery: {
14
- <TQueryDef extends LiveQueryDef<any, QueryInfo.None>, TCol extends keyof GetResult<TQueryDef> & string>(
15
- queryDef: TQueryDef,
16
- colName: TCol,
17
- ): LiveQueryDef<GetResult<TQueryDef>[TCol], QueryInfo.None>
18
- <TQueryDef extends LiveQueryDef<any, QueryInfo.Row>, TCol extends keyof GetResult<TQueryDef> & string>(
19
- queryDef: TQueryDef,
20
- colName: TCol,
21
- ): LiveQueryDef<GetResult<TQueryDef>[TCol], QueryInfo.Col>
22
- } = (queryDef: LiveQueryDef<any, QueryInfo.Row | QueryInfo.Col>, colName: string) => {
23
- return computed((get) => get(queryDef)[colName], {
24
- label: `deriveColQuery:${queryDef.label}:${colName}`,
25
- queryInfo:
26
- queryDef.queryInfo._tag === 'Row'
27
- ? { _tag: 'Col', table: queryDef.queryInfo.table, column: colName, id: queryDef.queryInfo.id }
28
- : undefined,
29
- deps: [
30
- queryDef.queryInfo.table.sqliteDef.name,
31
- queryDef.queryInfo.id === SessionIdSymbol ? 'sessionId' : queryDef.queryInfo.id,
32
- queryDef.queryInfo._tag === 'Col' ? queryDef.queryInfo.column : undefined,
33
- ],
34
- }) as any
35
- }
36
-
37
- export const makeExecBeforeFirstRun =
38
- ({
39
- id,
40
- insertValues,
41
- table,
42
- otelContext: otelContext_,
43
- }: {
44
- id?: string | SessionIdSymbol | number
45
- insertValues?: any
46
- table: DbSchema.TableDefBase
47
- otelContext: otel.Context | undefined
48
- }) =>
49
- ({ store }: ReactivityGraphContext) => {
50
- const otelContext = otelContext_ ?? store.otel.queriesSpanContext
51
-
52
- if (table.options.isSingleton === false) {
53
- const idVal = id === SessionIdSymbol ? store.sessionId : id!
54
- const rowExists =
55
- store.sqliteDbWrapper.select(
56
- `SELECT 1 FROM '${table.sqliteDef.name}' WHERE id = ?`,
57
- [idVal] as any as PreparedBindValues,
58
- { otelContext },
59
- ).length === 1
60
-
61
- if (rowExists) return
62
-
63
- if (DbSchema.tableHasDerivedMutations(table) === false) {
64
- return shouldNeverHappen(
65
- `Cannot insert row for table "${table.sqliteDef.name}" which does not have 'deriveMutations: true' set`,
66
- )
67
- }
68
-
69
- // It's important that we only commit and don't refresh here, as this function might be called during a render
70
- // and otherwise we might end up in a "reactive loop"
71
- store.commit(
72
- { otelContext, skipRefresh: true, label: `rowQuery:${table.sqliteDef.name}:${idVal}` },
73
- table.insert({ id, ...insertValues }),
74
- )
75
- }
76
- }