@livestore/livestore 0.0.58-dev.6 → 0.0.58-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/effect/LiveStore.js +1 -1
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/react/LiveStoreProvider.js +2 -2
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/react/useLocalId.d.ts.map +1 -1
- package/dist/react/useLocalId.js +1 -0
- package/dist/react/useLocalId.js.map +1 -1
- package/dist/react/useQuery.d.ts.map +1 -1
- package/dist/react/useQuery.js +1 -0
- package/dist/react/useQuery.js.map +1 -1
- package/dist/react/useRow.test.js +5 -359
- package/dist/react/useRow.test.js.map +1 -1
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js +12 -7
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/react/useTemporaryQuery.test.js +23 -1
- package/dist/react/useTemporaryQuery.test.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +2 -2
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/store-devtools.js +1 -1
- package/dist/store-devtools.js.map +1 -1
- package/dist/store.d.ts +17 -13
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +71 -38
- package/dist/store.js.map +1 -1
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +1 -0
- package/dist/utils/dev.js.map +1 -1
- package/package.json +14 -13
- package/src/ambient.d.ts +3 -0
- package/src/effect/LiveStore.ts +1 -1
- package/src/react/LiveStoreProvider.tsx +2 -2
- package/src/react/__snapshots__/useRow.test.tsx.snap +359 -0
- package/src/react/useLocalId.ts +1 -0
- package/src/react/useQuery.ts +1 -0
- package/src/react/useRow.test.tsx +5 -359
- package/src/react/useTemporaryQuery.test.tsx +44 -2
- package/src/react/useTemporaryQuery.ts +23 -13
- package/src/reactiveQueries/sql.ts +2 -2
- package/src/store-devtools.ts +1 -1
- package/src/store.ts +111 -49
- package/src/utils/dev.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTemporaryQuery.js","sourceRoot":"","sources":["../../src/react/useTemporaryQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,0GAA0G;AAC1G,2FAA2F;AAC3F,2GAA2G;AAC3G,0FAA0F;AAC1F,MAAM,KAAK,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"useTemporaryQuery.js","sourceRoot":"","sources":["../../src/react/useTemporaryQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Effect, Schema } from '@livestore/utils/effect';
|
|
2
|
-
import { renderHook } from '@testing-library/react';
|
|
2
|
+
import { render, renderHook } from '@testing-library/react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
// @ts-expect-error no types
|
|
5
|
+
import * as ReactWindow from 'react-window';
|
|
3
6
|
import { describe, expect, it } from 'vitest';
|
|
4
7
|
import { makeTodoMvc, tables, todos } from '../__tests__/react/fixture.js';
|
|
8
|
+
import * as LiveStore from '../index.js';
|
|
5
9
|
import { querySQL } from '../reactiveQueries/sql.js';
|
|
6
10
|
import * as LiveStoreReact from './index.js';
|
|
7
11
|
describe('useTemporaryQuery', () => {
|
|
@@ -33,5 +37,23 @@ describe('useTemporaryQuery', () => {
|
|
|
33
37
|
unmount();
|
|
34
38
|
expect(queryMap.get('t2').runs).toBe(1);
|
|
35
39
|
}).pipe(Effect.scoped, Effect.tapCauseLogPretty, Effect.runPromise));
|
|
40
|
+
// NOTE this test covers some special react lifecyle paths which I couldn't easily reproduce without react-window
|
|
41
|
+
// it basically causes a "query swap" in the `useMemo` and both a `useEffect` cleanup call.
|
|
42
|
+
// To handle this properly we introduced the `_tag: 'destroyed'` state in the `spanAlreadyStartedCache`.
|
|
43
|
+
it('should work for a list with react-window', () => Effect.gen(function* () {
|
|
44
|
+
const { wrapper } = yield* makeTodoMvc();
|
|
45
|
+
const ListWrapper = ({ numItems }) => {
|
|
46
|
+
return (React.createElement(ReactWindow.FixedSizeList, { height: 100, width: 100, itemSize: 10, itemCount: numItems, itemData: Array.from({ length: numItems }, (_, i) => i).reverse() }, ListItem));
|
|
47
|
+
};
|
|
48
|
+
const ListItem = ({ data: ids, index }) => {
|
|
49
|
+
const id = ids[index];
|
|
50
|
+
const res = LiveStoreReact.useTemporaryQuery(() => LiveStore.computed(() => id, { label: `ListItem.${id}` }), id);
|
|
51
|
+
return React.createElement("div", { role: "listitem" }, res);
|
|
52
|
+
};
|
|
53
|
+
const renderResult = render(React.createElement(ListWrapper, { numItems: 1 }), { wrapper });
|
|
54
|
+
expect(renderResult.container.textContent).toBe('0');
|
|
55
|
+
renderResult.rerender(React.createElement(ListWrapper, { numItems: 2 }));
|
|
56
|
+
expect(renderResult.container.textContent).toBe('10');
|
|
57
|
+
}).pipe(Effect.scoped, Effect.tapCauseLogPretty, Effect.runPromise));
|
|
36
58
|
});
|
|
37
59
|
//# sourceMappingURL=useTemporaryQuery.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTemporaryQuery.test.js","sourceRoot":"","sources":["../../src/react/useTemporaryQuery.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"useTemporaryQuery.test.js","sourceRoot":"","sources":["../../src/react/useTemporaryQuery.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAqB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAExG,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAqB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAExG,OAAO,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAI/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAA;AAEvE;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,aAAa,EAAE,OAAO,yBACtC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC,WACvC;IACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IACxD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,QAAQ,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC,KACA,SAAS,CAAC,OAAO,EAAE,aAAa,CAU/B,CAAA;AAGJ,qBAAa,iBAAiB,CAC5B,aAAa,EACb,OAAO,GAAG,aAAa,EACvB,UAAU,SAAS,SAAS,GAAG,aAAa,CAC5C,SAAQ,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC/C,IAAI,EAAE,KAAK,CAAQ;IAEnB,mDAAmD;IACnD,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,GAAG,SAAS,CAAA;IAEpE,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IAErD,KAAK,EAAE,MAAM,CAAA;IAEb,SAAS,CAAC,eAAe,kBAAA;IAEzB,kGAAkG;IAClG,OAAO,CAAC,kBAAkB,CAAA;IAE1B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,MAAM,CAAkD;IAEhE,SAAS,EAAE,UAAU,CAAA;gBAET,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAiC,EACjC,eAAe,EACf,MAAM,EACN,GAAG,EACH,kBAAkB,EAClB,SAAS,GACV,EAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC,CAAA;QACzD,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,UAAU,CAAC,EAAE,QAAQ,CAAA;QACrB,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;QACtC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;QAChD,SAAS,CAAC,EAAE,UAAU,CAAA;KACvB;IAiID,OAAO,aAMN;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { prepareBindValues } from '@livestore/common';
|
|
2
2
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
3
|
-
import { Schema,
|
|
3
|
+
import { Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
4
4
|
import * as otel from '@opentelemetry/api';
|
|
5
5
|
import { globalReactivityGraph } from '../global-state.js';
|
|
6
6
|
import { NOT_REFRESHED_YET } from '../reactive.js';
|
|
@@ -61,7 +61,7 @@ export class LiveStoreSQLQuery extends LiveStoreQueryBase {
|
|
|
61
61
|
}
|
|
62
62
|
const queryLabel = `${label}:results`;
|
|
63
63
|
const queriedTablesRef = { current: queriedTables };
|
|
64
|
-
const schemaEqual =
|
|
64
|
+
const schemaEqual = Schema.equivalence(schema);
|
|
65
65
|
// TODO also support derived equality for `map` (probably will depend on having an easy way to transform a schema without an `encode` step)
|
|
66
66
|
// This would mean dropping the `map` option
|
|
67
67
|
const equal = map === undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAsC,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/reactiveQueries/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAsC,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,KAAgD,EAChD,OAYC,EACkC,EAAE,CACrC,IAAI,iBAAiB,CAAwC;IAC3D,KAAK,EAAE,OAAO,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,OAAO,EAAE,aAAa;IACrC,UAAU,EAAE,OAAO,EAAE,UAAU;IAC/B,eAAe,EAAE,OAAO,EAAE,eAAe;IACzC,GAAG,EAAE,OAAO,EAAE,GAAG;IACjB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;CAC5B,CAAC,CAAA;AAEJ,kDAAkD;AAClD,MAAM,OAAO,iBAIX,SAAQ,kBAAuC;IAC/C,IAAI,GAAU,KAAK,CAAA;IAEnB,mDAAmD;IACnD,YAAY,CAAwD;IAEpE,sDAAsD;IACtD,QAAQ,CAA6C;IAErD,KAAK,CAAQ;IAEH,eAAe,CAAA;IAEzB,kGAAkG;IAC1F,kBAAkB,CAAA;IAElB,SAAS,CAAkC;IAC3C,MAAM,CAAkD;IAEhE,SAAS,CAAY;IAErB,YAAY,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,EACjC,eAAe,EACf,MAAM,EACN,GAAG,EACH,kBAAkB,EAClB,SAAS,GAWV;QACC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,GAAG,CAAA;QAC5B,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,qBAAqB,CAAA;QAC/D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,IAAK,EAAE,IAAI,EAAE,MAAM,EAAiB,CAAA;QAE9D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAe,CAAC,CAAC,CAAC,GAAG,CAAA;QAEzE,IAAI,yBAA8E,CAAA;QAClF,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CACxD,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE;gBACtD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;gBACjC,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,IAAI,eAAe,CAAC,CAAC,CAAA;gBAC1F,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;gBAC9C,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;gBAC3F,OAAO,WAAW,CAAA;YACpB,CAAC,EACD;gBACE,KAAK,EAAE,GAAG,KAAK,cAAc;gBAC7B,IAAI,EAAE,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;gBAC9C,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;aACzB,CACF,CAAA;YAED,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,yBAAyB,GAAG,cAAc,CAAA;QAC5C,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,KAAK,UAAU,CAAA;QAErC,MAAM,gBAAgB,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAA;QAEnD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC9C,2IAA2I;QAC3I,4CAA4C;QAC5C,MAAM,KAAK,GACT,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CACzB,CAAC,KAAK,iBAAiB,IAAI,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAQ,EAAE,CAAQ,CAAC;YAChG,CAAC,CAAC,SAAS,CAAA;QAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAC7C,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,CACzE,UAAU,CAAC,eAAe,CACxB,SAAS,EAAE,iDAAiD;QAC5D,EAAE,EACF,WAAW,IAAI,eAAe,EAC9B,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;YAEnE,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;gBAC/F,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;YACrC,CAAC;YAED,MAAM,SAAS,GACb,OAAO,yBAAyB,KAAK,QAAQ;gBAC3C,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAA;YAEjD,IAAI,gBAAgB,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3C,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YACzE,CAAC;YAED,kEAAkE;YAClE,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAA;gBACvG,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;YACzC,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;YAEhD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAM,SAAS,EAAE;gBAC5D,aAAa;gBACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7E,WAAW;aACZ,CAAC,CAAA;YAEF,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAErD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAA;YAEjE,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACjD,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAA;gBAEpG,OAAO,CAAC,KAAK,CACX;;;SAGP,SAAS;EAChB,aAAa;;mBAEI,iBAAiB;;SAE3B,aAAa;;QAEd,EACQ,UAAU,CACX,CAAA;gBACD,OAAO,iBAAiB,CAAC,mCAAmC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;YAClF,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAEjD,IAAI,CAAC,GAAG,EAAE,CAAA;YAEV,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;YAE9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAEpC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YAElE,OAAO,MAAM,CAAA;QACf,CAAC,CACF,EACH,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAC7B,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,OAAO,GAAG,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC,CAAA;CACF"}
|
package/dist/store-devtools.js
CHANGED
|
@@ -21,7 +21,7 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
const requestId = decodedMessage.requestId;
|
|
24
|
-
const requestIdleCallback =
|
|
24
|
+
const requestIdleCallback = globalThis.requestIdleCallback ?? ((cb) => cb());
|
|
25
25
|
switch (decodedMessage._tag) {
|
|
26
26
|
case 'LSD.ReactivityGraphSubscribe': {
|
|
27
27
|
const includeResults = decodedMessage.includeResults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-devtools.js","sourceRoot":"","sources":["../src/store-devtools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AActF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,oBAAoB,EACpB,KAAK,GAIN,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAA;IAE9D,MAAM,2BAA2B,GAAW,IAAI,GAAG,EAAE,CAAA;IACrD,MAAM,wBAAwB,GAAW,IAAI,GAAG,EAAE,CAAA;IAClD,MAAM,6BAA6B,GAAW,IAAI,GAAG,EAAE,CAAA;IAEvD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,2BAA2B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;QACvD,wBAAwB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;QACpD,6BAA6B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CACH,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,OAAyC,EAAE,EAAE,CACnE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAEnF,MAAM,SAAS,GAAG,CAAC,cAA0D,EAAE,EAAE;QAC/E,0DAA0D;QAE1D,IAAI,cAAc,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC9E,wCAAwC;YACxC,OAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAA;QAE1C,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"store-devtools.js","sourceRoot":"","sources":["../src/store-devtools.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { BootDb, BootStatus, ParamsObject, StoreAdapter, StoreAdapterFactory } from '@livestore/common';
|
|
1
|
+
import type { BootDb, BootStatus, EventId, ParamsObject, StoreAdapter, StoreAdapterFactory } from '@livestore/common';
|
|
2
2
|
import { UnexpectedError } from '@livestore/common';
|
|
3
3
|
import type { LiveStoreSchema, MutationEvent } from '@livestore/common/schema';
|
|
4
|
-
import { Effect, FiberSet, Inspectable, Runtime, Scope } from '@livestore/utils/effect';
|
|
4
|
+
import { Effect, FiberSet, Inspectable, MutableHashMap, Runtime, Scope } from '@livestore/utils/effect';
|
|
5
5
|
import * as otel from '@opentelemetry/api';
|
|
6
6
|
import type { GraphQLSchema } from 'graphql';
|
|
7
7
|
import type { StackInfo } from './react/utils/stack-info.js';
|
|
@@ -33,7 +33,10 @@ export type StoreOptions<TGraphQLContext extends BaseGraphQLContext, TSchema ext
|
|
|
33
33
|
fiberSet: FiberSet.FiberSet;
|
|
34
34
|
runtime: Runtime.Runtime<Scope.Scope>;
|
|
35
35
|
batchUpdates: (runUpdates: () => void) => void;
|
|
36
|
-
|
|
36
|
+
currentMutationEventIdRef: {
|
|
37
|
+
current: EventId;
|
|
38
|
+
};
|
|
39
|
+
unsyncedMutationEvents: MutableHashMap.MutableHashMap<EventId, MutationEvent.ForSchema<TSchema>>;
|
|
37
40
|
};
|
|
38
41
|
export type RefreshReason = DebugRefreshReasonBase | {
|
|
39
42
|
_tag: 'mutate';
|
|
@@ -74,7 +77,7 @@ export type StoreMutateOptions = {
|
|
|
74
77
|
persisted?: boolean;
|
|
75
78
|
};
|
|
76
79
|
export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGraphQLContext, TSchema extends LiveStoreSchema = LiveStoreSchema> extends Inspectable.Class {
|
|
77
|
-
|
|
80
|
+
readonly storeId: string;
|
|
78
81
|
reactivityGraph: ReactivityGraph;
|
|
79
82
|
syncDbWrapper: SynchronousDatabaseWrapper;
|
|
80
83
|
adapter: StoreAdapter;
|
|
@@ -91,11 +94,11 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
91
94
|
};
|
|
92
95
|
private fiberSet;
|
|
93
96
|
private runtime;
|
|
94
|
-
private __processedMutationIds;
|
|
95
|
-
private __processedMutationWithoutRefreshIds;
|
|
96
97
|
/** RC-based set to see which queries are currently subscribed to */
|
|
97
98
|
activeQueries: ReferenceCountedSet<LiveQuery<any>>;
|
|
98
99
|
readonly __mutationEventSchema: import("@livestore/common/schema").MutationEventSchema<TSchema["_MutationDefMapType"]>;
|
|
100
|
+
private currentMutationEventIdRef;
|
|
101
|
+
private unsyncedMutationEvents;
|
|
99
102
|
private constructor();
|
|
100
103
|
static createStore: <TGraphQLContext_1 extends BaseGraphQLContext, TSchema_1 extends LiveStoreSchema = LiveStoreSchema>(storeOptions: StoreOptions<TGraphQLContext_1, TSchema_1>, parentSpan: otel.Span) => Store<TGraphQLContext_1, TSchema_1>;
|
|
101
104
|
/**
|
|
@@ -108,10 +111,10 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
108
111
|
skipInitialRun?: boolean;
|
|
109
112
|
} | undefined) => (() => void);
|
|
110
113
|
mutate: {
|
|
111
|
-
<const TMutationArg extends ReadonlyArray<MutationEvent.
|
|
112
|
-
(txn: <const TMutationArg extends ReadonlyArray<MutationEvent.
|
|
113
|
-
<const TMutationArg extends ReadonlyArray<MutationEvent.
|
|
114
|
-
(options: StoreMutateOptions, txn: <const TMutationArg extends ReadonlyArray<MutationEvent.
|
|
114
|
+
<const TMutationArg extends ReadonlyArray<MutationEvent.PartialForSchema<TSchema>>>(...list: TMutationArg): void;
|
|
115
|
+
(txn: <const TMutationArg extends ReadonlyArray<MutationEvent.PartialForSchema<TSchema>>>(...list: TMutationArg) => void): void;
|
|
116
|
+
<const TMutationArg extends ReadonlyArray<MutationEvent.PartialForSchema<TSchema>>>(options: StoreMutateOptions, ...list: TMutationArg): void;
|
|
117
|
+
(options: StoreMutateOptions, txn: <const TMutationArg extends ReadonlyArray<MutationEvent.PartialForSchema<TSchema>>>(...list: TMutationArg) => void): void;
|
|
115
118
|
};
|
|
116
119
|
/**
|
|
117
120
|
* This can be used in combination with `skipRefresh` when applying mutations.
|
|
@@ -126,7 +129,7 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
126
129
|
* This is an internal method that doesn't trigger a refresh;
|
|
127
130
|
* the caller must refresh queries after calling this method.
|
|
128
131
|
*/
|
|
129
|
-
mutateWithoutRefresh: (
|
|
132
|
+
mutateWithoutRefresh: (mutationEventDecoded_: MutationEvent.ForSchema<TSchema> | MutationEvent.PartialForSchema<TSchema>, options: {
|
|
130
133
|
otelContext: otel.Context;
|
|
131
134
|
coordinatorMode: "default" | "skip-coordinator" | "skip-persist";
|
|
132
135
|
}) => {
|
|
@@ -138,8 +141,9 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
|
138
141
|
* This should only be used for framework-internal purposes;
|
|
139
142
|
* all app writes should go through mutate.
|
|
140
143
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
__execute: (query: string, params?: ParamsObject, writeTables?: ReadonlySet<string>, otelContext?: otel.Context) => void;
|
|
145
|
+
__select: (query: string, params?: ParamsObject) => readonly any[];
|
|
146
|
+
private getNextMutationEventId;
|
|
143
147
|
private makeTableRef;
|
|
144
148
|
__devDownloadDb: () => void;
|
|
145
149
|
__devDownloadMutationLogDb: () => import("effect/Fiber").RuntimeFiber<import("effect/Fiber").RuntimeFiber<void, UnexpectedError>, never>;
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,UAAU,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getExecArgsFromMutation, prepareBindValues, UnexpectedError } from '@livestore/common';
|
|
2
|
-
import { makeMutationEventSchemaMemo, SCHEMA_META_TABLE, SCHEMA_MUTATIONS_META_TABLE } from '@livestore/common/schema';
|
|
2
|
+
import { makeMutationEventSchemaMemo, SCHEMA_META_TABLE, SCHEMA_MUTATIONS_META_TABLE, SESSION_CHANGESET_META_TABLE, } from '@livestore/common/schema';
|
|
3
3
|
import { assertNever, makeNoopTracer, shouldNeverHappen } from '@livestore/utils';
|
|
4
|
-
import { Cause, Deferred, Duration, Effect, Exit, FiberSet, Inspectable, Layer, Logger, LogLevel, OtelTracer, Queue, Runtime, Schema, Scope, Stream, } from '@livestore/utils/effect';
|
|
4
|
+
import { Cause, Data, Deferred, Duration, Effect, Exit, FiberSet, Inspectable, Layer, Logger, LogLevel, MutableHashMap, OtelTracer, Queue, Runtime, Schema, Scope, Stream, } from '@livestore/utils/effect';
|
|
5
5
|
import * as otel from '@opentelemetry/api';
|
|
6
6
|
import { globalReactivityGraph } from './global-state.js';
|
|
7
7
|
import { connectDevtoolsToStore } from './store-devtools.js';
|
|
@@ -9,13 +9,13 @@ import { SynchronousDatabaseWrapper } from './SynchronousDatabaseWrapper.js';
|
|
|
9
9
|
import { ReferenceCountedSet } from './utils/data-structures.js';
|
|
10
10
|
import { downloadBlob } from './utils/dev.js';
|
|
11
11
|
import { getDurationMsFromSpan } from './utils/otel.js';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
// eslint-disable-next-line unicorn/prefer-global-this
|
|
13
|
+
if (import.meta.env.DEV && typeof window !== 'undefined') {
|
|
14
|
+
// eslint-disable-next-line unicorn/prefer-global-this
|
|
15
15
|
window.__debugDownloadBlob = downloadBlob;
|
|
16
16
|
}
|
|
17
17
|
export class Store extends Inspectable.Class {
|
|
18
|
-
|
|
18
|
+
storeId;
|
|
19
19
|
reactivityGraph;
|
|
20
20
|
syncDbWrapper;
|
|
21
21
|
adapter;
|
|
@@ -30,15 +30,18 @@ export class Store extends Inspectable.Class {
|
|
|
30
30
|
tableRefs;
|
|
31
31
|
fiberSet;
|
|
32
32
|
runtime;
|
|
33
|
-
// TODO remove this temporary solution and find a better way to avoid re-processing the same mutation
|
|
34
|
-
__processedMutationIds;
|
|
35
|
-
__processedMutationWithoutRefreshIds = new Set();
|
|
36
33
|
/** RC-based set to see which queries are currently subscribed to */
|
|
37
34
|
activeQueries;
|
|
35
|
+
// NOTE this is currently exposed for the Devtools databrowser to emit mutation events
|
|
38
36
|
__mutationEventSchema;
|
|
37
|
+
currentMutationEventIdRef;
|
|
38
|
+
unsyncedMutationEvents;
|
|
39
39
|
// #region constructor
|
|
40
|
-
constructor({ adapter, schema, graphQLOptions, reactivityGraph, otelOptions, disableDevtools, batchUpdates,
|
|
40
|
+
constructor({ adapter, schema, graphQLOptions, reactivityGraph, otelOptions, disableDevtools, batchUpdates, currentMutationEventIdRef, unsyncedMutationEvents, storeId, fiberSet, runtime, }) {
|
|
41
41
|
super();
|
|
42
|
+
this.storeId = storeId;
|
|
43
|
+
this.currentMutationEventIdRef = currentMutationEventIdRef;
|
|
44
|
+
this.unsyncedMutationEvents = unsyncedMutationEvents;
|
|
42
45
|
this.syncDbWrapper = new SynchronousDatabaseWrapper({ otel: otelOptions, db: adapter.syncDb });
|
|
43
46
|
this.adapter = adapter;
|
|
44
47
|
this.schema = schema;
|
|
@@ -46,8 +49,6 @@ export class Store extends Inspectable.Class {
|
|
|
46
49
|
this.runtime = runtime;
|
|
47
50
|
// TODO refactor
|
|
48
51
|
this.__mutationEventSchema = makeMutationEventSchemaMemo(schema);
|
|
49
|
-
// TODO remove this temporary solution and find a better way to avoid re-processing the same mutation
|
|
50
|
-
this.__processedMutationIds = __processedMutationIds;
|
|
51
52
|
// TODO generalize the `tableRefs` concept to allow finer-grained refs
|
|
52
53
|
this.tableRefs = {};
|
|
53
54
|
this.activeQueries = new ReferenceCountedSet();
|
|
@@ -76,7 +77,7 @@ export class Store extends Inspectable.Class {
|
|
|
76
77
|
// unless LiveStore is running in the devtools
|
|
77
78
|
isRunningInDevtools
|
|
78
79
|
? this.schema.tables.keys()
|
|
79
|
-
: Array.from(this.schema.tables.keys()).filter((_) => _ !== SCHEMA_META_TABLE && _ !== SCHEMA_MUTATIONS_META_TABLE));
|
|
80
|
+
: Array.from(this.schema.tables.keys()).filter((_) => _ !== SCHEMA_META_TABLE && _ !== SCHEMA_MUTATIONS_META_TABLE && _ !== SESSION_CHANGESET_META_TABLE));
|
|
80
81
|
const existingTableRefs = new Map(Array.from(this.reactivityGraph.atoms.values())
|
|
81
82
|
.filter((_) => _._tag === 'ref' && _.label?.startsWith('tableRef:') === true)
|
|
82
83
|
.map((_) => [_.label.slice('tableRef:'.length), _]));
|
|
@@ -88,9 +89,9 @@ export class Store extends Inspectable.Class {
|
|
|
88
89
|
this.graphQLContext = graphQLOptions.makeContext(this.syncDbWrapper, this.otel.tracer);
|
|
89
90
|
}
|
|
90
91
|
Effect.gen(this, function* () {
|
|
91
|
-
yield* this.adapter.coordinator.syncMutations.pipe(Stream.
|
|
92
|
-
this.mutate({ wasSyncMessage: true },
|
|
93
|
-
}), Stream.runDrain, Effect.interruptible, Effect.withSpan('LiveStore:syncMutations'), Effect.forkScoped);
|
|
92
|
+
yield* this.adapter.coordinator.syncMutations.pipe(Stream.tapChunk((mutationsEventsDecodedChunk) => Effect.sync(() => {
|
|
93
|
+
this.mutate({ wasSyncMessage: true }, ...mutationsEventsDecodedChunk);
|
|
94
|
+
})), Stream.runDrain, Effect.interruptible, Effect.withSpan('LiveStore:syncMutations'), Effect.forkScoped);
|
|
94
95
|
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
95
96
|
for (const tableRef of Object.values(this.tableRefs)) {
|
|
96
97
|
for (const superComp of tableRef.super) {
|
|
@@ -120,7 +121,7 @@ export class Store extends Inspectable.Class {
|
|
|
120
121
|
* Returns a function to cancel the subscription.
|
|
121
122
|
*/
|
|
122
123
|
subscribe = (query$, onNewValue, onUnsubsubscribe, options) => this.otel.tracer.startActiveSpan(`LiveStore.subscribe`, { attributes: { label: options?.label, queryLabel: query$.label } }, options?.otelContext ?? this.otel.queriesSpanContext, (span) => {
|
|
123
|
-
// console.
|
|
124
|
+
// console.debug('store sub', query$.id, query$.label)
|
|
124
125
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
125
126
|
const label = `subscribe:${options?.label}`;
|
|
126
127
|
const effect = this.reactivityGraph.makeEffect((get) => onNewValue(get(query$.results$)), { label });
|
|
@@ -130,7 +131,7 @@ export class Store extends Inspectable.Class {
|
|
|
130
131
|
effect.doEffect(otelContext);
|
|
131
132
|
}
|
|
132
133
|
const unsubscribe = () => {
|
|
133
|
-
// console.
|
|
134
|
+
// console.debug('store unsub', query$.id, query$.label)
|
|
134
135
|
try {
|
|
135
136
|
this.reactivityGraph.destroyNode(effect);
|
|
136
137
|
this.activeQueries.remove(query$);
|
|
@@ -164,13 +165,10 @@ export class Store extends Inspectable.Class {
|
|
|
164
165
|
else {
|
|
165
166
|
mutationsEvents = [firstMutationOrTxnFnOrOptions, ...restMutations];
|
|
166
167
|
}
|
|
167
|
-
mutationsEvents = mutationsEvents.filter((_) => !this.
|
|
168
|
+
mutationsEvents = mutationsEvents.filter((_) => _.id === undefined || !MutableHashMap.has(this.unsyncedMutationEvents, Data.struct(_.id)));
|
|
168
169
|
if (mutationsEvents.length === 0) {
|
|
169
170
|
return;
|
|
170
171
|
}
|
|
171
|
-
for (const mutationEvent of mutationsEvents) {
|
|
172
|
-
this.__processedMutationIds.add(mutationEvent.id);
|
|
173
|
-
}
|
|
174
172
|
const label = options?.label ?? 'mutate';
|
|
175
173
|
const skipRefresh = options?.skipRefresh ?? false;
|
|
176
174
|
const wasSyncMessage = options?.wasSyncMessage ?? false;
|
|
@@ -178,10 +176,10 @@ export class Store extends Inspectable.Class {
|
|
|
178
176
|
const mutationsSpan = otel.trace.getSpan(this.otel.mutationsSpanContext);
|
|
179
177
|
mutationsSpan.addEvent('mutate');
|
|
180
178
|
// console.group('LiveStore.mutate', { skipRefresh, wasSyncMessage, label })
|
|
181
|
-
// mutationsEvents.forEach((_) => console.
|
|
179
|
+
// mutationsEvents.forEach((_) => console.debug(_.mutation, _.id, _.args))
|
|
182
180
|
// console.groupEnd()
|
|
183
181
|
let durationMs;
|
|
184
|
-
|
|
182
|
+
const res = this.otel.tracer.startActiveSpan('LiveStore:mutate', { attributes: { 'livestore.mutateLabel': label } }, this.otel.mutationsSpanContext, (span) => {
|
|
185
183
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
186
184
|
try {
|
|
187
185
|
const writeTables = new Set();
|
|
@@ -248,6 +246,14 @@ export class Store extends Inspectable.Class {
|
|
|
248
246
|
}
|
|
249
247
|
return { durationMs };
|
|
250
248
|
});
|
|
249
|
+
// NOTE we need to add the mutation events to the unsynced mutation events map only after running the code above
|
|
250
|
+
// so the short-circuiting in `mutateWithoutRefresh` doesn't kick in for those events
|
|
251
|
+
for (const mutationEvent of mutationsEvents) {
|
|
252
|
+
if (mutationEvent.id !== undefined) {
|
|
253
|
+
MutableHashMap.set(this.unsyncedMutationEvents, Data.struct(mutationEvent.id), mutationEvent);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return res;
|
|
251
257
|
};
|
|
252
258
|
/**
|
|
253
259
|
* This can be used in combination with `skipRefresh` when applying mutations.
|
|
@@ -267,15 +273,23 @@ export class Store extends Inspectable.Class {
|
|
|
267
273
|
* This is an internal method that doesn't trigger a refresh;
|
|
268
274
|
* the caller must refresh queries after calling this method.
|
|
269
275
|
*/
|
|
270
|
-
mutateWithoutRefresh = (
|
|
276
|
+
mutateWithoutRefresh = (mutationEventDecoded_, options) => {
|
|
277
|
+
const mutationDef = this.schema.mutations.get(mutationEventDecoded_.mutation) ??
|
|
278
|
+
shouldNeverHappen(`Unknown mutation type: ${mutationEventDecoded_.mutation}`);
|
|
279
|
+
const mutationEventDecoded = mutationEventDecoded_.hasOwnProperty('id')
|
|
280
|
+
? mutationEventDecoded_
|
|
281
|
+
: {
|
|
282
|
+
...mutationEventDecoded_,
|
|
283
|
+
...this.getNextMutationEventId({ localOnly: mutationDef.options.localOnly }),
|
|
284
|
+
};
|
|
271
285
|
// NOTE we also need this temporary workaround here since some code-paths use `mutateWithoutRefresh` directly
|
|
272
286
|
// e.g. the row-query functionality
|
|
273
|
-
if (this.
|
|
287
|
+
if (MutableHashMap.has(this.unsyncedMutationEvents, Data.struct(mutationEventDecoded.id))) {
|
|
274
288
|
// NOTE this data should never be used
|
|
275
289
|
return { writeTables: new Set(), durationMs: 0 };
|
|
276
290
|
}
|
|
277
291
|
else {
|
|
278
|
-
this.
|
|
292
|
+
MutableHashMap.set(this.unsyncedMutationEvents, Data.struct(mutationEventDecoded.id), mutationEventDecoded);
|
|
279
293
|
}
|
|
280
294
|
const { otelContext, coordinatorMode = 'default' } = options;
|
|
281
295
|
return this.otel.tracer.startActiveSpan('LiveStore:mutateWithoutRefresh', {
|
|
@@ -287,8 +301,6 @@ export class Store extends Inspectable.Class {
|
|
|
287
301
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
288
302
|
const allWriteTables = new Set();
|
|
289
303
|
let durationMsTotal = 0;
|
|
290
|
-
const mutationDef = this.schema.mutations.get(mutationEventDecoded.mutation) ??
|
|
291
|
-
shouldNeverHappen(`Unknown mutation type: ${mutationEventDecoded.mutation}`);
|
|
292
304
|
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
|
293
305
|
for (const { statementSql, bindValues, writeTables = this.syncDbWrapper.getTablesUsed(statementSql), } of execArgsArr) {
|
|
294
306
|
// TODO when the store doesn't have the lock, we need wait for the coordinator to confirm the mutation
|
|
@@ -302,7 +314,7 @@ export class Store extends Inspectable.Class {
|
|
|
302
314
|
// Asynchronously apply mutation to a persistent storage (we're not awaiting this promise here)
|
|
303
315
|
this.adapter.coordinator
|
|
304
316
|
.mutate(mutationEventEncoded, { persisted: coordinatorMode !== 'skip-persist' })
|
|
305
|
-
.pipe(
|
|
317
|
+
.pipe(this.runEffectFork);
|
|
306
318
|
}
|
|
307
319
|
// Uncomment to print a list of queries currently registered on the store
|
|
308
320
|
// console.debug(JSON.parse(JSON.stringify([...this.queries].map((q) => `${labelForKey(q.componentKey)}/${q.label}`))))
|
|
@@ -316,13 +328,21 @@ export class Store extends Inspectable.Class {
|
|
|
316
328
|
* This should only be used for framework-internal purposes;
|
|
317
329
|
* all app writes should go through mutate.
|
|
318
330
|
*/
|
|
319
|
-
|
|
331
|
+
__execute = (query, params = {}, writeTables, otelContext) => {
|
|
320
332
|
this.syncDbWrapper.execute(query, prepareBindValues(params, query), writeTables, { otelContext });
|
|
321
333
|
this.adapter.coordinator.execute(query, prepareBindValues(params, query)).pipe(this.runEffectFork);
|
|
322
334
|
};
|
|
323
|
-
|
|
335
|
+
__select = (query, params = {}) => {
|
|
324
336
|
return this.syncDbWrapper.select(query, { bindValues: prepareBindValues(params, query) });
|
|
325
337
|
};
|
|
338
|
+
getNextMutationEventId = ({ localOnly }) => {
|
|
339
|
+
const id = this.adapter.coordinator.getNextMutationEventId({ localOnly }).pipe(Effect.runSync);
|
|
340
|
+
const parentId = localOnly
|
|
341
|
+
? this.currentMutationEventIdRef.current
|
|
342
|
+
: { global: this.currentMutationEventIdRef.current.global, local: 0 };
|
|
343
|
+
this.currentMutationEventIdRef.current = id;
|
|
344
|
+
return { id, parentId };
|
|
345
|
+
};
|
|
326
346
|
makeTableRef = (tableName) => this.reactivityGraph.makeRef(null, {
|
|
327
347
|
equal: () => false,
|
|
328
348
|
label: `tableRef:${tableName}`,
|
|
@@ -390,7 +410,11 @@ export const createStore = ({ schema, adapter: adapterFactory, storeId, graphQLO
|
|
|
390
410
|
connectDevtoolsToStore: connectDevtoolsToStore_,
|
|
391
411
|
}).pipe(Effect.withPerformanceMeasure('livestore:makeAdapter'), Effect.withSpan('createStore:makeAdapter'));
|
|
392
412
|
const mutationEventSchema = makeMutationEventSchemaMemo(schema);
|
|
393
|
-
|
|
413
|
+
// TODO get rid of this
|
|
414
|
+
// const __processedMutationIds = new Set<number>()
|
|
415
|
+
const currentMutationEventIdRef = { current: yield* adapter.coordinator.getCurrentMutationEventId };
|
|
416
|
+
// TODO fill up with unsynced mutation events from the coordinator
|
|
417
|
+
const unsyncedMutationEvents = MutableHashMap.empty();
|
|
394
418
|
// TODO consider moving booting into the storage backend
|
|
395
419
|
if (boot !== undefined) {
|
|
396
420
|
let isInTxn = false;
|
|
@@ -408,10 +432,18 @@ export const createStore = ({ schema, adapter: adapterFactory, storeId, graphQLO
|
|
|
408
432
|
}
|
|
409
433
|
},
|
|
410
434
|
mutate: (...list) => {
|
|
411
|
-
for (const
|
|
412
|
-
const mutationDef = schema.mutations.get(
|
|
413
|
-
shouldNeverHappen(`Unknown mutation type: ${
|
|
414
|
-
|
|
435
|
+
for (const mutationEventDecoded_ of list) {
|
|
436
|
+
const mutationDef = schema.mutations.get(mutationEventDecoded_.mutation) ??
|
|
437
|
+
shouldNeverHappen(`Unknown mutation type: ${mutationEventDecoded_.mutation}`);
|
|
438
|
+
const parentId = mutationDef.options.localOnly
|
|
439
|
+
? currentMutationEventIdRef.current
|
|
440
|
+
: { global: currentMutationEventIdRef.current.global, local: 0 };
|
|
441
|
+
currentMutationEventIdRef.current = adapter.coordinator
|
|
442
|
+
.getNextMutationEventId({ localOnly: mutationDef.options.localOnly })
|
|
443
|
+
.pipe(Effect.runSync);
|
|
444
|
+
const mutationEventDecoded = { ...mutationEventDecoded_, id: currentMutationEventIdRef.current, parentId };
|
|
445
|
+
MutableHashMap.set(unsyncedMutationEvents, Data.struct(mutationEventDecoded.id), mutationEventDecoded);
|
|
446
|
+
// __processedMutationIds.add(mutationEventDecoded.id.global)
|
|
415
447
|
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
|
416
448
|
// const { bindValues, statementSql } = getExecArgsFromMutation({ mutationDef, mutationEventDecoded })
|
|
417
449
|
for (const { statementSql, bindValues } of execArgsArr) {
|
|
@@ -458,7 +490,8 @@ export const createStore = ({ schema, adapter: adapterFactory, storeId, graphQLO
|
|
|
458
490
|
otelOptions: { tracer: otelTracer, rootSpanContext: otelRootSpanContext },
|
|
459
491
|
reactivityGraph,
|
|
460
492
|
disableDevtools,
|
|
461
|
-
|
|
493
|
+
currentMutationEventIdRef,
|
|
494
|
+
unsyncedMutationEvents,
|
|
462
495
|
fiberSet,
|
|
463
496
|
runtime,
|
|
464
497
|
batchUpdates: batchUpdates ?? ((run) => run()),
|