@livestore/livestore 0.0.9 → 0.0.12

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 (152) hide show
  1. package/package.json +7 -7
  2. package/src/__tests__/react/fixture.tsx +1 -13
  3. package/src/__tests__/reactive.test.ts +39 -0
  4. package/src/inMemoryDatabase.ts +5 -5
  5. package/src/react/useGraphQL.ts +6 -7
  6. package/src/react/useLiveStoreComponent.ts +38 -48
  7. package/src/reactive.ts +12 -11
  8. package/src/reactiveQueries/graphql.ts +5 -3
  9. package/src/reactiveQueries/js.ts +1 -3
  10. package/src/reactiveQueries/sql.ts +6 -6
  11. package/src/store.ts +45 -31
  12. package/dist/.tsbuildinfo +0 -1
  13. package/dist/QueryCache.d.ts +0 -20
  14. package/dist/QueryCache.d.ts.map +0 -1
  15. package/dist/QueryCache.js +0 -71
  16. package/dist/QueryCache.js.map +0 -1
  17. package/dist/__tests__/react/fixture.d.ts +0 -141
  18. package/dist/__tests__/react/fixture.d.ts.map +0 -1
  19. package/dist/__tests__/react/fixture.js +0 -72
  20. package/dist/__tests__/react/fixture.js.map +0 -1
  21. package/dist/__tests__/react/useLiveStoreComponent.test.d.ts +0 -2
  22. package/dist/__tests__/react/useLiveStoreComponent.test.d.ts.map +0 -1
  23. package/dist/__tests__/react/useLiveStoreComponent.test.js +0 -78
  24. package/dist/__tests__/react/useLiveStoreComponent.test.js.map +0 -1
  25. package/dist/__tests__/reactive.test.d.ts +0 -2
  26. package/dist/__tests__/reactive.test.d.ts.map +0 -1
  27. package/dist/__tests__/reactive.test.js +0 -167
  28. package/dist/__tests__/reactive.test.js.map +0 -1
  29. package/dist/backends/base.d.ts +0 -13
  30. package/dist/backends/base.d.ts.map +0 -1
  31. package/dist/backends/base.js +0 -53
  32. package/dist/backends/base.js.map +0 -1
  33. package/dist/backends/index.d.ts +0 -45
  34. package/dist/backends/index.d.ts.map +0 -1
  35. package/dist/backends/index.js +0 -38
  36. package/dist/backends/index.js.map +0 -1
  37. package/dist/backends/noop.d.ts +0 -18
  38. package/dist/backends/noop.d.ts.map +0 -1
  39. package/dist/backends/noop.js +0 -21
  40. package/dist/backends/noop.js.map +0 -1
  41. package/dist/backends/tauri.d.ts +0 -22
  42. package/dist/backends/tauri.d.ts.map +0 -1
  43. package/dist/backends/tauri.js +0 -48
  44. package/dist/backends/tauri.js.map +0 -1
  45. package/dist/backends/utils/idb.d.ts +0 -10
  46. package/dist/backends/utils/idb.d.ts.map +0 -1
  47. package/dist/backends/utils/idb.js +0 -58
  48. package/dist/backends/utils/idb.js.map +0 -1
  49. package/dist/backends/web-in-memory.d.ts +0 -22
  50. package/dist/backends/web-in-memory.d.ts.map +0 -1
  51. package/dist/backends/web-in-memory.js +0 -45
  52. package/dist/backends/web-in-memory.js.map +0 -1
  53. package/dist/backends/web-worker.d.ts +0 -17
  54. package/dist/backends/web-worker.d.ts.map +0 -1
  55. package/dist/backends/web-worker.js +0 -139
  56. package/dist/backends/web-worker.js.map +0 -1
  57. package/dist/backends/web.d.ts +0 -27
  58. package/dist/backends/web.d.ts.map +0 -1
  59. package/dist/backends/web.js +0 -63
  60. package/dist/backends/web.js.map +0 -1
  61. package/dist/bounded-collections.d.ts +0 -34
  62. package/dist/bounded-collections.d.ts.map +0 -1
  63. package/dist/bounded-collections.js +0 -103
  64. package/dist/bounded-collections.js.map +0 -1
  65. package/dist/componentKey.d.ts +0 -20
  66. package/dist/componentKey.d.ts.map +0 -1
  67. package/dist/componentKey.js +0 -3
  68. package/dist/componentKey.js.map +0 -1
  69. package/dist/effect/LiveStore.d.ts +0 -42
  70. package/dist/effect/LiveStore.d.ts.map +0 -1
  71. package/dist/effect/LiveStore.js +0 -40
  72. package/dist/effect/LiveStore.js.map +0 -1
  73. package/dist/effect/index.d.ts +0 -2
  74. package/dist/effect/index.d.ts.map +0 -1
  75. package/dist/effect/index.js +0 -2
  76. package/dist/effect/index.js.map +0 -1
  77. package/dist/events.d.ts +0 -7
  78. package/dist/events.d.ts.map +0 -1
  79. package/dist/events.js +0 -2
  80. package/dist/events.js.map +0 -1
  81. package/dist/inMemoryDatabase.d.ts +0 -65
  82. package/dist/inMemoryDatabase.d.ts.map +0 -1
  83. package/dist/inMemoryDatabase.js +0 -241
  84. package/dist/inMemoryDatabase.js.map +0 -1
  85. package/dist/index.d.ts +0 -20
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js +0 -10
  88. package/dist/index.js.map +0 -1
  89. package/dist/otel.d.ts +0 -5
  90. package/dist/otel.d.ts.map +0 -1
  91. package/dist/otel.js +0 -17
  92. package/dist/otel.js.map +0 -1
  93. package/dist/react/LiveStoreContext.d.ts +0 -11
  94. package/dist/react/LiveStoreContext.d.ts.map +0 -1
  95. package/dist/react/LiveStoreContext.js +0 -10
  96. package/dist/react/LiveStoreContext.js.map +0 -1
  97. package/dist/react/LiveStoreProvider.d.ts +0 -21
  98. package/dist/react/LiveStoreProvider.d.ts.map +0 -1
  99. package/dist/react/LiveStoreProvider.js +0 -48
  100. package/dist/react/LiveStoreProvider.js.map +0 -1
  101. package/dist/react/index.d.ts +0 -7
  102. package/dist/react/index.d.ts.map +0 -1
  103. package/dist/react/index.js +0 -6
  104. package/dist/react/index.js.map +0 -1
  105. package/dist/react/useGlobalQuery.d.ts +0 -3
  106. package/dist/react/useGlobalQuery.d.ts.map +0 -1
  107. package/dist/react/useGlobalQuery.js +0 -25
  108. package/dist/react/useGlobalQuery.js.map +0 -1
  109. package/dist/react/useGraphQL.d.ts +0 -11
  110. package/dist/react/useGraphQL.d.ts.map +0 -1
  111. package/dist/react/useGraphQL.js +0 -68
  112. package/dist/react/useGraphQL.js.map +0 -1
  113. package/dist/react/useLiveStoreComponent.d.ts +0 -70
  114. package/dist/react/useLiveStoreComponent.d.ts.map +0 -1
  115. package/dist/react/useLiveStoreComponent.js +0 -261
  116. package/dist/react/useLiveStoreComponent.js.map +0 -1
  117. package/dist/react/utils/useStateRefWithReactiveInput.d.ts +0 -13
  118. package/dist/react/utils/useStateRefWithReactiveInput.d.ts.map +0 -1
  119. package/dist/react/utils/useStateRefWithReactiveInput.js +0 -38
  120. package/dist/react/utils/useStateRefWithReactiveInput.js.map +0 -1
  121. package/dist/reactive.d.ts +0 -140
  122. package/dist/reactive.d.ts.map +0 -1
  123. package/dist/reactive.js +0 -301
  124. package/dist/reactive.js.map +0 -1
  125. package/dist/reactiveQueries/base-class.d.ts +0 -24
  126. package/dist/reactiveQueries/base-class.d.ts.map +0 -1
  127. package/dist/reactiveQueries/base-class.js +0 -22
  128. package/dist/reactiveQueries/base-class.js.map +0 -1
  129. package/dist/reactiveQueries/graphql.d.ts +0 -25
  130. package/dist/reactiveQueries/graphql.d.ts.map +0 -1
  131. package/dist/reactiveQueries/graphql.js +0 -14
  132. package/dist/reactiveQueries/graphql.js.map +0 -1
  133. package/dist/reactiveQueries/js.d.ts +0 -19
  134. package/dist/reactiveQueries/js.d.ts.map +0 -1
  135. package/dist/reactiveQueries/js.js +0 -13
  136. package/dist/reactiveQueries/js.js.map +0 -1
  137. package/dist/reactiveQueries/sql.d.ts +0 -31
  138. package/dist/reactiveQueries/sql.d.ts.map +0 -1
  139. package/dist/reactiveQueries/sql.js +0 -28
  140. package/dist/reactiveQueries/sql.js.map +0 -1
  141. package/dist/schema.d.ts +0 -163
  142. package/dist/schema.d.ts.map +0 -1
  143. package/dist/schema.js +0 -92
  144. package/dist/schema.js.map +0 -1
  145. package/dist/store.d.ts +0 -175
  146. package/dist/store.d.ts.map +0 -1
  147. package/dist/store.js +0 -549
  148. package/dist/store.js.map +0 -1
  149. package/dist/util.d.ts +0 -24
  150. package/dist/util.d.ts.map +0 -1
  151. package/dist/util.js +0 -51
  152. package/dist/util.js.map +0 -1
@@ -1,20 +0,0 @@
1
- import type { Bindable } from './util.js';
2
- type Opaque<BaseType, BrandType = unknown> = BaseType & {
3
- readonly [Symbols.base]: BaseType;
4
- readonly [Symbols.brand]: BrandType;
5
- };
6
- declare namespace Symbols {
7
- const base: unique symbol;
8
- const brand: unique symbol;
9
- }
10
- export type CacheKey = Opaque<string, string>;
11
- export default class QueryCache {
12
- #private;
13
- getKey: (sql: string, bindValues?: Bindable) => CacheKey;
14
- get: (key: CacheKey) => any;
15
- set: (queriedTables: string[], key: CacheKey, results: any) => void;
16
- ignoreQuery: (query: string) => boolean;
17
- invalidate: (queriedTables: string[]) => void;
18
- }
19
- export {};
20
- //# sourceMappingURL=QueryCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryCache.d.ts","sourceRoot":"","sources":["../src/QueryCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,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,MAAM,EAAE,OAAO,QAAQ,WAAW,GAAG,UAW1D;IAMD,WAAW,UAAW,MAAM,aAE3B;IAUD,UAAU,kBAAmB,MAAM,EAAE,UAUpC;CACF"}
@@ -1,71 +0,0 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _QueryCache_entries, _QueryCache_dependencies, _QueryCache_dependencyTrackerEvicted;
7
- import BoundMap, { BoundSet } from './bounded-collections.js';
8
- var Symbols;
9
- (function (Symbols) {
10
- })(Symbols || (Symbols = {}));
11
- const ignore = ['begin', 'rollback', 'commit', 'savepoint', 'release'];
12
- // TODO: profile to see how big we need this cache to be.
13
- const cacheSize = 200;
14
- class QueryCache {
15
- constructor() {
16
- _QueryCache_entries.set(this, new BoundMap(cacheSize));
17
- _QueryCache_dependencies.set(this, new Map());
18
- this.getKey = (sql, bindValues) => {
19
- if (bindValues == null) {
20
- return sql;
21
- }
22
- if (Array.isArray(bindValues)) {
23
- return (sql + '\n' + bindValues.join('\n'));
24
- }
25
- return (sql + '\n' + Object.values(bindValues).join('\n'));
26
- };
27
- this.get = (key) => {
28
- return __classPrivateFieldGet(this, _QueryCache_entries, "f").get(key);
29
- };
30
- this.set = (queriedTables, key, results) => {
31
- __classPrivateFieldGet(this, _QueryCache_entries, "f").set(key, results);
32
- for (const table of queriedTables) {
33
- let keys = __classPrivateFieldGet(this, _QueryCache_dependencies, "f").get(table);
34
- if (keys == null) {
35
- keys = new BoundSet(cacheSize);
36
- keys.onEvict = __classPrivateFieldGet(this, _QueryCache_dependencyTrackerEvicted, "f");
37
- __classPrivateFieldGet(this, _QueryCache_dependencies, "f").set(table, keys);
38
- }
39
- keys.add(key);
40
- }
41
- };
42
- _QueryCache_dependencyTrackerEvicted.set(this, (key) => {
43
- __classPrivateFieldGet(this, _QueryCache_entries, "f").delete(key);
44
- });
45
- this.ignoreQuery = (query) => {
46
- return ignore.some((prefix) => query.startsWith(prefix));
47
- };
48
- // The next simplest step is to create a specific implementation for invalidating
49
- // the expensive track list queries only when constraints data in a write overlaps with read constraints.
50
- //
51
- // As well as either:
52
- // a. removeing the big view (since we'll have our cache)
53
- // b. incrementally updating the view on insert by the EventImporter
54
- //
55
- // We'll not try to tackle any generalized approach until we have a proof of concept working.
56
- this.invalidate = (queriedTables) => {
57
- for (const table of queriedTables) {
58
- const keys = __classPrivateFieldGet(this, _QueryCache_dependencies, "f").get(table);
59
- if (keys == null) {
60
- continue;
61
- }
62
- for (const k of keys) {
63
- __classPrivateFieldGet(this, _QueryCache_entries, "f").delete(k);
64
- }
65
- }
66
- };
67
- }
68
- }
69
- _QueryCache_entries = new WeakMap(), _QueryCache_dependencies = new WeakMap(), _QueryCache_dependencyTrackerEvicted = new WeakMap();
70
- export default QueryCache;
71
- //# sourceMappingURL=QueryCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryCache.js","sourceRoot":"","sources":["../src/QueryCache.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAQ7D,IAAU,OAAO,CAGhB;AAHD,WAAU,OAAO;AAGjB,CAAC,EAHS,OAAO,KAAP,OAAO,QAGhB;AAKD,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAEtE,yDAAyD;AACzD,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAqB,UAAU;IAA/B;QACE,8BAAW,IAAI,QAAQ,CAAgB,SAAS,CAAC,EAAA;QACjD,mCAAgB,IAAI,GAAG,EAAiC,EAAA;QAExD,WAAM,GAAG,CAAC,GAAW,EAAE,UAAqB,EAAY,EAAE;YACxD,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,OAAO,GAAe,CAAA;aACvB;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC7B,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAa,CAAA;aACxD;YAED,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAa,CAAA;QACxE,CAAC,CAAA;QAED,QAAG,GAAG,CAAC,GAAa,EAAE,EAAE;YACtB,OAAO,uBAAA,IAAI,2BAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC,CAAA;QAED,QAAG,GAAG,CAAC,aAAuB,EAAE,GAAa,EAAE,OAAY,EAAE,EAAE;YAC7D,uBAAA,IAAI,2BAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/B,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;gBACjC,IAAI,IAAI,GAAG,uBAAA,IAAI,gCAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBACxC,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,IAAI,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAA;oBAC9B,IAAI,CAAC,OAAO,GAAG,uBAAA,IAAI,4CAA0B,CAAA;oBAC7C,uBAAA,IAAI,gCAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;iBACpC;gBACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;aACd;QACH,CAAC,CAAA;QAED,+CAA4B,CAAC,GAAa,EAAE,EAAE;YAC5C,uBAAA,IAAI,2BAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC,EAAA;QAED,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1D,CAAC,CAAA;QAED,iFAAiF;QACjF,yGAAyG;QACzG,EAAE;QACF,qBAAqB;QACrB,yDAAyD;QACzD,oEAAoE;QACpE,EAAE;QACF,6FAA6F;QAC7F,eAAU,GAAG,CAAC,aAAuB,EAAE,EAAE;YACvC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;gBACjC,MAAM,IAAI,GAAG,uBAAA,IAAI,gCAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC1C,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,SAAQ;iBACT;gBACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,uBAAA,IAAI,2BAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;iBACxB;aACF;QACH,CAAC,CAAA;IACH,CAAC;CAAA;;eA5DoB,UAAU"}
@@ -1,141 +0,0 @@
1
- import React from 'react';
2
- import * as LiveStore from '../../index.js';
3
- export type Todo = {
4
- id: string;
5
- text: string | null;
6
- completed: boolean;
7
- };
8
- export type Filter = 'all' | 'active' | 'completed';
9
- export type AppState = {
10
- newTodoText: string;
11
- filter: Filter;
12
- };
13
- export declare const globalQueryDefs: {
14
- appState: LiveStore.QueryDefinition;
15
- };
16
- export declare const schema: {
17
- tables: {
18
- todos: {
19
- columns: {
20
- id: {
21
- type: "text";
22
- primaryKey: true;
23
- };
24
- text: {
25
- type: "text";
26
- default: string;
27
- nullable: false;
28
- };
29
- completed: {
30
- type: "boolean";
31
- default: false;
32
- nullable: false;
33
- };
34
- };
35
- };
36
- app: {
37
- columns: {
38
- id: {
39
- type: "text";
40
- primaryKey: true;
41
- };
42
- newTodoText: {
43
- type: "text";
44
- default: string;
45
- nullable: true;
46
- };
47
- filter: {
48
- type: "text";
49
- default: string;
50
- nullable: false;
51
- };
52
- };
53
- };
54
- };
55
- materializedViews: {};
56
- actions: {
57
- addTodo: {
58
- statement: {
59
- sql: string;
60
- writeTables: string[];
61
- };
62
- };
63
- completeTodo: {
64
- statement: {
65
- sql: string;
66
- writeTables: string[];
67
- };
68
- };
69
- uncompleteTodo: {
70
- statement: {
71
- sql: string;
72
- writeTables: string[];
73
- };
74
- };
75
- deleteTodo: {
76
- statement: {
77
- sql: string;
78
- writeTables: string[];
79
- };
80
- };
81
- clearCompleted: {
82
- statement: {
83
- sql: string;
84
- writeTables: string[];
85
- };
86
- };
87
- updateNewTodoText: {
88
- statement: {
89
- sql: string;
90
- writeTables: string[];
91
- };
92
- };
93
- setFilter: {
94
- statement: {
95
- sql: string;
96
- writeTables: string[];
97
- };
98
- };
99
- };
100
- } & {
101
- tables: {
102
- __events: {
103
- readonly columns: {
104
- readonly id: {
105
- readonly type: "text";
106
- readonly primaryKey: true;
107
- };
108
- readonly type: {
109
- readonly type: "text";
110
- readonly nullable: false;
111
- };
112
- readonly args: {
113
- readonly type: "text";
114
- readonly nullable: false;
115
- };
116
- };
117
- };
118
- livestore__event_cursor: {
119
- readonly columns: {
120
- readonly id: {
121
- readonly type: "text";
122
- readonly primaryKey: true;
123
- };
124
- readonly cursor: {
125
- readonly type: "text";
126
- readonly nullable: false;
127
- };
128
- };
129
- };
130
- };
131
- };
132
- export declare const makeTodoMvc: () => Promise<{
133
- wrapper: ({ children }: any) => React.JSX.Element;
134
- AppSchema: import("../../schema.js").ComponentStateSchema<{
135
- username: string;
136
- } & {
137
- id: string;
138
- }>;
139
- store: LiveStore.Store<LiveStore.BaseGraphQLContext>;
140
- }>;
141
- //# sourceMappingURL=fixture.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAM3C,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,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;AAcD,eAAO,MAAM,eAAe;;CAE3B,CAAA;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCjB,CAAA;AAEF,eAAO,MAAM,WAAW;4BAwBS,GAAG;;kBAvBQ,MAAM;;;;;EA4BjD,CAAA"}
@@ -1,72 +0,0 @@
1
- import { mapObjectValues } from '@livestore/utils';
2
- import * as otel from '@opentelemetry/api';
3
- import React from 'react';
4
- import * as LiveStore from '../../index.js';
5
- import { sql } from '../../index.js';
6
- import * as LiveStoreReact from '../../react/index.js';
7
- const mockOtelCtx = otel.context.active();
8
- const appState = (store) => store
9
- .querySQL(() => `select newTodoText, filter from app;`, ['app'], undefined, undefined, undefined, mockOtelCtx)
10
- .getFirstRow();
11
- export const globalQueryDefs = {
12
- appState,
13
- };
14
- export const schema = LiveStore.defineSchema({
15
- tables: {
16
- todos: {
17
- columns: {
18
- id: { type: 'text', primaryKey: true },
19
- text: { type: 'text', default: '', nullable: false },
20
- completed: { type: 'boolean', default: false, nullable: false },
21
- },
22
- },
23
- app: {
24
- columns: {
25
- id: { type: 'text', primaryKey: true },
26
- newTodoText: { type: 'text', default: '', nullable: true },
27
- filter: { type: 'text', default: 'all', nullable: false },
28
- },
29
- },
30
- },
31
- materializedViews: {},
32
- actions: {
33
- // TODO: fix these actions to make them have write annotatinos
34
- addTodo: {
35
- statement: {
36
- sql: sql `INSERT INTO todos (id, text, completed) VALUES ($id, $text, false);`,
37
- writeTables: ['app'],
38
- },
39
- },
40
- completeTodo: { statement: { sql: sql `UPDATE todos SET completed = true WHERE id = $id;`, writeTables: ['app'] } },
41
- uncompleteTodo: {
42
- statement: { sql: sql `UPDATE todos SET completed = false WHERE id = $id;`, writeTables: ['app'] },
43
- },
44
- deleteTodo: { statement: { sql: sql `DELETE FROM todos WHERE id = $id;`, writeTables: ['app'] } },
45
- clearCompleted: { statement: { sql: sql `DELETE FROM todos WHERE completed = true;`, writeTables: ['app'] } },
46
- updateNewTodoText: { statement: { sql: sql `UPDATE app SET newTodoText = $text;`, writeTables: ['app'] } },
47
- setFilter: { statement: { sql: sql `UPDATE app SET filter = $filter;`, writeTables: ['app'] } },
48
- },
49
- });
50
- export const makeTodoMvc = async () => {
51
- const AppSchema = LiveStore.defineComponentStateSchema({
52
- componentType: 'UserInfo',
53
- columns: {
54
- username: { type: 'text', default: '' },
55
- },
56
- });
57
- const store = await LiveStore.createStore({
58
- schema,
59
- backendOptions: { type: 'web-in-memory' },
60
- boot: async (backend) => {
61
- backend.execute(sql `INSERT INTO app (newTodoText, filter) VALUES ('', 'all');`);
62
- // NOTE we can't insert into components__UserInfo yet because the table doesn't exist yet
63
- // backend.execute(sql`INSERT INTO components__UserInfo (id, username) VALUES ('u1', 'username_u1');`)
64
- // backend.execute(sql`INSERT INTO components__UserInfo (id, username) VALUES ('u2', 'username_u2');`)
65
- },
66
- });
67
- const globalQueries = mapObjectValues(globalQueryDefs, (_, queryDef) => queryDef(store));
68
- const storeContext = { store, globalQueries };
69
- const wrapper = ({ children }) => (React.createElement(LiveStoreReact.LiveStoreContext.Provider, { value: storeContext }, children));
70
- return { wrapper, AppSchema, store };
71
- };
72
- //# sourceMappingURL=fixture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/__tests__/react/fixture.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useLiveStoreComponent.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLiveStoreComponent.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/react/useLiveStoreComponent.test.tsx"],"names":[],"mappings":""}
@@ -1,78 +0,0 @@
1
- import { act, renderHook } from '@testing-library/react';
2
- import { describe, expect, it } from 'vitest';
3
- import { sql } from '../../index.js';
4
- import * as LiveStoreReact from '../../react/index.js';
5
- import { makeTodoMvc } from './fixture.js';
6
- describe('useLiveStoreComponent', () => {
7
- it('should update the data based on component key', async () => {
8
- let renderCount = 0;
9
- const { wrapper, AppSchema, store } = await makeTodoMvc();
10
- const { result, rerender } = renderHook((userId) => {
11
- renderCount++;
12
- return LiveStoreReact.useLiveStoreComponent({
13
- stateSchema: AppSchema,
14
- componentKey: { name: 'UserInfo', id: userId },
15
- queries: () => ({}),
16
- });
17
- }, { wrapper, initialProps: 'u1' });
18
- expect(result.current.state.id).toBe('u1');
19
- expect(result.current.state.username).toBe('');
20
- expect(renderCount).toBe(1);
21
- act(() => {
22
- void store.execute(sql `INSERT INTO components__UserInfo (id, username) VALUES ('u2', 'username_u2');`);
23
- });
24
- rerender('u2');
25
- expect(result.current.state.id).toBe('u2');
26
- expect(result.current.state.username).toBe('username_u2');
27
- expect(renderCount).toBe(2);
28
- });
29
- it('should update the data reactively - via setState', async () => {
30
- let renderCount = 0;
31
- const { wrapper, AppSchema } = await makeTodoMvc();
32
- const { result } = renderHook((userId) => {
33
- renderCount++;
34
- return LiveStoreReact.useLiveStoreComponent({
35
- stateSchema: AppSchema,
36
- componentKey: { name: 'UserInfo', id: userId },
37
- queries: () => ({}),
38
- });
39
- }, { wrapper, initialProps: 'u1' });
40
- expect(result.current.state.id).toBe('u1');
41
- expect(result.current.state.username).toBe('');
42
- expect(renderCount).toBe(1);
43
- act(() => {
44
- result.current.setState.username('username_u1_hello');
45
- });
46
- // act(() => {
47
- // store.execute(sql`UPDATE components__UserInfo SET username = 'username_u1_hello' WHERE id = 'u1';`)
48
- // })
49
- expect(result.current.state.id).toBe('u1');
50
- expect(result.current.state.username).toBe('username_u1_hello');
51
- expect(renderCount).toBe(2);
52
- });
53
- it('should update the data reactively - via raw store update', async () => {
54
- let renderCount = 0;
55
- const { wrapper, AppSchema, store } = await makeTodoMvc();
56
- const { result } = renderHook((userId) => {
57
- renderCount++;
58
- return LiveStoreReact.useLiveStoreComponent({
59
- stateSchema: AppSchema,
60
- componentKey: { name: 'UserInfo', id: userId },
61
- queries: () => ({}),
62
- });
63
- }, { wrapper, initialProps: 'u1' });
64
- expect(result.current.state.id).toBe('u1');
65
- expect(result.current.state.username).toBe('');
66
- expect(renderCount).toBe(1);
67
- act(() => {
68
- result.current.setState.username('username_u1_hello');
69
- });
70
- act(() => {
71
- void store.execute(sql `UPDATE components__UserInfo SET username = 'username_u1_hello' WHERE id = 'u1';`);
72
- });
73
- expect(result.current.state.id).toBe('u1');
74
- expect(result.current.state.username).toBe('username_u1_hello');
75
- expect(renderCount).toBe(2);
76
- });
77
- });
78
- //# sourceMappingURL=useLiveStoreComponent.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLiveStoreComponent.test.js","sourceRoot":"","sources":["../../../src/__tests__/react/useLiveStoreComponent.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=reactive.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactive.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/reactive.test.ts"],"names":[],"mappings":""}
@@ -1,167 +0,0 @@
1
- import { makeNoopTracer } from '@livestore/utils';
2
- import * as otel from '@opentelemetry/api';
3
- import { describe, expect, it } from 'vitest';
4
- import { ReactiveGraph } from '../reactive.js';
5
- const mockOtelCtx = otel.context.active();
6
- describe('a trivial graph', () => {
7
- const makeGraph = () => {
8
- const graph = new ReactiveGraph({ otelTracer: makeNoopTracer() });
9
- const a = graph.makeRef(1);
10
- const b = graph.makeRef(2);
11
- const numberOfRunsForC = { runs: 0 };
12
- const c = graph.makeThunk((get) => {
13
- numberOfRunsForC.runs++;
14
- return get(a) + get(b);
15
- }, undefined, mockOtelCtx);
16
- const d = graph.makeRef(3);
17
- const e = graph.makeThunk((get) => get(c) + get(d), undefined, mockOtelCtx);
18
- // a(1) b(2)
19
- // \ /
20
- // \ /
21
- // c = a + b
22
- // \
23
- // \
24
- // d(3) \
25
- // \ \
26
- // \ \
27
- // e = c + d
28
- return { graph, a, b, c, d, e, numberOfRunsForC };
29
- };
30
- it('has the right initial values', () => {
31
- const { c, e } = makeGraph();
32
- expect(c.result).toBe(3);
33
- expect(e.result).toBe(6);
34
- });
35
- it('propagates change through the graph', () => {
36
- const { graph, a, c, e } = makeGraph();
37
- graph.setRef(a, 5, undefined, mockOtelCtx);
38
- expect(c.result).toBe(7);
39
- expect(e.result).toBe(10);
40
- });
41
- it('cuts off reactive propagation when a thunk evaluates to same result as before', () => {
42
- const { graph, a, c, d } = makeGraph();
43
- let numberOfRuns = 0;
44
- const f = graph.makeThunk((get) => {
45
- numberOfRuns++;
46
- return get(c) + get(d);
47
- }, undefined, mockOtelCtx);
48
- expect(numberOfRuns).toBe(1); // initializing f should run it once
49
- // f doesn't run because a is set to same value as before
50
- graph.setRef(a, 1, undefined, mockOtelCtx);
51
- expect(f.result).toBe(6);
52
- expect(numberOfRuns).toBe(1);
53
- // f runs because a is set to a different value
54
- graph.setRef(a, 5, undefined, mockOtelCtx);
55
- expect(f.result).toBe(10);
56
- expect(numberOfRuns).toBe(2);
57
- // f runs again when d is set to a different value
58
- graph.setRef(d, 4, undefined, mockOtelCtx);
59
- expect(f.result).toBe(11);
60
- expect(numberOfRuns).toBe(3);
61
- // f only runs one time if we set two refs together
62
- graph.setRefs([
63
- [a, 6],
64
- [d, 5],
65
- ], undefined, mockOtelCtx);
66
- expect(f.result).toBe(13);
67
- expect(numberOfRuns).toBe(4);
68
- });
69
- it('only runs a thunk once when two upstream refs are updated together', () => {
70
- const { graph, a, b, c, numberOfRunsForC } = makeGraph();
71
- expect(numberOfRunsForC.runs).toBe(1);
72
- graph.setRefs([
73
- [a, 5],
74
- [b, 6],
75
- ], undefined, mockOtelCtx);
76
- expect(numberOfRunsForC.runs).toBe(2);
77
- expect(c.result).toBe(11);
78
- });
79
- it('skips refresh when that option is passed when setting a single ref', () => {
80
- const { graph, a, c, numberOfRunsForC } = makeGraph();
81
- expect(numberOfRunsForC.runs).toBe(1);
82
- graph.setRef(a, 5, { skipRefresh: true }, mockOtelCtx);
83
- // C hasn't changed
84
- expect(numberOfRunsForC.runs).toBe(1);
85
- expect(c.result).toBe(3);
86
- // Now we trigger a refresh and everything runs
87
- graph.refresh(undefined, mockOtelCtx);
88
- expect(numberOfRunsForC.runs).toBe(2);
89
- expect(c.result).toBe(7);
90
- });
91
- it('skips refresh when that option is passed when setting multiple refs together', () => {
92
- const { graph, a, b, c, numberOfRunsForC } = makeGraph();
93
- expect(numberOfRunsForC.runs).toBe(1);
94
- graph.setRefs([
95
- [a, 5],
96
- [b, 6],
97
- ], { skipRefresh: true }, mockOtelCtx);
98
- // C hasn't changed
99
- expect(numberOfRunsForC.runs).toBe(1);
100
- expect(c.result).toBe(3);
101
- // Now we trigger a refresh and everything runs
102
- graph.refresh(undefined, mockOtelCtx);
103
- expect(numberOfRunsForC.runs).toBe(2);
104
- expect(c.result).toBe(11);
105
- });
106
- describe('effects', () => {
107
- it('only reruns an effect if the thunk value changed', () => {
108
- const { graph, a, c } = makeGraph();
109
- let numberOfCallsToC = 0;
110
- graph.makeEffect((get) => {
111
- // establish a dependency on thunk c and mutate an outside value
112
- get(c);
113
- numberOfCallsToC++;
114
- }, undefined, mockOtelCtx);
115
- expect(numberOfCallsToC).toBe(1);
116
- // if we set a to the same value, the effect should not run again
117
- graph.setRef(a, 1, undefined, mockOtelCtx);
118
- expect(numberOfCallsToC).toBe(1);
119
- graph.setRef(a, 2, undefined, mockOtelCtx);
120
- expect(numberOfCallsToC).toBe(2);
121
- });
122
- });
123
- });
124
- describe('a diamond shaped graph', () => {
125
- const makeGraph = () => {
126
- const graph = new ReactiveGraph({ otelTracer: makeNoopTracer() });
127
- const a = graph.makeRef(1);
128
- const b = graph.makeThunk((get) => get(a) + 1, undefined, mockOtelCtx);
129
- const c = graph.makeThunk((get) => get(a) + 1, undefined, mockOtelCtx);
130
- // track the number of times d has run in an object so we can mutate it
131
- const dRuns = { runs: 0 };
132
- // normally thunks aren't supposed to side effect;
133
- // we do it here to track the number of times d has run
134
- const d = graph.makeThunk((get) => {
135
- dRuns.runs++;
136
- return get(b) + get(c);
137
- }, undefined, mockOtelCtx);
138
- // a(1)
139
- // / \
140
- // b c
141
- // \ /
142
- // d = b + c
143
- return { graph, a, b, c, d, dRuns };
144
- };
145
- it('has the right initial values', () => {
146
- const { b, c, d } = makeGraph();
147
- expect(b.result).toBe(2);
148
- expect(c.result).toBe(2);
149
- expect(d.result).toBe(4);
150
- });
151
- it('propagates change through the graph', () => {
152
- const { graph, a, b, c, d } = makeGraph();
153
- graph.setRef(a, 5, undefined, mockOtelCtx);
154
- expect(b.result).toBe(6);
155
- expect(c.result).toBe(6);
156
- expect(d.result).toBe(12);
157
- });
158
- // if we're being efficient, we should update b and c before updating d,
159
- // so d only needs to update one time
160
- it('only runs d once when a changes', () => {
161
- const { graph, a, dRuns } = makeGraph();
162
- expect(dRuns.runs).toBe(1);
163
- graph.setRef(a, 5, undefined, mockOtelCtx);
164
- expect(dRuns.runs).toBe(2);
165
- });
166
- });
167
- //# sourceMappingURL=reactive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactive.test.js","sourceRoot":"","sources":["../../src/__tests__/reactive.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import * as otel from '@opentelemetry/api';
2
- import type { LiveStoreEvent } from '../events.js';
3
- import type { ActionDefinition } from '../schema.js';
4
- import type { ParamsObject } from '../util.js';
5
- import type { Backend, SelectResponse } from './index.js';
6
- export declare abstract class BaseBackend implements Backend {
7
- abstract otelTracer: otel.Tracer;
8
- select: <T = any>(query: string, bindValues?: ParamsObject) => Promise<SelectResponse<T>>;
9
- execute: (query: string, bindValues?: ParamsObject, parentSpan?: otel.Span) => void;
10
- getPersistedData: (parentSpan?: otel.Span) => Promise<Uint8Array>;
11
- applyEvent: (event: LiveStoreEvent, eventDefinition: ActionDefinition, parentSpan?: otel.Span) => void;
12
- }
13
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/backends/base.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEzD,8BAAsB,WAAY,YAAW,OAAO;IAClD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAA;IAEhC,MAAM,mBAA0B,MAAM,eAAe,YAAY,gCAEhE;IAED,OAAO,UAAW,MAAM,eAAe,YAAY,eAAe,KAAK,IAAI,KAAG,IAAI,CAEjF;IAED,gBAAgB,gBAAuB,KAAK,IAAI,KAAG,QAAQ,UAAU,CAAC,CAErE;IAGD,UAAU,UAAW,cAAc,mBAAmB,gBAAgB,eAAe,KAAK,IAAI,KAAG,IAAI,CAsCpG;CACF"}