@livestore/common 0.3.0-dev.37 → 0.3.0-dev.38
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/adapter-types.d.ts +3 -2
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +29 -29
- package/dist/devtools/devtools-messages-common.d.ts +6 -6
- package/dist/devtools/devtools-messages-leader.d.ts +24 -24
- package/dist/devtools/devtools-sessioninfo.d.ts +2 -0
- package/dist/devtools/devtools-sessioninfo.d.ts.map +1 -1
- package/dist/devtools/devtools-sessioninfo.js +1 -0
- package/dist/devtools/devtools-sessioninfo.js.map +1 -1
- package/dist/devtools/mod.d.ts +48 -32
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +27 -21
- package/dist/devtools/mod.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
- package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
- package/dist/leader-thread/leader-worker-devtools.js +21 -13
- package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
- package/dist/leader-thread/types.d.ts +6 -4
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/leader-thread/types.js.map +1 -1
- package/dist/make-client-session.d.ts +21 -0
- package/dist/make-client-session.d.ts.map +1 -0
- package/dist/make-client-session.js +51 -0
- package/dist/make-client-session.js.map +1 -0
- package/dist/materializer-helper.d.ts.map +1 -1
- package/dist/materializer-helper.js +1 -1
- package/dist/materializer-helper.js.map +1 -1
- package/dist/schema/EventDef.d.ts +2 -2
- package/dist/schema/LiveStoreEvent.d.ts +6 -6
- package/dist/schema/state/sqlite/system-tables.d.ts +2 -2
- package/dist/sync/next/test/event-fixtures.d.ts +7 -7
- package/dist/sync/syncstate.d.ts +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/src/adapter-types.ts +4 -2
- package/src/devtools/devtools-sessioninfo.ts +1 -0
- package/src/devtools/mod.ts +44 -21
- package/src/index.ts +1 -0
- package/src/leader-thread/leader-worker-devtools.ts +40 -22
- package/src/leader-thread/types.ts +5 -4
- package/src/make-client-session.ts +119 -0
- package/src/materializer-helper.ts +2 -1
- package/src/version.ts +1 -1
- package/dist/derived-mutations.d.ts +0 -77
- package/dist/derived-mutations.d.ts.map +0 -1
- package/dist/derived-mutations.js +0 -54
- package/dist/derived-mutations.js.map +0 -1
- package/dist/derived-mutations.test.d.ts +0 -2
- package/dist/derived-mutations.test.d.ts.map +0 -1
- package/dist/derived-mutations.test.js +0 -93
- package/dist/derived-mutations.test.js.map +0 -1
- package/dist/devtools/devtools-bridge.d.ts +0 -12
- package/dist/devtools/devtools-bridge.d.ts.map +0 -1
- package/dist/devtools/devtools-bridge.js +0 -2
- package/dist/devtools/devtools-bridge.js.map +0 -1
- package/dist/devtools/devtools-window-message.d.ts +0 -29
- package/dist/devtools/devtools-window-message.d.ts.map +0 -1
- package/dist/devtools/devtools-window-message.js +0 -33
- package/dist/devtools/devtools-window-message.js.map +0 -1
- package/dist/devtools/index.d.ts +0 -42
- package/dist/devtools/index.d.ts.map +0 -1
- package/dist/devtools/index.js +0 -49
- package/dist/devtools/index.js.map +0 -1
- package/dist/init-singleton-tables.d.ts +0 -4
- package/dist/init-singleton-tables.d.ts.map +0 -1
- package/dist/init-singleton-tables.js +0 -16
- package/dist/init-singleton-tables.js.map +0 -1
- package/dist/leader-thread/apply-event.d.ts +0 -16
- package/dist/leader-thread/apply-event.d.ts.map +0 -1
- package/dist/leader-thread/apply-event.js +0 -103
- package/dist/leader-thread/apply-event.js.map +0 -1
- package/dist/mutation.d.ts +0 -14
- package/dist/mutation.d.ts.map +0 -1
- package/dist/mutation.js +0 -71
- package/dist/mutation.js.map +0 -1
- package/dist/query-builder/api.d.ts +0 -293
- package/dist/query-builder/api.d.ts.map +0 -1
- package/dist/query-builder/api.js +0 -6
- package/dist/query-builder/api.js.map +0 -1
- package/dist/query-builder/astToSql.d.ts +0 -7
- package/dist/query-builder/astToSql.d.ts.map +0 -1
- package/dist/query-builder/astToSql.js +0 -190
- package/dist/query-builder/astToSql.js.map +0 -1
- package/dist/query-builder/impl.d.ts +0 -7
- package/dist/query-builder/impl.d.ts.map +0 -1
- package/dist/query-builder/impl.js +0 -286
- package/dist/query-builder/impl.js.map +0 -1
- package/dist/query-builder/impl.test.d.ts +0 -87
- package/dist/query-builder/impl.test.d.ts.map +0 -1
- package/dist/query-builder/impl.test.js +0 -554
- package/dist/query-builder/impl.test.js.map +0 -1
- package/dist/query-builder/mod.d.ts +0 -17
- package/dist/query-builder/mod.d.ts.map +0 -1
- package/dist/query-builder/mod.js +0 -17
- package/dist/query-builder/mod.js.map +0 -1
- package/dist/query-info.d.ts +0 -38
- package/dist/query-info.d.ts.map +0 -1
- package/dist/query-info.js +0 -7
- package/dist/query-info.js.map +0 -1
- package/dist/rehydrate-from-eventlog.d.ts +0 -14
- package/dist/rehydrate-from-eventlog.d.ts.map +0 -1
- package/dist/rehydrate-from-eventlog.js +0 -64
- package/dist/rehydrate-from-eventlog.js.map +0 -1
- package/dist/rehydrate-from-mutationlog.d.ts +0 -14
- package/dist/rehydrate-from-mutationlog.d.ts.map +0 -1
- package/dist/rehydrate-from-mutationlog.js +0 -72
- package/dist/rehydrate-from-mutationlog.js.map +0 -1
- package/dist/schema/client-document-def.d.ts +0 -223
- package/dist/schema/client-document-def.d.ts.map +0 -1
- package/dist/schema/client-document-def.js +0 -170
- package/dist/schema/client-document-def.js.map +0 -1
- package/dist/schema/client-document-def.test.d.ts +0 -2
- package/dist/schema/client-document-def.test.d.ts.map +0 -1
- package/dist/schema/client-document-def.test.js +0 -201
- package/dist/schema/client-document-def.test.js.map +0 -1
- package/dist/schema/db-schema/ast/sqlite.d.ts +0 -69
- package/dist/schema/db-schema/ast/sqlite.d.ts.map +0 -1
- package/dist/schema/db-schema/ast/sqlite.js +0 -71
- package/dist/schema/db-schema/ast/sqlite.js.map +0 -1
- package/dist/schema/db-schema/ast/validate.d.ts +0 -3
- package/dist/schema/db-schema/ast/validate.d.ts.map +0 -1
- package/dist/schema/db-schema/ast/validate.js +0 -12
- package/dist/schema/db-schema/ast/validate.js.map +0 -1
- package/dist/schema/db-schema/dsl/field-defs.d.ts +0 -90
- package/dist/schema/db-schema/dsl/field-defs.d.ts.map +0 -1
- package/dist/schema/db-schema/dsl/field-defs.js +0 -87
- package/dist/schema/db-schema/dsl/field-defs.js.map +0 -1
- package/dist/schema/db-schema/dsl/field-defs.test.d.ts +0 -2
- package/dist/schema/db-schema/dsl/field-defs.test.d.ts.map +0 -1
- package/dist/schema/db-schema/dsl/field-defs.test.js +0 -29
- package/dist/schema/db-schema/dsl/field-defs.test.js.map +0 -1
- package/dist/schema/db-schema/dsl/mod.d.ts +0 -90
- package/dist/schema/db-schema/dsl/mod.d.ts.map +0 -1
- package/dist/schema/db-schema/dsl/mod.js +0 -41
- package/dist/schema/db-schema/dsl/mod.js.map +0 -1
- package/dist/schema/db-schema/hash.d.ts +0 -2
- package/dist/schema/db-schema/hash.d.ts.map +0 -1
- package/dist/schema/db-schema/hash.js +0 -14
- package/dist/schema/db-schema/hash.js.map +0 -1
- package/dist/schema/db-schema/mod.d.ts +0 -3
- package/dist/schema/db-schema/mod.d.ts.map +0 -1
- package/dist/schema/db-schema/mod.js +0 -3
- package/dist/schema/db-schema/mod.js.map +0 -1
- package/dist/schema/index.d.ts +0 -62
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js +0 -67
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/mutations.d.ts +0 -227
- package/dist/schema/mutations.d.ts.map +0 -1
- package/dist/schema/mutations.js +0 -68
- package/dist/schema/mutations.js.map +0 -1
- package/dist/schema/schema-helpers.d.ts +0 -4
- package/dist/schema/schema-helpers.d.ts.map +0 -1
- package/dist/schema/schema-helpers.js +0 -30
- package/dist/schema/schema-helpers.js.map +0 -1
- package/dist/schema/sqlite-state.d.ts +0 -12
- package/dist/schema/sqlite-state.d.ts.map +0 -1
- package/dist/schema/sqlite-state.js +0 -36
- package/dist/schema/sqlite-state.js.map +0 -1
- package/dist/schema/state/sqlite/sqlite-state.d.ts +0 -12
- package/dist/schema/state/sqlite/sqlite-state.d.ts.map +0 -1
- package/dist/schema/state/sqlite/sqlite-state.js +0 -36
- package/dist/schema/state/sqlite/sqlite-state.js.map +0 -1
- package/dist/schema/state/state.d.ts +0 -3
- package/dist/schema/state/state.d.ts.map +0 -1
- package/dist/schema/state/state.js +0 -3
- package/dist/schema/state/state.js.map +0 -1
- package/dist/schema/state.d.ts +0 -3
- package/dist/schema/state.d.ts.map +0 -1
- package/dist/schema/state.js +0 -3
- package/dist/schema/state.js.map +0 -1
- package/dist/schema/system-tables.d.ts +0 -27
- package/dist/schema/system-tables.d.ts.map +0 -1
- package/dist/schema/system-tables.js +0 -86
- package/dist/schema/system-tables.js.map +0 -1
- package/dist/schema/table-def.d.ts +0 -84
- package/dist/schema/table-def.d.ts.map +0 -1
- package/dist/schema/table-def.js +0 -36
- package/dist/schema/table-def.js.map +0 -1
- package/dist/schema/view.d.ts +0 -3
- package/dist/schema/view.d.ts.map +0 -1
- package/dist/schema/view.js +0 -3
- package/dist/schema/view.js.map +0 -1
- package/dist/schema-management/validate-mutation-defs.d.ts +0 -8
- package/dist/schema-management/validate-mutation-defs.d.ts.map +0 -1
- package/dist/schema-management/validate-mutation-defs.js +0 -39
- package/dist/schema-management/validate-mutation-defs.js.map +0 -1
- package/dist/sync/next/test/mutation-fixtures.d.ts +0 -73
- package/dist/sync/next/test/mutation-fixtures.d.ts.map +0 -1
- package/dist/sync/next/test/mutation-fixtures.js +0 -161
- package/dist/sync/next/test/mutation-fixtures.js.map +0 -1
- package/dist/sync/next-mutation-event-id-pair.d.ts +0 -14
- package/dist/sync/next-mutation-event-id-pair.d.ts.map +0 -1
- package/dist/sync/next-mutation-event-id-pair.js +0 -13
- package/dist/sync/next-mutation-event-id-pair.js.map +0 -1
- package/src/devtools/devtools-window-message.ts +0 -27
@@ -1,93 +0,0 @@
|
|
1
|
-
import { describe, expect, test } from 'vitest';
|
2
|
-
import { appConfig, todos } from './__tests__/fixture.js';
|
3
|
-
describe('derived mutations', () => {
|
4
|
-
test('todos', () => {
|
5
|
-
expect(patchId(todos.insert({ id: 't1', completed: true, text: 'Task 1' }))).toMatchInlineSnapshot(`
|
6
|
-
{
|
7
|
-
"args": {
|
8
|
-
"completed": true,
|
9
|
-
"id": "t1",
|
10
|
-
"text": "Task 1",
|
11
|
-
},
|
12
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
13
|
-
"mutation": "_Derived_Create_todos",
|
14
|
-
}
|
15
|
-
`);
|
16
|
-
expect(patchId(todos.update({ where: { id: 't1' }, values: { text: 'Task 1 - fixed' } }))).toMatchInlineSnapshot(`
|
17
|
-
{
|
18
|
-
"args": {
|
19
|
-
"values": {
|
20
|
-
"text": "Task 1 - fixed",
|
21
|
-
},
|
22
|
-
"where": {
|
23
|
-
"id": "t1",
|
24
|
-
},
|
25
|
-
},
|
26
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
27
|
-
"mutation": "_Derived_Update_todos",
|
28
|
-
}
|
29
|
-
`);
|
30
|
-
expect(patchId(todos.delete({ where: { id: 't1' } }))).toMatchInlineSnapshot(`
|
31
|
-
{
|
32
|
-
"args": {
|
33
|
-
"where": {
|
34
|
-
"id": "t1",
|
35
|
-
},
|
36
|
-
},
|
37
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
38
|
-
"mutation": "_Derived_Delete_todos",
|
39
|
-
}
|
40
|
-
`);
|
41
|
-
});
|
42
|
-
test('app_config', () => {
|
43
|
-
expect(patchId(appConfig.insert())).toMatchInlineSnapshot(`
|
44
|
-
{
|
45
|
-
"args": {
|
46
|
-
"id": "singleton",
|
47
|
-
"value": {
|
48
|
-
"value": undefined,
|
49
|
-
},
|
50
|
-
},
|
51
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
52
|
-
"mutation": "_Derived_Create_app_config",
|
53
|
-
}
|
54
|
-
`);
|
55
|
-
expect(patchId(appConfig.insert({ fontSize: 12, theme: 'dark' }))).toMatchInlineSnapshot(`
|
56
|
-
{
|
57
|
-
"args": {
|
58
|
-
"id": "singleton",
|
59
|
-
"value": {
|
60
|
-
"value": {
|
61
|
-
"fontSize": 12,
|
62
|
-
"theme": "dark",
|
63
|
-
},
|
64
|
-
},
|
65
|
-
},
|
66
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
67
|
-
"mutation": "_Derived_Create_app_config",
|
68
|
-
}
|
69
|
-
`);
|
70
|
-
expect(patchId(appConfig.update({ fontSize: 13 }))).toMatchInlineSnapshot(`
|
71
|
-
{
|
72
|
-
"args": {
|
73
|
-
"values": {
|
74
|
-
"value": {
|
75
|
-
"fontSize": 13,
|
76
|
-
},
|
77
|
-
},
|
78
|
-
"where": {
|
79
|
-
"id": "singleton",
|
80
|
-
},
|
81
|
-
},
|
82
|
-
"id": "00000000-0000-0000-0000-000000000000",
|
83
|
-
"mutation": "_Derived_Update_app_config",
|
84
|
-
}
|
85
|
-
`);
|
86
|
-
});
|
87
|
-
});
|
88
|
-
const patchId = (muationEvent) => {
|
89
|
-
// TODO use new id paradigm
|
90
|
-
const id = `00000000-0000-0000-0000-000000000000`;
|
91
|
-
return { ...muationEvent, id };
|
92
|
-
};
|
93
|
-
//# sourceMappingURL=derived-mutations.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"derived-mutations.test.js","sourceRoot":"","sources":["../src/derived-mutations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAGzD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAUlG,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;KAahH,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;KAU5E,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAWzD,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;KAcxF,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;KAezE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,CAAC,YAAsC,EAAE,EAAE;IACzD,2BAA2B;IAC3B,MAAM,EAAE,GAAG,sCAAsC,CAAA;IACjD,OAAO,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAA;AAChC,CAAC,CAAA"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import type { Effect, PubSub } from '@livestore/utils/effect';
|
2
|
-
import type * as Devtools from './devtools-messages.js';
|
3
|
-
export type PrepareDevtoolsBridge = {
|
4
|
-
/** Messages coming from the app host (usually responses to requests) */
|
5
|
-
responsePubSub: PubSub.PubSub<Devtools.MessageFromAppHostCoordinator | Devtools.MessageFromAppHostStore>;
|
6
|
-
sendToAppHost: (msg: Devtools.MessageToAppHostCoordinator | Devtools.MessageToAppHostStore) => Effect.Effect<void>;
|
7
|
-
appHostId: string;
|
8
|
-
copyToClipboard: (text: string) => Effect.Effect<void>;
|
9
|
-
sendEscapeKey?: Effect.Effect<void>;
|
10
|
-
isLeader: boolean;
|
11
|
-
};
|
12
|
-
//# sourceMappingURL=devtools-bridge.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"devtools-bridge.d.ts","sourceRoot":"","sources":["../../src/devtools/devtools-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,KAAK,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAEvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACxG,aAAa,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,2BAA2B,GAAG,QAAQ,CAAC,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClH,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnC,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"devtools-bridge.js","sourceRoot":"","sources":["../../src/devtools/devtools-bridge.ts"],"names":[],"mappings":""}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import { Schema } from '@livestore/utils/effect';
|
2
|
-
export declare namespace DevtoolsWindowMessage {
|
3
|
-
const MessagePortReady_base: Schema.TaggedStruct<"LSD.WindowMessage.MessagePortReady", {
|
4
|
-
port: Schema.Schema<MessagePort, MessagePort, never>;
|
5
|
-
appHostId: typeof Schema.String;
|
6
|
-
}>;
|
7
|
-
/** Message is being created in contentscript-iframe, sent to contentscript and then sent to Store */
|
8
|
-
export class MessagePortReady extends MessagePortReady_base {
|
9
|
-
}
|
10
|
-
const ContentscriptListening_base: Schema.TaggedStruct<"LSD.WindowMessage.ContentscriptListening", {}>;
|
11
|
-
export class ContentscriptListening extends ContentscriptListening_base {
|
12
|
-
}
|
13
|
-
const LoadIframe_base: Schema.TaggedStruct<"LSD.WindowMessage.LoadIframe", {}>;
|
14
|
-
export class LoadIframe extends LoadIframe_base {
|
15
|
-
}
|
16
|
-
const StoreReady_base: Schema.TaggedStruct<"LSD.WindowMessage.StoreReady", {
|
17
|
-
appHostId: typeof Schema.String;
|
18
|
-
}>;
|
19
|
-
export class StoreReady extends StoreReady_base {
|
20
|
-
}
|
21
|
-
const MessageForStore_base: Schema.Union<[typeof MessagePortReady, typeof ContentscriptListening]>;
|
22
|
-
export class MessageForStore extends MessageForStore_base {
|
23
|
-
}
|
24
|
-
const MessageForContentscript_base: Schema.Union<[typeof StoreReady, typeof LoadIframe]>;
|
25
|
-
export class MessageForContentscript extends MessageForContentscript_base {
|
26
|
-
}
|
27
|
-
export {};
|
28
|
-
}
|
29
|
-
//# sourceMappingURL=devtools-window-message.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"devtools-window-message.d.ts","sourceRoot":"","sources":["../../src/devtools/devtools-window-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,yBAAyB,CAAA;AAI9D,yBAAiB,qBAAqB,CAAC;;;;;IACrC,qGAAqG;IACrG,MAAM,OAAO,gBAAiB,SAAQ,qBAGpC;KAAG;;IAEL,MAAM,OAAO,sBAAuB,SAAQ,2BAAmE;KAAG;;IAMlH,MAAM,OAAO,UAAW,SAAQ,eAAuD;KAAG;;;;IAE1F,MAAM,OAAO,UAAW,SAAQ,eAE9B;KAAG;;IAEL,MAAM,OAAO,eAAgB,SAAQ,oBAAsD;KAAG;;IAE9F,MAAM,OAAO,uBAAwB,SAAQ,4BAAoC;KAAG;;CACrF"}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
import { Schema, Transferable } from '@livestore/utils/effect';
|
2
|
-
const appHostId = Schema.String;
|
3
|
-
export var DevtoolsWindowMessage;
|
4
|
-
(function (DevtoolsWindowMessage) {
|
5
|
-
/** Message is being created in contentscript-iframe, sent to contentscript and then sent to Store */
|
6
|
-
class MessagePortReady extends Schema.TaggedStruct('LSD.WindowMessage.MessagePortReady', {
|
7
|
-
port: Transferable.MessagePort,
|
8
|
-
appHostId,
|
9
|
-
}) {
|
10
|
-
}
|
11
|
-
DevtoolsWindowMessage.MessagePortReady = MessagePortReady;
|
12
|
-
class ContentscriptListening extends Schema.TaggedStruct('LSD.WindowMessage.ContentscriptListening', {}) {
|
13
|
-
}
|
14
|
-
DevtoolsWindowMessage.ContentscriptListening = ContentscriptListening;
|
15
|
-
// export class ContentscriptReady extends Schema.TaggedStruct('LSD.WindowMessage.ContentscriptReady', {
|
16
|
-
// appHostId,
|
17
|
-
// }) {}
|
18
|
-
class LoadIframe extends Schema.TaggedStruct('LSD.WindowMessage.LoadIframe', {}) {
|
19
|
-
}
|
20
|
-
DevtoolsWindowMessage.LoadIframe = LoadIframe;
|
21
|
-
class StoreReady extends Schema.TaggedStruct('LSD.WindowMessage.StoreReady', {
|
22
|
-
appHostId,
|
23
|
-
}) {
|
24
|
-
}
|
25
|
-
DevtoolsWindowMessage.StoreReady = StoreReady;
|
26
|
-
class MessageForStore extends Schema.Union(MessagePortReady, ContentscriptListening) {
|
27
|
-
}
|
28
|
-
DevtoolsWindowMessage.MessageForStore = MessageForStore;
|
29
|
-
class MessageForContentscript extends Schema.Union(StoreReady, LoadIframe) {
|
30
|
-
}
|
31
|
-
DevtoolsWindowMessage.MessageForContentscript = MessageForContentscript;
|
32
|
-
})(DevtoolsWindowMessage || (DevtoolsWindowMessage = {}));
|
33
|
-
//# sourceMappingURL=devtools-window-message.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"devtools-window-message.js","sourceRoot":"","sources":["../../src/devtools/devtools-window-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;AAE/B,MAAM,KAAW,qBAAqB,CAsBrC;AAtBD,WAAiB,qBAAqB;IACpC,qGAAqG;IACrG,MAAa,gBAAiB,SAAQ,MAAM,CAAC,YAAY,CAAC,oCAAoC,EAAE;QAC9F,IAAI,EAAE,YAAY,CAAC,WAAW;QAC9B,SAAS;KACV,CAAC;KAAG;IAHQ,sCAAgB,mBAGxB,CAAA;IAEL,MAAa,sBAAuB,SAAQ,MAAM,CAAC,YAAY,CAAC,0CAA0C,EAAE,EAAE,CAAC;KAAG;IAArG,4CAAsB,yBAA+E,CAAA;IAElH,wGAAwG;IACxG,cAAc;IACd,QAAQ;IAER,MAAa,UAAW,SAAQ,MAAM,CAAC,YAAY,CAAC,8BAA8B,EAAE,EAAE,CAAC;KAAG;IAA7E,gCAAU,aAAmE,CAAA;IAE1F,MAAa,UAAW,SAAQ,MAAM,CAAC,YAAY,CAAC,8BAA8B,EAAE;QAClF,SAAS;KACV,CAAC;KAAG;IAFQ,gCAAU,aAElB,CAAA;IAEL,MAAa,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;KAAG;IAAjF,qCAAe,kBAAkE,CAAA;IAE9F,MAAa,uBAAwB,SAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;KAAG;IAAvE,6CAAuB,0BAAgD,CAAA;AACtF,CAAC,EAtBgB,qBAAqB,KAArB,qBAAqB,QAsBrC"}
|
package/dist/devtools/index.d.ts
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
import type { Effect, Scope } from '@livestore/utils/effect';
|
2
|
-
import { Schema, WebChannel } from '@livestore/utils/effect';
|
3
|
-
export * from './devtools-messages.js';
|
4
|
-
export * from './devtools-window-message.js';
|
5
|
-
export * from './devtools-bridge.js';
|
6
|
-
export declare namespace WebBridge {
|
7
|
-
const AppHostReady_base: Schema.TaggedStruct<"LSD.WebBridge.AppHostReady", {
|
8
|
-
appHostId: typeof Schema.String;
|
9
|
-
isLeader: typeof Schema.Boolean;
|
10
|
-
}>;
|
11
|
-
export class AppHostReady extends AppHostReady_base {
|
12
|
-
}
|
13
|
-
const DevtoolsReady_base: Schema.TaggedStruct<"LSD.WebBridge.DevtoolsReady", {
|
14
|
-
devtoolsId: typeof Schema.String;
|
15
|
-
}>;
|
16
|
-
export class DevtoolsReady extends DevtoolsReady_base {
|
17
|
-
}
|
18
|
-
const ConnectToDevtools_base: Schema.TaggedStruct<"LSD.WebBridge.ConnectToDevtools", {
|
19
|
-
devtoolsId: typeof Schema.String;
|
20
|
-
appHostId: typeof Schema.String;
|
21
|
-
/**
|
22
|
-
* Given the m:n relationship between devtools and app hosts and the fact that appHostIds are usually
|
23
|
-
* sticky, we generate a new unique id for the lifetime of the web bridge.
|
24
|
-
*/
|
25
|
-
webBridgeId: typeof Schema.String;
|
26
|
-
isLeader: typeof Schema.Boolean;
|
27
|
-
storeId: typeof Schema.String;
|
28
|
-
}>;
|
29
|
-
export class ConnectToDevtools extends ConnectToDevtools_base {
|
30
|
-
}
|
31
|
-
const AppHostWillDisconnect_base: Schema.TaggedStruct<"LSD.WebBridge.AppHostWillDisconnect", {
|
32
|
-
appHostId: typeof Schema.String;
|
33
|
-
}>;
|
34
|
-
export class AppHostWillDisconnect extends AppHostWillDisconnect_base {
|
35
|
-
}
|
36
|
-
const All_base: Schema.Union<[typeof AppHostReady, typeof DevtoolsReady, typeof ConnectToDevtools, typeof AppHostWillDisconnect]>;
|
37
|
-
export class All extends All_base {
|
38
|
-
}
|
39
|
-
export const makeBroadcastChannel: (key?: string) => Effect.Effect<WebChannel.WebChannel<typeof All.Type, typeof All.Type>, never, Scope.Scope>;
|
40
|
-
export {};
|
41
|
-
}
|
42
|
-
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5D,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AAEpC,yBAAiB,SAAS,CAAC;;;;;IACzB,MAAM,OAAO,YAAa,SAAQ,iBAIhC;KAAG;;;;IAEL,MAAM,OAAO,aAAc,SAAQ,kBAEjC;KAAG;;;;QAKH;;;WAGG;;;;;IANL,MAAM,OAAO,iBAAkB,SAAQ,sBAUrC;KAAG;;;;IAEL,MAAM,OAAO,qBAAsB,SAAQ,0BAEzC;KAAG;;IAML,MAAM,OAAO,GAAI,SAAQ,QAAmF;KAAG;IAE/G,MAAM,CAAC,MAAM,oBAAoB,GAC/B,MAAM,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAKxF,CAAA;;CACL"}
|
package/dist/devtools/index.js
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
import { Schema, WebChannel } from '@livestore/utils/effect';
|
2
|
-
export * from './devtools-messages.js';
|
3
|
-
export * from './devtools-window-message.js';
|
4
|
-
export * from './devtools-bridge.js';
|
5
|
-
export var WebBridge;
|
6
|
-
(function (WebBridge) {
|
7
|
-
class AppHostReady extends Schema.TaggedStruct('LSD.WebBridge.AppHostReady', {
|
8
|
-
appHostId: Schema.String,
|
9
|
-
// storeId: Schema.String,
|
10
|
-
isLeader: Schema.Boolean,
|
11
|
-
}) {
|
12
|
-
}
|
13
|
-
WebBridge.AppHostReady = AppHostReady;
|
14
|
-
class DevtoolsReady extends Schema.TaggedStruct('LSD.WebBridge.DevtoolsReady', {
|
15
|
-
devtoolsId: Schema.String,
|
16
|
-
}) {
|
17
|
-
}
|
18
|
-
WebBridge.DevtoolsReady = DevtoolsReady;
|
19
|
-
class ConnectToDevtools extends Schema.TaggedStruct('LSD.WebBridge.ConnectToDevtools', {
|
20
|
-
devtoolsId: Schema.String,
|
21
|
-
appHostId: Schema.String,
|
22
|
-
/**
|
23
|
-
* Given the m:n relationship between devtools and app hosts and the fact that appHostIds are usually
|
24
|
-
* sticky, we generate a new unique id for the lifetime of the web bridge.
|
25
|
-
*/
|
26
|
-
webBridgeId: Schema.String,
|
27
|
-
isLeader: Schema.Boolean,
|
28
|
-
storeId: Schema.String,
|
29
|
-
}) {
|
30
|
-
}
|
31
|
-
WebBridge.ConnectToDevtools = ConnectToDevtools;
|
32
|
-
class AppHostWillDisconnect extends Schema.TaggedStruct('LSD.WebBridge.AppHostWillDisconnect', {
|
33
|
-
appHostId: Schema.String,
|
34
|
-
}) {
|
35
|
-
}
|
36
|
-
WebBridge.AppHostWillDisconnect = AppHostWillDisconnect;
|
37
|
-
// export class DevtoolsWillDisconnect extends Schema.TaggedStruct('LSD.WebBridge.DevtoolsWillDisconnect', {
|
38
|
-
// appHostId: Schema.String,
|
39
|
-
// }) {}
|
40
|
-
class All extends Schema.Union(AppHostReady, DevtoolsReady, ConnectToDevtools, AppHostWillDisconnect) {
|
41
|
-
}
|
42
|
-
WebBridge.All = All;
|
43
|
-
WebBridge.makeBroadcastChannel = (key) => WebChannel.broadcastChannel({
|
44
|
-
channelName: `livestore-web-bridge-devtools${key ? `-${key}` : ''}`,
|
45
|
-
listenSchema: All,
|
46
|
-
sendSchema: All,
|
47
|
-
});
|
48
|
-
})(WebBridge || (WebBridge = {}));
|
49
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devtools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5D,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AAEpC,MAAM,KAAW,SAAS,CAyCzB;AAzCD,WAAiB,SAAS;IACxB,MAAa,YAAa,SAAQ,MAAM,CAAC,YAAY,CAAC,4BAA4B,EAAE;QAClF,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,0BAA0B;QAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO;KACzB,CAAC;KAAG;IAJQ,sBAAY,eAIpB,CAAA;IAEL,MAAa,aAAc,SAAQ,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAAE;QACpF,UAAU,EAAE,MAAM,CAAC,MAAM;KAC1B,CAAC;KAAG;IAFQ,uBAAa,gBAErB,CAAA;IAEL,MAAa,iBAAkB,SAAQ,MAAM,CAAC,YAAY,CAAC,iCAAiC,EAAE;QAC5F,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB;;;WAGG;QACH,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,QAAQ,EAAE,MAAM,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC;KAAG;IAVQ,2BAAiB,oBAUzB,CAAA;IAEL,MAAa,qBAAsB,SAAQ,MAAM,CAAC,YAAY,CAAC,qCAAqC,EAAE;QACpG,SAAS,EAAE,MAAM,CAAC,MAAM;KACzB,CAAC;KAAG;IAFQ,+BAAqB,wBAE7B,CAAA;IAEL,4GAA4G;IAC5G,8BAA8B;IAC9B,QAAQ;IAER,MAAa,GAAI,SAAQ,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;KAAG;IAAlG,aAAG,MAA+F,CAAA;IAElG,8BAAoB,GAAG,CAClC,GAAY,EACgF,EAAE,CAC9F,UAAU,CAAC,gBAAgB,CAAC;QAC1B,WAAW,EAAE,gCAAgC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACnE,YAAY,EAAE,GAAG;QACjB,UAAU,EAAE,GAAG;KAChB,CAAC,CAAA;AACN,CAAC,EAzCgB,SAAS,KAAT,SAAS,QAyCzB"}
|
@@ -1,4 +0,0 @@
|
|
1
|
-
import type { SynchronousDatabase } from './adapter-types.js';
|
2
|
-
import type { LiveStoreSchema } from './schema/index.js';
|
3
|
-
export declare const initializeSingletonTables: (schema: LiveStoreSchema, db: SynchronousDatabase) => void;
|
4
|
-
//# sourceMappingURL=init-singleton-tables.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"init-singleton-tables.d.ts","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAIxD,eAAO,MAAM,yBAAyB,GAAI,QAAQ,eAAe,EAAE,IAAI,mBAAmB,SAkBzF,CAAA"}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { getDefaultValuesEncoded } from './schema/schema-helpers.js';
|
2
|
-
import { prepareBindValues, sql } from './util.js';
|
3
|
-
export const initializeSingletonTables = (schema, db) => {
|
4
|
-
for (const [, tableDef] of schema.tables) {
|
5
|
-
if (tableDef.options.isSingleton) {
|
6
|
-
const defaultValues = getDefaultValuesEncoded(tableDef, undefined);
|
7
|
-
const defaultColumnNames = [...Object.keys(defaultValues), 'id'];
|
8
|
-
const columnValues = defaultColumnNames.map((name) => `$${name}`).join(', ');
|
9
|
-
const tableName = tableDef.sqliteDef.name;
|
10
|
-
const insertQuery = sql `insert into ${tableName} (${defaultColumnNames.join(', ')}) select ${columnValues} where not exists(select 1 from ${tableName} where id = 'singleton')`;
|
11
|
-
const bindValues = prepareBindValues({ ...defaultValues, id: 'singleton' }, insertQuery);
|
12
|
-
db.execute(insertQuery, bindValues);
|
13
|
-
}
|
14
|
-
}
|
15
|
-
};
|
16
|
-
//# sourceMappingURL=init-singleton-tables.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"init-singleton-tables.js","sourceRoot":"","sources":["../src/init-singleton-tables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAuB,EAAE,EAAuB,EAAE,EAAE;IAC5F,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAElE,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;YAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE5E,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAA;YACzC,MAAM,WAAW,GAAG,GAAG,CAAA,eAAe,SAAS,KAAK,kBAAkB,CAAC,IAAI,CACzE,IAAI,CACL,YAAY,YAAY,mCAAmC,SAAS,0BAA0B,CAAA;YAE/F,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,CAAA;YAExF,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { Effect } from '@livestore/utils/effect';
|
2
|
-
import type { SqliteDb } from '../adapter-types.js';
|
3
|
-
import type { LiveStoreSchema } from '../schema/mod.js';
|
4
|
-
import { EventId } from '../schema/mod.js';
|
5
|
-
import type { MaterializeEvent } from './types.js';
|
6
|
-
export declare const makeMaterializeEvent: ({ schema, dbState: db, dbEventlog, }: {
|
7
|
-
schema: LiveStoreSchema;
|
8
|
-
dbState: SqliteDb;
|
9
|
-
dbEventlog: SqliteDb;
|
10
|
-
}) => Effect.Effect<MaterializeEvent, never>;
|
11
|
-
export declare const rollback: ({ db, dbEventlog, eventIdsToRollback, }: {
|
12
|
-
db: SqliteDb;
|
13
|
-
dbEventlog: SqliteDb;
|
14
|
-
eventIdsToRollback: EventId.EventId[];
|
15
|
-
}) => Effect.Effect<void, never, never>;
|
16
|
-
//# sourceMappingURL=apply-event.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"apply-event.d.ts","sourceRoot":"","sources":["../../src/leader-thread/apply-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAyB,MAAM,yBAAyB,CAAA;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,oBAAoB,GAAI,sCAIlC;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,QAAQ,CAAA;IACjB,UAAU,EAAE,QAAQ,CAAA;CACrB,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAiGrC,CAAA;AAEJ,eAAO,MAAM,QAAQ,GAAI,yCAItB;IACD,EAAE,EAAE,QAAQ,CAAA;IACZ,UAAU,EAAE,QAAQ,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;CACtC,sCAsCE,CAAA"}
|
@@ -1,103 +0,0 @@
|
|
1
|
-
import { LS_DEV, shouldNeverHappen } from '@livestore/utils';
|
2
|
-
import { Effect, ReadonlyArray, Schema } from '@livestore/utils/effect';
|
3
|
-
import { getExecArgsFromEvent } from '../materializer-helper.js';
|
4
|
-
import { EventId, getEventDef, SystemTables } from '../schema/mod.js';
|
5
|
-
import { insertRow } from '../sql-queries/index.js';
|
6
|
-
import { sql } from '../util.js';
|
7
|
-
import { execSql, execSqlPrepared } from './connection.js';
|
8
|
-
import * as Eventlog from './eventlog.js';
|
9
|
-
export const makeMaterializeEvent = ({ schema, dbState: db, dbEventlog, }) => Effect.gen(function* () {
|
10
|
-
const eventDefSchemaHashMap = new Map(
|
11
|
-
// TODO Running `Schema.hash` can be a bottleneck for larger schemas. There is an opportunity to run this
|
12
|
-
// at build time and lookup the pre-computed hash at runtime.
|
13
|
-
// Also see https://github.com/Effect-TS/effect/issues/2719
|
14
|
-
[...schema.eventsDefsMap.entries()].map(([k, v]) => [k, Schema.hash(v.schema)]));
|
15
|
-
return (eventEncoded, options) => Effect.gen(function* () {
|
16
|
-
const skipEventlog = options?.skipEventlog ?? false;
|
17
|
-
const eventName = eventEncoded.name;
|
18
|
-
const eventDef = getEventDef(schema, eventName);
|
19
|
-
const execArgsArr = getExecArgsFromEvent({
|
20
|
-
eventDef,
|
21
|
-
event: { decoded: undefined, encoded: eventEncoded },
|
22
|
-
});
|
23
|
-
// NOTE we might want to bring this back if we want to debug no-op events
|
24
|
-
// const makeExecuteOptions = (statementSql: string, bindValues: any) => ({
|
25
|
-
// onRowsChanged: (rowsChanged: number) => {
|
26
|
-
// if (rowsChanged === 0) {
|
27
|
-
// console.warn(`Event "${eventDef.name}" did not affect any rows:`, statementSql, bindValues)
|
28
|
-
// }
|
29
|
-
// },
|
30
|
-
// })
|
31
|
-
// console.group('[@livestore/common:leader-thread:materializeEvent]', { eventName })
|
32
|
-
const session = db.session();
|
33
|
-
for (const { statementSql, bindValues } of execArgsArr) {
|
34
|
-
// console.debug(eventName, statementSql, bindValues)
|
35
|
-
// TODO use cached prepared statements instead of exec
|
36
|
-
yield* execSqlPrepared(db, statementSql, bindValues);
|
37
|
-
}
|
38
|
-
const changeset = session.changeset();
|
39
|
-
session.finish();
|
40
|
-
// TODO use prepared statements
|
41
|
-
yield* execSql(db, ...insertRow({
|
42
|
-
tableName: SystemTables.SESSION_CHANGESET_META_TABLE,
|
43
|
-
columns: SystemTables.sessionChangesetMetaTable.sqliteDef.columns,
|
44
|
-
values: {
|
45
|
-
idGlobal: eventEncoded.id.global,
|
46
|
-
idClient: eventEncoded.id.client,
|
47
|
-
// NOTE the changeset will be empty (i.e. null) for no-op events
|
48
|
-
changeset: changeset ?? null,
|
49
|
-
debug: LS_DEV ? execArgsArr : null,
|
50
|
-
},
|
51
|
-
}));
|
52
|
-
// console.groupEnd()
|
53
|
-
// write to eventlog
|
54
|
-
if (skipEventlog === false) {
|
55
|
-
const eventName = eventEncoded.name;
|
56
|
-
const eventDefSchemaHash = eventDefSchemaHashMap.get(eventName) ?? shouldNeverHappen(`Unknown event definition: ${eventName}`);
|
57
|
-
yield* Eventlog.insertIntoEventlog(eventEncoded, dbEventlog, eventDefSchemaHash, eventEncoded.clientId, eventEncoded.sessionId);
|
58
|
-
}
|
59
|
-
else {
|
60
|
-
// console.debug('[@livestore/common:leader-thread] skipping eventlog write', mutation, statementSql, bindValues)
|
61
|
-
}
|
62
|
-
return {
|
63
|
-
sessionChangeset: changeset
|
64
|
-
? {
|
65
|
-
_tag: 'sessionChangeset',
|
66
|
-
data: changeset,
|
67
|
-
debug: LS_DEV ? execArgsArr : null,
|
68
|
-
}
|
69
|
-
: { _tag: 'no-op' },
|
70
|
-
};
|
71
|
-
}).pipe(Effect.withSpan(`@livestore/common:leader-thread:materializeEvent`, {
|
72
|
-
attributes: {
|
73
|
-
eventName: eventEncoded.name,
|
74
|
-
mutationId: eventEncoded.id,
|
75
|
-
'span.label': `${EventId.toString(eventEncoded.id)} ${eventEncoded.name}`,
|
76
|
-
},
|
77
|
-
}));
|
78
|
-
});
|
79
|
-
export const rollback = ({ db, dbEventlog, eventIdsToRollback, }) => Effect.gen(function* () {
|
80
|
-
const rollbackEvents = db
|
81
|
-
.select(sql `SELECT * FROM ${SystemTables.SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`).join(', ')})`)
|
82
|
-
.map((_) => ({ id: { global: _.idGlobal, client: _.idClient }, changeset: _.changeset, debug: _.debug }))
|
83
|
-
.toSorted((a, b) => EventId.compare(a.id, b.id));
|
84
|
-
// Apply changesets in reverse order
|
85
|
-
for (let i = rollbackEvents.length - 1; i >= 0; i--) {
|
86
|
-
const { changeset } = rollbackEvents[i];
|
87
|
-
if (changeset !== null) {
|
88
|
-
db.makeChangeset(changeset).invert().apply();
|
89
|
-
}
|
90
|
-
}
|
91
|
-
const eventIdPairChunks = ReadonlyArray.chunksOf(100)(eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`));
|
92
|
-
// Delete the changeset rows
|
93
|
-
for (const eventIdPairChunk of eventIdPairChunks) {
|
94
|
-
db.execute(sql `DELETE FROM ${SystemTables.SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
|
95
|
-
}
|
96
|
-
// Delete the eventlog rows
|
97
|
-
for (const eventIdPairChunk of eventIdPairChunks) {
|
98
|
-
dbEventlog.execute(sql `DELETE FROM ${SystemTables.EVENTLOG_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`);
|
99
|
-
}
|
100
|
-
}).pipe(Effect.withSpan('@livestore/common:LeaderSyncProcessor:rollback', {
|
101
|
-
attributes: { count: eventIdsToRollback.length },
|
102
|
-
}));
|
103
|
-
//# sourceMappingURL=apply-event.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"apply-event.js","sourceRoot":"","sources":["../../src/leader-thread/apply-event.ts"],"names":[],"mappings":"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"}
|
package/dist/mutation.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import type { LiveStoreSchema } from './schema/index.js';
|
2
|
-
import type { MutationDef, MutationEvent } from './schema/mutations.js';
|
3
|
-
import type { PreparedBindValues } from './util.js';
|
4
|
-
export declare const getExecArgsFromMutation: ({ mutationDef, mutationEventDecoded, }: {
|
5
|
-
mutationDef: MutationDef.Any;
|
6
|
-
mutationEventDecoded: MutationEvent.Any;
|
7
|
-
}) => ReadonlyArray<{
|
8
|
-
statementSql: string;
|
9
|
-
bindValues: PreparedBindValues;
|
10
|
-
writeTables: ReadonlySet<string> | undefined;
|
11
|
-
}>;
|
12
|
-
export declare const makeShouldExcludeMutationFromLog: (schema: LiveStoreSchema) => (mutationName: string, mutationEventDecoded: MutationEvent.Any) => boolean;
|
13
|
-
export declare const replaceSessionIdSymbol: (bindValues: Record<string, unknown> | ReadonlyArray<unknown>, sessionId: string) => void;
|
14
|
-
//# sourceMappingURL=mutation.d.ts.map
|
package/dist/mutation.d.ts.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,eAAO,MAAM,uBAAuB,GAAI,wCAGrC;IACD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAA;IAC5B,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAA;CACxC,KAAG,aAAa,CAAC;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C,CAiCA,CAAA;AAED,eAAO,MAAM,gCAAgC,WAAyB,eAAe,oBAO7D,MAAM,wBAAwB,aAAa,CAAC,GAAG,KAAG,OAQxE,CAAA;AAIF,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,EAC5D,WAAW,MAAM,SAGlB,CAAA"}
|
package/dist/mutation.js
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
import { memoizeByRef, shouldNeverHappen } from '@livestore/utils';
|
2
|
-
import { Schema } from '@livestore/utils/effect';
|
3
|
-
import { SessionIdSymbol } from './adapter-types.js';
|
4
|
-
import { prepareBindValues } from './util.js';
|
5
|
-
export const getExecArgsFromMutation = ({ mutationDef, mutationEventDecoded, }) => {
|
6
|
-
let statementRes;
|
7
|
-
switch (typeof mutationDef.sql) {
|
8
|
-
case 'function': {
|
9
|
-
const res = mutationDef.sql(mutationEventDecoded.args);
|
10
|
-
statementRes = Array.isArray(res) ? res : [res];
|
11
|
-
break;
|
12
|
-
}
|
13
|
-
case 'string': {
|
14
|
-
statementRes = [mutationDef.sql];
|
15
|
-
break;
|
16
|
-
}
|
17
|
-
default: {
|
18
|
-
statementRes = mutationDef.sql;
|
19
|
-
break;
|
20
|
-
}
|
21
|
-
}
|
22
|
-
return statementRes.map((statementRes) => {
|
23
|
-
const statementSql = typeof statementRes === 'string' ? statementRes : statementRes.sql;
|
24
|
-
const bindValues = typeof statementRes === 'string'
|
25
|
-
? Schema.encodeUnknownSync(mutationDef.schema)(mutationEventDecoded.args)
|
26
|
-
: statementRes.bindValues;
|
27
|
-
const writeTables = typeof statementRes === 'string' ? undefined : statementRes.writeTables;
|
28
|
-
return { statementSql, bindValues: prepareBindValues(bindValues ?? {}, statementSql), writeTables };
|
29
|
-
});
|
30
|
-
};
|
31
|
-
export const makeShouldExcludeMutationFromLog = memoizeByRef((schema) => {
|
32
|
-
const migrationOptions = schema.migrationOptions;
|
33
|
-
const mutationLogExclude = migrationOptions.strategy === 'from-mutation-log'
|
34
|
-
? (migrationOptions.excludeMutations ?? new Set(['livestore.RawSql']))
|
35
|
-
: new Set(['livestore.RawSql']);
|
36
|
-
return (mutationName, mutationEventDecoded) => {
|
37
|
-
if (mutationLogExclude.has(mutationName))
|
38
|
-
return true;
|
39
|
-
const mutationDef = schema.mutations.get(mutationName) ?? shouldNeverHappen(`Unknown mutation: ${mutationName}`);
|
40
|
-
const execArgsArr = getExecArgsFromMutation({ mutationDef, mutationEventDecoded });
|
41
|
-
return execArgsArr.some((_) => _.statementSql.includes('__livestore'));
|
42
|
-
};
|
43
|
-
});
|
44
|
-
// NOTE we should explore whether there is a more elegant solution
|
45
|
-
// e.g. by leveraging the schema to replace the sessionIdSymbol
|
46
|
-
export const replaceSessionIdSymbol = (bindValues, sessionId) => {
|
47
|
-
deepReplaceValue(bindValues, SessionIdSymbol, sessionId);
|
48
|
-
};
|
49
|
-
const deepReplaceValue = (input, searchValue, replaceValue) => {
|
50
|
-
if (Array.isArray(input)) {
|
51
|
-
for (const i in input) {
|
52
|
-
if (input[i] === searchValue) {
|
53
|
-
input[i] = replaceValue;
|
54
|
-
}
|
55
|
-
else {
|
56
|
-
deepReplaceValue(input[i], searchValue, replaceValue);
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
else if (typeof input === 'object' && input !== null) {
|
61
|
-
for (const key in input) {
|
62
|
-
if (input[key] === searchValue) {
|
63
|
-
input[key] = replaceValue;
|
64
|
-
}
|
65
|
-
else {
|
66
|
-
deepReplaceValue(input[key], searchValue, replaceValue);
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
};
|
71
|
-
//# sourceMappingURL=mutation.js.map
|
package/dist/mutation.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"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"}
|