@livestore/livestore 0.0.10 → 0.0.13

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 (151) hide show
  1. package/README.md +7 -7
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/react/fixture.d.ts +4 -120
  4. package/dist/__tests__/react/fixture.d.ts.map +1 -1
  5. package/dist/__tests__/react/fixture.js +19 -26
  6. package/dist/__tests__/react/fixture.js.map +1 -1
  7. package/dist/__tests__/reactive.test.js +31 -0
  8. package/dist/__tests__/reactive.test.js.map +1 -1
  9. package/dist/backends/base.d.ts +4 -4
  10. package/dist/backends/{web-in-memory.d.ts → in-memory/index.d.ts} +6 -6
  11. package/dist/backends/in-memory/index.d.ts.map +1 -0
  12. package/dist/backends/{web-in-memory.js → in-memory/index.js} +7 -7
  13. package/dist/backends/in-memory/index.js.map +1 -0
  14. package/dist/backends/index.d.ts +4 -8
  15. package/dist/backends/index.d.ts.map +1 -1
  16. package/dist/backends/index.js +0 -22
  17. package/dist/backends/index.js.map +1 -1
  18. package/dist/backends/{tauri.d.ts → tauri/index.d.ts} +5 -6
  19. package/dist/backends/tauri/index.d.ts.map +1 -0
  20. package/dist/backends/{tauri.js → tauri/index.js} +4 -4
  21. package/dist/backends/tauri/index.js.map +1 -0
  22. package/dist/backends/{web.d.ts → web-worker/index.d.ts} +6 -7
  23. package/dist/backends/web-worker/index.d.ts.map +1 -0
  24. package/dist/backends/{web.js → web-worker/index.js} +6 -6
  25. package/dist/backends/web-worker/index.js.map +1 -0
  26. package/dist/backends/{web-worker.d.ts → web-worker/worker.d.ts} +3 -3
  27. package/dist/backends/web-worker/worker.d.ts.map +1 -0
  28. package/dist/backends/{web-worker.js → web-worker/worker.js} +3 -3
  29. package/dist/backends/web-worker/worker.js.map +1 -0
  30. package/dist/effect/LiveStore.d.ts +6 -6
  31. package/dist/effect/LiveStore.d.ts.map +1 -1
  32. package/dist/effect/LiveStore.js +2 -5
  33. package/dist/effect/LiveStore.js.map +1 -1
  34. package/dist/events.d.ts +1 -1
  35. package/dist/events.d.ts.map +1 -1
  36. package/dist/events.js +1 -1
  37. package/dist/events.js.map +1 -1
  38. package/dist/inMemoryDatabase.d.ts +5 -10
  39. package/dist/inMemoryDatabase.d.ts.map +1 -1
  40. package/dist/inMemoryDatabase.js +78 -89
  41. package/dist/inMemoryDatabase.js.map +1 -1
  42. package/dist/index.d.ts +7 -7
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +3 -4
  45. package/dist/index.js.map +1 -1
  46. package/dist/migrations.d.ts +9 -0
  47. package/dist/migrations.d.ts.map +1 -0
  48. package/dist/migrations.js +62 -0
  49. package/dist/migrations.js.map +1 -0
  50. package/dist/otel.d.ts +0 -1
  51. package/dist/otel.d.ts.map +1 -1
  52. package/dist/otel.js +0 -11
  53. package/dist/otel.js.map +1 -1
  54. package/dist/react/LiveStoreProvider.d.ts +5 -4
  55. package/dist/react/LiveStoreProvider.d.ts.map +1 -1
  56. package/dist/react/LiveStoreProvider.js +6 -5
  57. package/dist/react/LiveStoreProvider.js.map +1 -1
  58. package/dist/react/index.d.ts +2 -1
  59. package/dist/react/index.d.ts.map +1 -1
  60. package/dist/react/index.js.map +1 -1
  61. package/dist/react/useGlobalQuery.d.ts.map +1 -1
  62. package/dist/react/useGlobalQuery.js +0 -2
  63. package/dist/react/useGlobalQuery.js.map +1 -1
  64. package/dist/react/useLiveStoreComponent.d.ts +22 -17
  65. package/dist/react/useLiveStoreComponent.d.ts.map +1 -1
  66. package/dist/react/useLiveStoreComponent.js +46 -17
  67. package/dist/react/useLiveStoreComponent.js.map +1 -1
  68. package/dist/reactive.d.ts.map +1 -1
  69. package/dist/reactive.js +1 -0
  70. package/dist/reactive.js.map +1 -1
  71. package/dist/schema.d.ts +32 -112
  72. package/dist/schema.d.ts.map +1 -1
  73. package/dist/schema.js +36 -79
  74. package/dist/schema.js.map +1 -1
  75. package/dist/storage/base.d.ts +10 -0
  76. package/dist/storage/base.d.ts.map +1 -0
  77. package/dist/storage/base.js +14 -0
  78. package/dist/storage/base.js.map +1 -0
  79. package/dist/storage/in-memory/index.d.ts +15 -0
  80. package/dist/storage/in-memory/index.d.ts.map +1 -0
  81. package/dist/storage/in-memory/index.js +14 -0
  82. package/dist/storage/in-memory/index.js.map +1 -0
  83. package/dist/storage/index.d.ts +14 -0
  84. package/dist/storage/index.d.ts.map +1 -0
  85. package/dist/storage/index.js +9 -0
  86. package/dist/storage/index.js.map +1 -0
  87. package/dist/storage/tauri/index.d.ts +19 -0
  88. package/dist/storage/tauri/index.d.ts.map +1 -0
  89. package/dist/storage/tauri/index.js +38 -0
  90. package/dist/storage/tauri/index.js.map +1 -0
  91. package/dist/storage/utils/idb.d.ts +10 -0
  92. package/dist/storage/utils/idb.d.ts.map +1 -0
  93. package/dist/storage/utils/idb.js +58 -0
  94. package/dist/storage/utils/idb.js.map +1 -0
  95. package/dist/storage/web-worker/index.d.ts +27 -0
  96. package/dist/storage/web-worker/index.d.ts.map +1 -0
  97. package/dist/storage/web-worker/index.js +76 -0
  98. package/dist/storage/web-worker/index.js.map +1 -0
  99. package/dist/storage/web-worker/worker.d.ts +13 -0
  100. package/dist/storage/web-worker/worker.d.ts.map +1 -0
  101. package/dist/storage/web-worker/worker.js +110 -0
  102. package/dist/storage/web-worker/worker.js.map +1 -0
  103. package/dist/store.d.ts +6 -6
  104. package/dist/store.d.ts.map +1 -1
  105. package/dist/store.js +93 -63
  106. package/dist/store.js.map +1 -1
  107. package/dist/util.d.ts +3 -1
  108. package/dist/util.d.ts.map +1 -1
  109. package/dist/util.js +2 -0
  110. package/dist/util.js.map +1 -1
  111. package/package.json +50 -23
  112. package/src/__tests__/react/fixture.tsx +19 -28
  113. package/src/__tests__/reactive.test.ts +39 -0
  114. package/src/effect/LiveStore.ts +8 -13
  115. package/src/events.ts +1 -1
  116. package/src/inMemoryDatabase.ts +100 -117
  117. package/src/index.ts +10 -16
  118. package/src/migrations.ts +101 -0
  119. package/src/otel.ts +0 -11
  120. package/src/react/LiveStoreProvider.tsx +12 -8
  121. package/src/react/index.ts +9 -0
  122. package/src/react/useGlobalQuery.ts +0 -3
  123. package/src/react/useLiveStoreComponent.ts +98 -38
  124. package/src/reactive.ts +2 -1
  125. package/src/schema.ts +72 -145
  126. package/src/storage/in-memory/index.ts +21 -0
  127. package/src/storage/index.ts +27 -0
  128. package/src/{backends/tauri.ts → storage/tauri/index.ts} +13 -27
  129. package/src/storage/web-worker/index.ts +118 -0
  130. package/src/{backends/web-worker.ts → storage/web-worker/worker.ts} +17 -52
  131. package/src/store.ts +112 -79
  132. package/src/util.ts +5 -1
  133. package/tsconfig.json +1 -3
  134. package/dist/backends/noop.d.ts +0 -18
  135. package/dist/backends/noop.d.ts.map +0 -1
  136. package/dist/backends/noop.js +0 -21
  137. package/dist/backends/noop.js.map +0 -1
  138. package/dist/backends/tauri.d.ts.map +0 -1
  139. package/dist/backends/tauri.js.map +0 -1
  140. package/dist/backends/web-in-memory.d.ts.map +0 -1
  141. package/dist/backends/web-in-memory.js.map +0 -1
  142. package/dist/backends/web-worker.d.ts.map +0 -1
  143. package/dist/backends/web-worker.js.map +0 -1
  144. package/dist/backends/web.d.ts.map +0 -1
  145. package/dist/backends/web.js.map +0 -1
  146. package/src/backends/base.ts +0 -67
  147. package/src/backends/index.ts +0 -98
  148. package/src/backends/noop.ts +0 -32
  149. package/src/backends/web-in-memory.ts +0 -65
  150. package/src/backends/web.ts +0 -97
  151. /package/src/{backends → storage}/utils/idb.ts +0 -0
@@ -0,0 +1,62 @@
1
+ import { SqliteAst } from 'effect-db-schema';
2
+ import { memoize, omit } from 'lodash-es';
3
+ import { componentStateTables, SCHEMA_META_TABLE, systemTables } from './schema.js';
4
+ import { sql } from './util.js';
5
+ // TODO more graceful DB migration (e.g. backup DB before destructive migrations)
6
+ export const migrateDb = ({ db, otelContext, schema, }) => {
7
+ db.execute(
8
+ // TODO use schema migration definition from schema.ts instead
9
+ sql `create table if not exists ${SCHEMA_META_TABLE} (tableName text primary key, schemaHash text, updatedAt text);`, undefined, [], { otelContext });
10
+ const schemaMetaRows = db.select(sql `SELECT * FROM ${SCHEMA_META_TABLE}`);
11
+ const dbSchemaHashByTable = Object.fromEntries(schemaMetaRows.map(({ tableName, schemaHash }) => [tableName, schemaHash]));
12
+ const getMemoizedTimestamp = memoize(() => new Date().toISOString());
13
+ const tableDefs = {
14
+ // NOTE it's important the `SCHEMA_META_TABLE` comes first since we're writing to it below
15
+ [SCHEMA_META_TABLE]: systemTables[SCHEMA_META_TABLE],
16
+ ...omit(schema.tables, [SCHEMA_META_TABLE]),
17
+ ...componentStateTables,
18
+ };
19
+ for (const [tableName, tableDef] of Object.entries(tableDefs)) {
20
+ const dbSchemaHash = dbSchemaHashByTable[tableName];
21
+ const schemaHash = SqliteAst.hash(tableDef);
22
+ if (schemaHash !== dbSchemaHash) {
23
+ console.log(`Schema hash mismatch for table '${tableName}' (DB: ${dbSchemaHash}, expected: ${schemaHash}), migrating table...`);
24
+ const columnSpec = makeColumnSpec(tableDef);
25
+ // TODO need to possibly handle cascading deletes due to foreign keys
26
+ db.execute(sql `drop table if exists ${tableName}`, undefined, [], { otelContext });
27
+ db.execute(sql `create table if not exists ${tableName} (${columnSpec});`, undefined, [], { otelContext });
28
+ for (const index of tableDef.indexes) {
29
+ db.execute(createIndexFromDefinition(tableName, index), undefined, [], { otelContext });
30
+ }
31
+ const updatedAt = getMemoizedTimestamp();
32
+ db.execute(sql `
33
+ INSERT INTO ${SCHEMA_META_TABLE} (tableName, schemaHash, updatedAt) VALUES ($tableName, $schemaHash, $updatedAt)
34
+ ON CONFLICT (tableName) DO UPDATE SET schemaHash = $schemaHash, updatedAt = $updatedAt;
35
+ `, { tableName, schemaHash, updatedAt }, [], { otelContext });
36
+ }
37
+ }
38
+ };
39
+ const createIndexFromDefinition = (tableName, index) => {
40
+ const uniqueStr = index.unique ? 'UNIQUE' : '';
41
+ return sql `create ${uniqueStr} index ${index.name} on ${tableName} (${index.columns.join(', ')})`;
42
+ };
43
+ const makeColumnSpec = (tableDef) => {
44
+ const primaryKeys = tableDef.columns.filter((_) => _.primaryKey).map((_) => _.name);
45
+ const columnDefStrs = tableDef.columns.map(toSqliteColumnSpec);
46
+ if (primaryKeys.length > 0) {
47
+ columnDefStrs.push(`PRIMARY KEY (${primaryKeys.join(', ')})`);
48
+ }
49
+ return columnDefStrs.join(', ');
50
+ };
51
+ const toSqliteColumnSpec = (column) => {
52
+ const columnType = column.type._tag;
53
+ // const primaryKey = column.primaryKey ? 'primary key' : ''
54
+ const nullable = column.nullable === false ? 'not null' : '';
55
+ const defaultValue = column.default === undefined
56
+ ? ''
57
+ : columnType === 'text'
58
+ ? `default '${column.default}'`
59
+ : `default ${column.default}`;
60
+ return `${column.name} ${columnType} ${nullable} ${defaultValue}`;
61
+ };
62
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE/B,iFAAiF;AACjF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,EAAE,EACF,WAAW,EACX,MAAM,GAKP,EAAE,EAAE;IACH,EAAE,CAAC,OAAO;IACR,8DAA8D;IAC9D,GAAG,CAAA,8BAA8B,iBAAiB,iEAAiE,EACnH,SAAS,EACT,EAAE,EACF,EAAE,WAAW,EAAE,CAChB,CAAA;IAED,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAgB,GAAG,CAAA,iBAAiB,iBAAiB,EAAE,CAAC,CAAA;IAExF,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAC5C,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAC3E,CAAA;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IACpE,MAAM,SAAS,GAAG;QAChB,0FAA0F;QAC1F,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC;QACpD,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC3C,GAAG,oBAAoB;KACxB,CAAA;IAED,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC7D,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,UAAU,KAAK,YAAY,EAAE;YAC/B,OAAO,CAAC,GAAG,CACT,mCAAmC,SAAS,UAAU,YAAY,eAAe,UAAU,uBAAuB,CACnH,CAAA;YAED,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;YAE3C,qEAAqE;YACrE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,wBAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;YAClF,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,8BAA8B,SAAS,KAAK,UAAU,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;YAEzG,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;aACxF;YAED,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAA;YACxC,EAAE,CAAC,OAAO,CACR,GAAG,CAAA;wBACa,iBAAiB;;SAEhC,EACD,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,EACpC,EAAE,EACF,EAAE,WAAW,EAAE,CAChB,CAAA;SACF;KACF;AACH,CAAC,CAAA;AAED,MAAM,yBAAyB,GAAG,CAAC,SAAiB,EAAE,KAAsB,EAAE,EAAE;IAC9E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9C,OAAO,GAAG,CAAA,UAAU,SAAS,UAAU,KAAK,CAAC,IAAI,OAAO,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AACnG,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,QAAyB,EAAE,EAAE;IACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACnF,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,aAAa,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KAC9D;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAE,EAAE;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;IACnC,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,MAAM,YAAY,GAChB,MAAM,CAAC,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,UAAU,KAAK,MAAM;YACvB,CAAC,CAAC,YAAY,MAAM,CAAC,OAAO,GAAG;YAC/B,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAA;IAEjC,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAA;AACnE,CAAC,CAAA"}
package/dist/otel.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type * as otel from '@opentelemetry/api';
2
- export declare const TODO_REMOVE_trackLongRunningSpan: (span: otel.Span) => void;
3
2
  export declare const getDurationMsFromSpan: (span: otel.Span) => number;
4
3
  export declare const getStartTimeHighResFromSpan: (span: otel.Span) => DOMHighResTimeStamp;
5
4
  //# sourceMappingURL=otel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAG/C,eAAO,MAAM,gCAAgC,SAAU,KAAK,IAAI,KAAG,IAQlE,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAU,KAAK,IAAI,KAAG,MAGvD,CAAA;AAED,eAAO,MAAM,2BAA2B,SAAU,KAAK,IAAI,KAAG,mBACF,CAAA"}
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,qBAAqB,SAAU,KAAK,IAAI,KAAG,MAGvD,CAAA;AAED,eAAO,MAAM,2BAA2B,SAAU,KAAK,IAAI,KAAG,mBACF,CAAA"}
package/dist/otel.js CHANGED
@@ -1,14 +1,3 @@
1
- // TODO improve - see https://www.notion.so/schickling/Better-solution-for-globalThis-inProgressSpans-503cd7a5f4fc4fb8bdec2e60bde1be1f
2
- export const TODO_REMOVE_trackLongRunningSpan = (span) => {
3
- // @ts-expect-error TODO get rid of this coupling
4
- if (window.inProgressSpans !== undefined && window.inProgressSpans instanceof Set) {
5
- // @ts-expect-error TODO get rid of this coupling
6
- window.inProgressSpans.add(span);
7
- }
8
- else {
9
- // debugger
10
- }
11
- };
12
1
  export const getDurationMsFromSpan = (span) => {
13
2
  const durationHr = span._duration;
14
3
  return durationHr[0] * 1000 + durationHr[1] / 1000000;
package/dist/otel.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAEA,sIAAsI;AACtI,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,IAAe,EAAQ,EAAE;IACxE,iDAAiD;IACjD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,YAAY,GAAG,EAAE;QACjF,iDAAiD;QACjD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KACjC;SAAM;QACL,WAAW;KACZ;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAe,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAsC,IAAY,CAAC,SAAS,CAAA;IAC5E,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAS,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAe,EAAuB,EAAE,CACjF,IAAY,CAAC,qBAA4C,CAAA"}
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAe,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAsC,IAAY,CAAC,SAAS,CAAA;IAC5E,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAS,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAe,EAAuB,EAAE,CACjF,IAAY,CAAC,qBAA4C,CAAA"}
@@ -1,20 +1,21 @@
1
1
  import type * as otel from '@opentelemetry/api';
2
2
  import type { ReactElement, ReactNode } from 'react';
3
- import type { Backend, BackendOptions } from '../backends/index.js';
4
3
  import type { GlobalQueryDefs } from '../effect/LiveStore.js';
4
+ import type { InMemoryDatabase } from '../inMemoryDatabase.js';
5
5
  import type { Schema } from '../schema.js';
6
+ import type { StorageInit } from '../storage/index.js';
6
7
  import type { BaseGraphQLContext, GraphQLOptions } from '../store.js';
7
8
  interface LiveStoreProviderProps<GraphQLContext> {
8
9
  schema: Schema;
9
- backendOptions: BackendOptions;
10
- boot?: (backend: Backend, parentSpan: otel.Span) => Promise<void>;
10
+ loadStorage: () => StorageInit | Promise<StorageInit>;
11
+ boot?: (db: InMemoryDatabase, parentSpan: otel.Span) => unknown | Promise<unknown>;
11
12
  globalQueryDefs: GlobalQueryDefs;
12
13
  graphQLOptions?: GraphQLOptions<GraphQLContext>;
13
14
  otelTracer?: otel.Tracer;
14
15
  otelRootSpanContext?: otel.Context;
15
16
  fallback: ReactElement;
16
17
  }
17
- export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ fallback, globalQueryDefs, backendOptions, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, }: LiveStoreProviderProps<GraphQLContext> & {
18
+ export declare const LiveStoreProvider: <GraphQLContext extends BaseGraphQLContext>({ fallback, globalQueryDefs, loadStorage, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, }: LiveStoreProviderProps<GraphQLContext> & {
18
19
  children?: ReactNode;
19
20
  }) => JSX.Element;
20
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIrE,UAAU,sBAAsB,CAAC,cAAc;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,eAAe,EAAE,eAAe,CAAA;IAChC,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;CACvB;AAED,eAAO,MAAM,iBAAiB;eAU2B,SAAS;MAAK,WAgBtE,CAAA"}
1
+ {"version":3,"file":"LiveStoreProvider.d.ts","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIpD,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAIrE,UAAU,sBAAsB,CAAC,cAAc;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACrD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAClF,eAAe,EAAE,eAAe,CAAA;IAChC,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;CACvB;AAED,eAAO,MAAM,iBAAiB;eAU2B,SAAS;MAAK,WAkBtE,CAAA"}
@@ -2,11 +2,11 @@ import { mapValues } from 'lodash-es';
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, globalQueryDefs, backendOptions, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, }) => {
5
+ export const LiveStoreProvider = ({ fallback, globalQueryDefs, loadStorage, graphQLOptions, otelTracer, otelRootSpanContext, children, schema, boot, }) => {
6
6
  const store = useCreateStore({
7
7
  schema,
8
8
  globalQueryDefs,
9
- backendOptions,
9
+ loadStorage,
10
10
  graphQLOptions,
11
11
  otelTracer,
12
12
  otelRootSpanContext,
@@ -15,16 +15,17 @@ export const LiveStoreProvider = ({ fallback, globalQueryDefs, backendOptions, g
15
15
  if (store === undefined) {
16
16
  return fallback;
17
17
  }
18
+ window.__debugLiveStore = store.store;
18
19
  return React.createElement(LiveStoreContext.Provider, { value: store }, children);
19
20
  };
20
- const useCreateStore = ({ schema, globalQueryDefs, backendOptions, graphQLOptions, otelTracer, otelRootSpanContext, boot, }) => {
21
+ const useCreateStore = ({ schema, globalQueryDefs, loadStorage, graphQLOptions, otelTracer, otelRootSpanContext, boot, }) => {
21
22
  const [ctxValue, setCtxValue] = React.useState();
22
23
  React.useEffect(() => {
23
24
  void (async () => {
24
25
  try {
25
26
  const store = await createStore({
26
27
  schema,
27
- backendOptions,
28
+ loadStorage,
28
29
  graphQLOptions,
29
30
  otelTracer,
30
31
  otelRootSpanContext,
@@ -42,7 +43,7 @@ const useCreateStore = ({ schema, globalQueryDefs, backendOptions, graphQLOption
42
43
  }
43
44
  })();
44
45
  // TODO: do we need to return any cleanup function here?
45
- }, [schema, backendOptions, globalQueryDefs, graphQLOptions, otelTracer, otelRootSpanContext, boot]);
46
+ }, [schema, loadStorage, globalQueryDefs, graphQLOptions, otelTracer, otelRootSpanContext, boot]);
46
47
  return ctxValue;
47
48
  };
48
49
  //# sourceMappingURL=LiveStoreProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,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,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,GAC8D,EAAe,EAAE;IACnF,MAAM,KAAK,GAAG,cAAc,CAAC;QAC3B,MAAM;QACN,eAAe;QACf,cAAc;QACd,cAAc;QACd,UAAU;QACV,mBAAmB;QACnB,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA6B,CAAA;AACxF,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAA4C,EACjE,MAAM,EACN,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,IAAI,GACwC,EAAE,EAAE;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,EAA6B,CAAA;IAE3E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI;gBACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;oBAC9B,MAAM;oBACN,cAAc;oBACd,cAAc;oBACd,UAAU;oBACV,mBAAmB;oBACnB,IAAI;iBACL,CAAC,CAAA;gBACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC3G,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC/E,WAAW,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;oBACrC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACZ,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAA;gBACnD,MAAM,CAAC,CAAA;aACR;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,wDAAwD;IAC1D,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAA;IAEpG,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"LiveStoreProvider.js","sourceRoot":"","sources":["../../src/react/LiveStoreProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,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,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,GAC8D,EAAe,EAAE;IACnF,MAAM,KAAK,GAAG,cAAc,CAAC;QAC3B,MAAM;QACN,eAAe;QACf,WAAW;QACX,cAAc;QACd,UAAU;QACV,mBAAmB;QACnB,IAAI;KACL,CAAC,CAAA;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,QAAQ,CAAA;KAChB;IAED,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAA;IAErC,OAAO,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA6B,CAAA;AACxF,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAA4C,EACjE,MAAM,EACN,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,IAAI,GACwC,EAAE,EAAE;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,EAA6B,CAAA;IAE3E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI;gBACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;oBAC9B,MAAM;oBACN,WAAW;oBACX,cAAc;oBACd,UAAU;oBACV,mBAAmB;oBACnB,IAAI;iBACL,CAAC,CAAA;gBACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC3G,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC/E,WAAW,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;oBACrC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACZ,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAA;gBACnD,MAAM,CAAC,CAAA;aACR;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,wDAAwD;IAC1D,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAA;IAEjG,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -1,7 +1,8 @@
1
- export type { UseLiveStoreComponentProps as LiveStoreComponentConfig, ReactiveGraphQL, ReactiveSQL, Setters, } from './useLiveStoreComponent.js';
1
+ export type { UseLiveStoreComponentProps as LiveStoreComponentConfig, ReactiveGraphQL, ReactiveSQL, Setters, ComponentKeyConfig, QueryResults, QueryDefinitions, ComponentColumns, GetStateType, GetStateTypeEncoded, } from './useLiveStoreComponent.js';
2
2
  export { LiveStoreContext, useStore } from './LiveStoreContext.js';
3
3
  export { LiveStoreProvider } from './LiveStoreProvider.js';
4
4
  export { useLiveStoreComponent } from './useLiveStoreComponent.js';
5
5
  export { useGraphQL } from './useGraphQL.js';
6
6
  export { useGlobalQuery } from './useGlobalQuery.js';
7
+ export type { TypedDocumentNode } from '@graphql-typed-document-node/core';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,IAAI,wBAAwB,EACtD,eAAe,EACf,WAAW,EACX,OAAO,GACR,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,IAAI,wBAAwB,EACtD,eAAe,EACf,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalQuery.d.ts","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9D,eAAO,MAAM,cAAc,wDAiC1B,CAAA"}
1
+ {"version":3,"file":"useGlobalQuery.d.ts","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9D,eAAO,MAAM,cAAc,wDA+B1B,CAAA"}
@@ -1,13 +1,11 @@
1
1
  import { useEffect, useState } from 'react';
2
2
  import { labelForKey } from '../componentKey.js';
3
- import { TODO_REMOVE_trackLongRunningSpan } from '../otel.js';
4
3
  export const useGlobalQuery = (query) => {
5
4
  // We know the query has a result by the time we use it; so we can synchronously populate a default state
6
5
  const [value, setValue] = useState(query.results$.result);
7
6
  // Subscribe to future updates for this query
8
7
  useEffect(() => {
9
8
  return query.store.otel.tracer.startActiveSpan(`LiveStore:useGlobalQuery:${labelForKey(query.componentKey)}:${query.label}`, {}, query.store.otel.queriesSpanContext, (span) => {
10
- TODO_REMOVE_trackLongRunningSpan(span);
11
9
  const cancel = query.store.subscribe(query, (v) => {
12
10
  // NOTE: we return a reference to the result object within LiveStore;
13
11
  // this implies that app code must not mutate the results, or else
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalQuery.js","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAA;AAG7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAA2B,KAAQ,EAAkB,EAAE;IACnF,yGAAyG;IACzG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEzE,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5C,4BAA4B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,EAC5E,EAAE,EACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EACnC,CAAC,IAAI,EAAE,EAAE;YACP,gCAAgC,CAAC,IAAI,CAAC,CAAA;YAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAClC,KAAK,EACL,CAAC,CAAC,EAAE,EAAE;gBACJ,qEAAqE;gBACrE,kEAAkE;gBAClE,sCAAsC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,EACD,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACvB,CAAA;YACD,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,CAAA;gBACR,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"useGlobalQuery.js","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAA2B,KAAQ,EAAkB,EAAE;IACnF,yGAAyG;IACzG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEzE,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5C,4BAA4B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,EAC5E,EAAE,EACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EACnC,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAClC,KAAK,EACL,CAAC,CAAC,EAAE,EAAE;gBACJ,qEAAqE;gBACrE,kEAAkE;gBAClE,sCAAsC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,EACD,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACvB,CAAA;YACD,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,CAAA;gBACR,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
2
- import { type LiteralUnion } from '@livestore/utils';
2
+ import type { LiteralUnion, PrettifyFlat } from '@livestore/utils';
3
+ import { SqliteDsl } from 'effect-db-schema';
3
4
  import type { DependencyList } from 'react';
4
5
  import React from 'react';
5
6
  import type { ComponentKey } from '../componentKey.js';
@@ -7,15 +8,15 @@ import type { GetAtom } from '../reactive.js';
7
8
  import type { LiveStoreGraphQLQuery } from '../reactiveQueries/graphql.js';
8
9
  import type { LiveStoreJSQuery } from '../reactiveQueries/js.js';
9
10
  import type { LiveStoreSQLQuery } from '../reactiveQueries/sql.js';
10
- import type { ComponentStateSchema } from '../schema.js';
11
11
  import type { BaseGraphQLContext, LiveStoreQuery, QueryResult } from '../store.js';
12
+ import type { Bindable } from '../util.js';
12
13
  export interface QueryDefinitions {
13
14
  [queryName: string]: LiveStoreQuery;
14
15
  }
15
16
  export type QueryResults<TQuery> = {
16
- [queryName in keyof TQuery]: QueryResult<TQuery[queryName]>;
17
+ [queryName in keyof TQuery]: PrettifyFlat<QueryResult<TQuery[queryName]>>;
17
18
  };
18
- export type ReactiveSQL = <TResult>(genQuery: (get: GetAtom) => string, queriedTables: string[]) => LiveStoreSQLQuery<TResult>;
19
+ export type ReactiveSQL = <TResult>(genQuery: (get: GetAtom) => string, queriedTables: string[], bindValues?: Bindable | undefined) => LiveStoreSQLQuery<TResult>;
19
20
  export type ReactiveGraphQL = <TResult extends Record<string, any>, TVariables extends Record<string, any>, TContext extends BaseGraphQLContext>(query: DocumentNode<TResult, TVariables>, genVariableValues: (get: GetAtom) => TVariables, label?: string) => LiveStoreGraphQLQuery<TResult, TVariables, TContext>;
20
21
  type RegisterSubscription = <TQuery extends LiveStoreQuery>(query: TQuery, onNewValue: (value: QueryResult<TQuery>) => void, onUnsubscribe?: () => void) => void;
21
22
  type GenQueries<TQueries, TStateResult> = (args: {
@@ -23,13 +24,17 @@ type GenQueries<TQueries, TStateResult> = (args: {
23
24
  rxGraphQL: ReactiveGraphQL;
24
25
  globalQueries: QueryDefinitions;
25
26
  state$: LiveStoreJSQuery<TStateResult>;
26
- /** Registers a subscription */
27
+ /**
28
+ * Registers a subscription.
29
+ *
30
+ * Passed down for some manual subscribing. Use carefully.
31
+ */
27
32
  subscribe: RegisterSubscription;
28
33
  isTemporaryQuery: boolean;
29
34
  }) => TQueries;
30
- export type UseLiveStoreComponentProps<TQueries, TComponentState> = {
31
- stateSchema?: ComponentStateSchema<TComponentState>;
32
- queries?: GenQueries<TQueries, TComponentState>;
35
+ export type UseLiveStoreComponentProps<TQueries, TColumns extends ComponentColumns> = {
36
+ stateSchema?: SqliteDsl.TableDefinition<string, TColumns>;
37
+ queries?: GenQueries<TQueries, SqliteDsl.FromColumns.RowDecoded<TColumns>>;
33
38
  reactDeps?: React.DependencyList;
34
39
  componentKey: ComponentKeyConfig;
35
40
  };
@@ -42,23 +47,23 @@ export type ComponentKeyConfig = {
42
47
  name: string;
43
48
  id: LiteralUnion<'singleton' | '__ephemeral__', string>;
44
49
  };
45
- type ComponentState = {
46
- /** Equivalent to `componentKey.key` */
47
- id: string;
48
- [key: string]: string | number | boolean | null;
49
- };
50
+ export interface ComponentColumns extends SqliteDsl.Columns {
51
+ id: SqliteDsl.ColumnDefinition<SqliteDsl.FieldType.FieldTypeText<string, string>, false>;
52
+ }
50
53
  type UseLiveStoreJsonState<TState> = <TResult>(jsonStringKey: keyof TState, parse?: (_: unknown) => TResult) => [value: TResult, setValue: (newVal: TResult | ((prevVal: TResult) => TResult)) => void];
54
+ export type GetStateType<TTableDef extends SqliteDsl.TableDefinition<any, any>> = SqliteDsl.FromColumns.RowDecoded<TTableDef['columns']>;
55
+ export type GetStateTypeEncoded<TTableDef extends SqliteDsl.TableDefinition<any, any>> = SqliteDsl.FromColumns.RowEncoded<TTableDef['columns']>;
51
56
  /**
52
57
  * Create reactive queries within a component.
53
58
  * @param config.queries A function that returns a map of named reactive queries.
54
59
  * @param config.componentKey A function that returns a unique key for this component.
55
60
  * @param config.reactDeps A list of React-level dependencies that will refresh the queries.
56
61
  */
57
- export declare const useLiveStoreComponent: <TComponentState extends ComponentState, TQueries extends QueryDefinitions>({ stateSchema: stateSchema_, queries, componentKey: componentKeyConfig, reactDeps, }: UseLiveStoreComponentProps<TQueries, TComponentState>) => {
62
+ export declare const useLiveStoreComponent: <TColumns extends ComponentColumns, TQueries extends QueryDefinitions>({ stateSchema: stateSchema_, queries, componentKey: componentKeyConfig, reactDeps, }: UseLiveStoreComponentProps<TQueries, TColumns>) => {
58
63
  queryResults: QueryResults<TQueries>;
59
- state: TComponentState;
60
- setState: Setters<TComponentState>;
61
- useLiveStoreJsonState: UseLiveStoreJsonState<TComponentState>;
64
+ state: import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>;
65
+ setState: Setters<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
66
+ useLiveStoreJsonState: UseLiveStoreJsonState<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
62
67
  };
63
68
  export type Setters<TComponentState> = {
64
69
  [k in keyof TComponentState]: (newValue: TComponentState[k]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useLiveStoreComponent.d.ts","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLiveStoreComponent.d.ts","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { omit, shouldNeverHappen } from '@livestore/utils';
2
+ import { Schema } from '@livestore/utils/effect';
2
3
  import * as otel from '@opentelemetry/api';
4
+ import { SqliteDsl } from 'effect-db-schema';
3
5
  import { isEqual, mapValues } from 'lodash-es';
4
6
  import React from 'react';
5
7
  import { v4 as uuid } from 'uuid';
@@ -7,6 +9,11 @@ import { labelForKey, tableNameForComponentKey } from '../componentKey.js';
7
9
  import { sql } from '../util.js';
8
10
  import { useStore } from './LiveStoreContext.js';
9
11
  import { useStateRefWithReactiveInput } from './utils/useStateRefWithReactiveInput.js';
12
+ // type ComponentState = {
13
+ // /** Equivalent to `componentKey.key` */
14
+ // id: string
15
+ // [key: string]: string | number | boolean | null
16
+ // }
10
17
  /**
11
18
  * This is needed because the `React.useMemo` call below, can sometimes be called multiple times 🤷,
12
19
  * so we need to "cache" the fact that we've already started a span for this component.
@@ -20,6 +27,7 @@ const spanAlreadyStartedCache = new Map();
20
27
  * @param config.reactDeps A list of React-level dependencies that will refresh the queries.
21
28
  */
22
29
  export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = () => ({}), componentKey: componentKeyConfig, reactDeps = [], }) => {
30
+ // TODO validate schema to make sure each column has a default value
23
31
  // TODO we should clean up the state schema handling to remove this special handling for the `id` column
24
32
  const stateSchema = React.useMemo(() => (stateSchema_ ? { ...stateSchema_, columns: omit(stateSchema_.columns, 'id') } : undefined), [stateSchema_]);
25
33
  // performance.mark('useLiveStoreComponent:start')
@@ -41,7 +49,7 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
41
49
  span.end();
42
50
  }, [componentKeyLabel, span]);
43
51
  const generateQueries = React.useCallback(({ state$, otelContext, registerSubscription, isTemporaryQuery, }) => queries({
44
- rxSQL: (genQuery, queriedTables) => store.querySQL(genQuery, { queriedTables, otelContext }),
52
+ rxSQL: (genQuery, queriedTables, bindValues) => store.querySQL(genQuery, { queriedTables, bindValues, otelContext, componentKey }),
45
53
  rxGraphQL: (query, genVariableValues, label) => store.queryGraphQL(query, genVariableValues, { componentKey, label, otelContext }),
46
54
  globalQueries,
47
55
  state$,
@@ -57,9 +65,11 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
57
65
  [store, componentKey, globalQueries]);
58
66
  const defaultComponentState = React.useMemo(() => {
59
67
  const defaultState = (stateSchema === undefined ? {} : mapValues(stateSchema.columns, (c) => c.default));
68
+ // @ts-expect-error TODO fix typing
60
69
  defaultState.id = componentKeyConfig.id;
61
70
  return defaultState;
62
71
  }, [componentKeyConfig.id, stateSchema]);
72
+ const componentStateEffectSchema = React.useMemo(() => (stateSchema ? SqliteDsl.structSchemaForTable(stateSchema) : Schema.any), [stateSchema]);
63
73
  // Step 1:
64
74
  // Synchronously create state and queries for initial render pass.
65
75
  // We do this in a temporary query context which cleans up after itself, making it idempotent
@@ -70,10 +80,10 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
70
80
  return store.inTempQueryContext(() => {
71
81
  try {
72
82
  // create state query
73
- let stateQuery;
83
+ let state$;
74
84
  if (stateSchema === undefined) {
75
85
  // TODO don't set up a query if there's no state schema (keeps the graph more clean)
76
- stateQuery = store.queryJS(() => ({}), {
86
+ state$ = store.queryJS(() => ({}), {
77
87
  componentKey,
78
88
  otelContext,
79
89
  });
@@ -81,18 +91,21 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
81
91
  else {
82
92
  const componentTableName = tableNameForComponentKey(componentKey);
83
93
  const whereClause = componentKey._tag === 'singleton' ? '' : `where id = '${componentKey.id}'`;
84
- stateQuery = store
94
+ state$ = store
85
95
  .querySQL(() => sql `select * from ${componentTableName} ${whereClause} limit 1`, {
86
96
  queriedTables: [componentTableName],
87
97
  componentKey,
88
98
  label: `localState:query:${componentKeyLabel}`,
89
99
  otelContext,
90
100
  })
91
- .getFirstRow({ defaultValue: defaultComponentState });
101
+ // TODO consider to instead of just returning the default value, to write the default component state to the DB
102
+ .pipe((results) => results.length === 1
103
+ ? Schema.parseSync(componentStateEffectSchema)(results[0])
104
+ : defaultComponentState);
92
105
  }
93
- const initialComponentState = stateQuery.results$.result;
106
+ const initialComponentState = state$.results$.result;
94
107
  const queries = generateQueries({
95
- state$: stateQuery,
108
+ state$: state$,
96
109
  otelContext,
97
110
  registerSubscription: () => { },
98
111
  isTemporaryQuery: true,
@@ -108,7 +121,16 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
108
121
  }
109
122
  });
110
123
  });
111
- }, [store, otelContext, stateSchema, generateQueries, componentKey, componentKeyLabel, defaultComponentState]);
124
+ }, [
125
+ store,
126
+ otelContext,
127
+ stateSchema,
128
+ generateQueries,
129
+ componentKey,
130
+ componentKeyLabel,
131
+ componentStateEffectSchema,
132
+ defaultComponentState,
133
+ ]);
112
134
  // Now that we've computed the initial state synchronously,
113
135
  // we can set up our useState calls w/ a default value populated...
114
136
  const [componentStateRef, setComponentState_] = useStateRefWithReactiveInput(initialComponentState);
@@ -116,22 +138,25 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
116
138
  const setState = (stateSchema === undefined
117
139
  ? {}
118
140
  : // TODO: do we have a better type for the values that can go in SQLite?
119
- mapValues(stateSchema.columns, (_, columnName) => (value) => {
141
+ mapValues(stateSchema.columns, (column, columnName) => (value) => {
120
142
  // Don't update the state if it's the same as the value already seen in the component
143
+ // @ts-expect-error TODO fix typing
121
144
  if (componentStateRef.current[columnName] === value)
122
145
  return;
146
+ const encodedValue = Schema.encodeSync(column.type.codec)(value);
123
147
  if (['componentKey', 'columnNames'].includes(columnName)) {
124
148
  shouldNeverHappen(`Can't use reserved column name ${columnName}`);
125
149
  }
126
150
  return store.applyEvent('updateComponentState', {
127
151
  componentKey,
128
152
  columnNames: [columnName],
129
- [columnName]: value,
153
+ [columnName]: encodedValue,
130
154
  });
131
155
  }));
132
156
  setState.setMany = (columnValues) => {
133
157
  // TODO use hashing instead
134
158
  // Don't update the state if it's the same as the value already seen in the component
159
+ // @ts-expect-error TODO fix typing
135
160
  if (Object.entries(columnValues).every(([columnName, value]) => componentStateRef.current[columnName] === value)) {
136
161
  return;
137
162
  }
@@ -147,7 +172,12 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
147
172
  // create state query
148
173
  let state$;
149
174
  if (stateSchema === undefined) {
150
- state$ = store.queryJS(() => ({}), { componentKey, otelContext });
175
+ // TODO remove this query
176
+ state$ = store.queryJS(() => ({}), {
177
+ componentKey,
178
+ otelContext,
179
+ label: 'empty-component-state',
180
+ });
151
181
  }
152
182
  else {
153
183
  const componentTableName = tableNameForComponentKey(componentKey);
@@ -160,7 +190,8 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
160
190
  label: `localState:query:${componentKeyLabel}`,
161
191
  otelContext,
162
192
  })
163
- .getFirstRow({ defaultValue: defaultComponentState });
193
+ // TODO consider to instead of just returning the default value, to write the default component state to the DB
194
+ .pipe((results) => results.length === 1 ? Schema.parseSync(componentStateEffectSchema)(results[0]) : defaultComponentState);
164
195
  }
165
196
  unsubs.push(store.subscribe(state$, (results) => {
166
197
  if (isEqual(results, componentStateRef.current) === false) {
@@ -173,11 +204,9 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
173
204
  }, onUnsubscribe, { label: `useLiveStoreComponent:query:manual-subscribe:${query.label}` }));
174
205
  };
175
206
  const queries = generateQueries({ state$, otelContext, registerSubscription, isTemporaryQuery: false });
176
- // Use the name given to this query in the useQueries hook as its label
177
- for (const [name, query] of Object.entries(queries)) {
178
- query.label = name;
179
- }
180
207
  for (const [key, query] of Object.entries(queries)) {
208
+ // Use the field name given to this query in the useQueries hook as its label
209
+ query.label = key;
181
210
  unsubs.push(store.subscribe(query, (results) => {
182
211
  const newQueryResults = { ...queryResultsRef.current, [key]: results };
183
212
  if (isEqual(newQueryResults, queryResultsRef.current) === false) {
@@ -257,8 +286,8 @@ const insertRowForComponentInstance = ({ store, componentKey, stateSchema, }) =>
257
286
  const tableName = tableNameForComponentKey(componentKey);
258
287
  const insertQuery = sql `insert into ${tableName} (${columnNames.join(', ')}) select ${columnValues} where not exists(select 1 from ${tableName} where id = '${componentKey.id}')`;
259
288
  void store.execute(insertQuery, {
260
- id: componentKey.id,
261
289
  ...mapValues(stateSchema.columns, (column) => prepareValueForSql(column.default ?? null)),
290
+ id: componentKey.id,
262
291
  }, [tableName]);
263
292
  };
264
293
  const prepareValueForSql = (value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useLiveStoreComponent.js","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLiveStoreComponent.js","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}