@livestore/livestore 0.4.0-dev.1 → 0.4.0-dev.10

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 (58) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/effect/LiveStore.d.ts.map +1 -1
  3. package/dist/effect/LiveStore.js +2 -4
  4. package/dist/effect/LiveStore.js.map +1 -1
  5. package/dist/live-queries/db-query.d.ts.map +1 -1
  6. package/dist/live-queries/db-query.js +7 -4
  7. package/dist/live-queries/db-query.js.map +1 -1
  8. package/dist/live-queries/db-query.test.js +13 -7
  9. package/dist/live-queries/db-query.test.js.map +1 -1
  10. package/dist/mod.d.ts +1 -1
  11. package/dist/mod.d.ts.map +1 -1
  12. package/dist/mod.js +1 -1
  13. package/dist/mod.js.map +1 -1
  14. package/dist/reactive.d.ts +10 -10
  15. package/dist/reactive.d.ts.map +1 -1
  16. package/dist/reactive.js +36 -27
  17. package/dist/reactive.js.map +1 -1
  18. package/dist/reactive.test.js +115 -0
  19. package/dist/reactive.test.js.map +1 -1
  20. package/dist/store/create-store.d.ts.map +1 -1
  21. package/dist/store/create-store.js +3 -3
  22. package/dist/store/create-store.js.map +1 -1
  23. package/dist/store/store-types.d.ts +2 -2
  24. package/dist/store/store-types.d.ts.map +1 -1
  25. package/dist/store/store-types.js.map +1 -1
  26. package/dist/store/store.d.ts +21 -2
  27. package/dist/store/store.d.ts.map +1 -1
  28. package/dist/store/store.js +134 -88
  29. package/dist/store/store.js.map +1 -1
  30. package/dist/utils/dev.d.ts +3 -0
  31. package/dist/utils/dev.d.ts.map +1 -1
  32. package/dist/utils/dev.js.map +1 -1
  33. package/dist/utils/tests/fixture.d.ts.map +1 -1
  34. package/dist/utils/tests/fixture.js +2 -1
  35. package/dist/utils/tests/fixture.js.map +1 -1
  36. package/dist/utils/tests/otel.d.ts +15 -14
  37. package/dist/utils/tests/otel.d.ts.map +1 -1
  38. package/dist/utils/tests/otel.js +20 -15
  39. package/dist/utils/tests/otel.js.map +1 -1
  40. package/package.json +7 -7
  41. package/src/ambient.d.ts +3 -3
  42. package/src/effect/LiveStore.ts +2 -4
  43. package/src/live-queries/__snapshots__/db-query.test.ts.snap +268 -131
  44. package/src/live-queries/db-query.test.ts +13 -7
  45. package/src/live-queries/db-query.ts +7 -4
  46. package/src/mod.ts +2 -0
  47. package/src/reactive.test.ts +150 -1
  48. package/src/reactive.ts +47 -39
  49. package/src/store/create-store.ts +12 -4
  50. package/src/store/store-types.ts +5 -2
  51. package/src/store/store.ts +204 -145
  52. package/src/utils/dev.ts +5 -0
  53. package/src/utils/tests/fixture.ts +2 -1
  54. package/src/utils/tests/otel.ts +31 -20
  55. package/dist/store/store-shutdown.test.d.ts +0 -2
  56. package/dist/store/store-shutdown.test.d.ts.map +0 -1
  57. package/dist/store/store-shutdown.test.js +0 -103
  58. package/dist/store/store-shutdown.test.js.map +0 -1
@@ -1,5 +1,6 @@
1
+ import { omitUndefineds } from '@livestore/utils';
1
2
  import { identity } from '@livestore/utils/effect';
2
- export const getSimplifiedRootSpan = (exporter, mapAttributes) => {
3
+ const buildSimplifiedRootSpans = (exporter, rootSpanName, mapAttributes) => {
3
4
  const spans = exporter.getFinishedSpans();
4
5
  const spansMap = new Map(spans.map((span) => [span.spanContext().spanId, { span, children: [] }]));
5
6
  const mapAttributesfn = mapAttributes ?? identity;
@@ -10,11 +11,10 @@ export const getSimplifiedRootSpan = (exporter, mapAttributes) => {
10
11
  parentSpan.children.push(nestedSpan);
11
12
  }
12
13
  });
13
- const createStoreSpanData = spans.find((_) => _.name === 'createStore');
14
- if (createStoreSpanData === undefined) {
15
- throw new Error(`Could not find the root span named 'createStore'. Available spans: ${spans.map((s) => s.name).join(', ')}`);
14
+ const rootSpanDataList = spans.filter((_) => _.name === rootSpanName);
15
+ if (rootSpanDataList.length === 0) {
16
+ throw new Error(`Could not find any root spans named '${rootSpanName}'. Available spans: ${spans.map((s) => s.name).join(', ')}`);
16
17
  }
17
- const rootSpan = spansMap.get(createStoreSpanData.spanContext().spanId);
18
18
  const simplifySpanRec = (span) => omitEmpty({
19
19
  _name: span.span.name,
20
20
  attributes: mapAttributesfn(span.span.attributes),
@@ -23,15 +23,20 @@ export const getSimplifiedRootSpan = (exporter, mapAttributes) => {
23
23
  // .sort((a, b) => compareHrTime(a.span.startTime, b.span.startTime))
24
24
  .map(simplifySpanRec),
25
25
  });
26
- // console.log('rootSpan', rootSpan.span)
27
- // console.dir(
28
- // spans.map((_) => [_.spanContext().spanId, _.name, _.attributes, _.parentSpanId]),
29
- // { depth: 10 },
30
- // )
31
- const simplifiedRootSpan = simplifySpanRec(rootSpan);
32
- // console.log('simplifiedRootSpan', simplifiedRootSpan)
33
- // writeFileSync('tmp/trace.json', JSON.stringify(toTraceFile(spans), null, 2))
34
- return simplifiedRootSpan;
26
+ return rootSpanDataList.map((rootSpanData) => {
27
+ const rootSpan = spansMap.get(rootSpanData.spanContext().spanId);
28
+ return simplifySpanRec(rootSpan);
29
+ });
30
+ };
31
+ export const getSimplifiedRootSpan = (exporter, rootSpanName, mapAttributes) => {
32
+ const results = buildSimplifiedRootSpans(exporter, rootSpanName, mapAttributes);
33
+ const firstResult = results[0];
34
+ if (!firstResult)
35
+ throw new Error(`Could not find the root span named '${rootSpanName}'.`);
36
+ return firstResult;
37
+ };
38
+ export const getAllSimplifiedRootSpans = (exporter, rootSpanName, mapAttributes) => {
39
+ return buildSimplifiedRootSpans(exporter, rootSpanName, mapAttributes);
35
40
  };
36
41
  // const compareHrTime = (a: [number, numndber], b: [number, number]) => {
37
42
  // if (a[0] !== b[0]) return a[0] - b[0]
@@ -69,7 +74,7 @@ export const toTraceFile = (spans) => {
69
74
  spans: spans.map((span) => ({
70
75
  traceId: span.spanContext().traceId,
71
76
  spanId: span.spanContext().spanId,
72
- ...(span.parentSpanContext?.spanId ? { parentSpanId: span.parentSpanContext.spanId } : {}),
77
+ ...omitUndefineds({ parentSpanId: span.parentSpanContext?.spanId }),
73
78
  // traceState: span.spanContext().traceState ?? '',
74
79
  name: span.name,
75
80
  kind: 'SPAN_KIND_INTERNAL',
@@ -1 +1 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../../src/utils/tests/otel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../../src/utils/tests/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAQlD,MAAM,wBAAwB,GAAG,CAC/B,QAA8B,EAC9B,YAAoB,EACpB,aAAsD,EAC9B,EAAE;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAA;IACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAqB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAEtH,MAAM,eAAe,GAAG,aAAa,IAAI,QAAQ,CAAA;IAEjD,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAA;QAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IACrE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,wCAAwC,YAAY,uBAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjH,CAAA;IACH,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,IAAgB,EAAwB,EAAE,CACjE,SAAS,CAAC;QACR,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACrB,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC;YACzD,qEAAqE;aACpE,GAAG,CAAC,eAAe,CAAC;KACxB,CAAC,CAAA;IAEJ,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,MAAM,CAAE,CAAA;QACjE,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAA8B,EAC9B,YAAoB,EACpB,aAAsD,EAChC,EAAE;IACxB,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;IAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9B,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,YAAY,IAAI,CAAC,CAAA;IAC1F,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,QAA8B,EAC9B,YAAoB,EACpB,aAAsD,EAC9B,EAAE;IAC1B,OAAO,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;AACxE,CAAC,CAAA;AAED,0EAA0E;AAC1E,0CAA0C;AAC1C,uBAAuB;AACvB,IAAI;AAEJ,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAQ,EAAE,CAAA;IACtB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IACE,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAChC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAqB,EAAE,EAAE;IACnD,MAAM,cAAc,GAAG,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACrH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,QAAQ,EAAE;oBACR,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,cAAc;4BACnB,KAAK,EAAE;gCACL,WAAW,EAAE,MAAM;6BACpB;yBACF;qBACF;oBACD,sBAAsB,EAAE,CAAC;iBAC1B;gBACD,2BAA2B,EAAE;oBAC3B;wBACE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC1B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO;4BACnC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;4BACjC,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;4BACnE,mDAAmD;4BACnD,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,oBAAoB;4BAC1B,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;4BACjD,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;4BAC7C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gCACjE,GAAG;gCACH,KAAK,EACH,OAAO,KAAK,KAAK,QAAQ;oCACvB,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;oCACxB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;wCACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;4CACvB,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;4CACrB,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;wCAC1B,CAAC,CAAC,OAAO,KAAK,KAAK,SAAS;4CAC1B,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;4CACtB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;6BACjD,CAAC,CAAC;4BACH,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,IAAI,CAAC;4BACxD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,CAAC;4BAChD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;4BAC9C,MAAM,EAAE;gCACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gCACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;6BACnC;yBACF,CAAC,CAAC;wBACH,sBAAsB,EAAE;4BACtB,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/livestore",
3
- "version": "0.4.0-dev.1",
3
+ "version": "0.4.0-dev.10",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -11,17 +11,17 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@opentelemetry/api": "1.9.0",
14
- "@livestore/common": "0.4.0-dev.1",
15
- "@livestore/utils": "0.4.0-dev.1"
14
+ "@livestore/utils": "0.4.0-dev.10",
15
+ "@livestore/common": "0.4.0-dev.10"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@opentelemetry/sdk-trace-base": "^2.0.1",
19
19
  "jsdom": "^26.1.0",
20
- "typescript": "^5.9.2",
21
- "vite": "^7.0.6",
20
+ "typescript": "5.9.2",
21
+ "vite": "7.1.7",
22
22
  "vitest": "3.2.4",
23
- "@livestore/utils-dev": "0.4.0-dev.1",
24
- "@livestore/adapter-web": "0.4.0-dev.1"
23
+ "@livestore/adapter-web": "0.4.0-dev.10",
24
+ "@livestore/utils-dev": "0.4.0-dev.10"
25
25
  },
26
26
  "files": [
27
27
  "package.json",
package/src/ambient.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- interface Window {
2
- [key: `__debug${string}`]: any
3
- }
1
+ // interface Window {
2
+ // [key: `__debug${string}`]: any
3
+ // }
4
4
 
5
5
  var __debugLiveStore: any
6
6
  var __debugLiveStoreUtils: any
@@ -1,5 +1,6 @@
1
1
  import type { UnexpectedError } from '@livestore/common'
2
2
  import type { LiveStoreSchema } from '@livestore/common/schema'
3
+ import { omitUndefineds } from '@livestore/utils'
3
4
  import type { Cause, OtelTracer, Scope } from '@livestore/utils/effect'
4
5
  import { Deferred, Duration, Effect, Layer, pipe } from '@livestore/utils/effect'
5
6
 
@@ -25,12 +26,9 @@ export const makeLiveStoreContext = <TSchema extends LiveStoreSchema, TContext =
25
26
  const store = yield* createStore({
26
27
  schema,
27
28
  storeId,
28
- context,
29
- boot,
30
29
  adapter,
31
- disableDevtools,
32
- onBootStatus,
33
30
  batchUpdates,
31
+ ...omitUndefineds({ context, boot, disableDevtools, onBootStatus }),
34
32
  })
35
33
 
36
34
  globalThis.__debugLiveStore ??= {}
@@ -40,25 +40,6 @@ exports[`otel > QueryBuilder subscription - basic functionality 1`] = `
40
40
  },
41
41
  {
42
42
  "_name": "LiveStore:commits",
43
- "children": [
44
- {
45
- "_name": "LiveStore:commit",
46
- "attributes": {
47
- "livestore.eventTags": [
48
- "todo.created",
49
- ],
50
- "livestore.eventsCount": 1,
51
- },
52
- "children": [
53
- {
54
- "_name": "livestore.in-memory-db:execute",
55
- "attributes": {
56
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
57
- },
58
- },
59
- ],
60
- },
61
- ],
62
43
  },
63
44
  {
64
45
  "_name": "LiveStore:queries",
@@ -113,6 +94,45 @@ exports[`otel > QueryBuilder subscription - basic functionality 1`] = `
113
94
  }
114
95
  `;
115
96
 
97
+ exports[`otel > QueryBuilder subscription - basic functionality 2`] = `
98
+ [
99
+ {
100
+ "_name": "LiveStore:commit",
101
+ "attributes": {
102
+ "livestore.eventTags": "[
103
+ "todo.created"
104
+ ]",
105
+ "livestore.eventsCount": 1,
106
+ },
107
+ "children": [
108
+ {
109
+ "_name": "client-session-sync-processor:push",
110
+ "attributes": {
111
+ "batchSize": 1,
112
+ "eventCounts": "{
113
+ "todo.created": 1
114
+ }",
115
+ "mergeResultTag": "advance",
116
+ },
117
+ "children": [
118
+ {
119
+ "_name": "client-session-sync-processor:materialize-event",
120
+ "children": [
121
+ {
122
+ "_name": "livestore.in-memory-db:execute",
123
+ "attributes": {
124
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
125
+ },
126
+ },
127
+ ],
128
+ },
129
+ ],
130
+ },
131
+ ],
132
+ },
133
+ ]
134
+ `;
135
+
116
136
  exports[`otel > QueryBuilder subscription - direct table subscription 1`] = `
117
137
  {
118
138
  "_name": "createStore",
@@ -153,25 +173,6 @@ exports[`otel > QueryBuilder subscription - direct table subscription 1`] = `
153
173
  },
154
174
  {
155
175
  "_name": "LiveStore:commits",
156
- "children": [
157
- {
158
- "_name": "LiveStore:commit",
159
- "attributes": {
160
- "livestore.eventTags": [
161
- "todo.created",
162
- ],
163
- "livestore.eventsCount": 1,
164
- },
165
- "children": [
166
- {
167
- "_name": "livestore.in-memory-db:execute",
168
- "attributes": {
169
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
170
- },
171
- },
172
- ],
173
- },
174
- ],
175
176
  },
176
177
  {
177
178
  "_name": "LiveStore:queries",
@@ -226,6 +227,45 @@ exports[`otel > QueryBuilder subscription - direct table subscription 1`] = `
226
227
  }
227
228
  `;
228
229
 
230
+ exports[`otel > QueryBuilder subscription - direct table subscription 2`] = `
231
+ [
232
+ {
233
+ "_name": "LiveStore:commit",
234
+ "attributes": {
235
+ "livestore.eventTags": "[
236
+ "todo.created"
237
+ ]",
238
+ "livestore.eventsCount": 1,
239
+ },
240
+ "children": [
241
+ {
242
+ "_name": "client-session-sync-processor:push",
243
+ "attributes": {
244
+ "batchSize": 1,
245
+ "eventCounts": "{
246
+ "todo.created": 1
247
+ }",
248
+ "mergeResultTag": "advance",
249
+ },
250
+ "children": [
251
+ {
252
+ "_name": "client-session-sync-processor:materialize-event",
253
+ "children": [
254
+ {
255
+ "_name": "livestore.in-memory-db:execute",
256
+ "attributes": {
257
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
258
+ },
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ },
264
+ ],
265
+ },
266
+ ]
267
+ `;
268
+
229
269
  exports[`otel > QueryBuilder subscription - unsubscribe functionality 1`] = `
230
270
  {
231
271
  "_name": "createStore",
@@ -273,42 +313,6 @@ exports[`otel > QueryBuilder subscription - unsubscribe functionality 1`] = `
273
313
  },
274
314
  {
275
315
  "_name": "LiveStore:commits",
276
- "children": [
277
- {
278
- "_name": "LiveStore:commit",
279
- "attributes": {
280
- "livestore.eventTags": [
281
- "todo.created",
282
- ],
283
- "livestore.eventsCount": 1,
284
- },
285
- "children": [
286
- {
287
- "_name": "livestore.in-memory-db:execute",
288
- "attributes": {
289
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
290
- },
291
- },
292
- ],
293
- },
294
- {
295
- "_name": "LiveStore:commit",
296
- "attributes": {
297
- "livestore.eventTags": [
298
- "todo.created",
299
- ],
300
- "livestore.eventsCount": 1,
301
- },
302
- "children": [
303
- {
304
- "_name": "livestore.in-memory-db:execute",
305
- "attributes": {
306
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
307
- },
308
- },
309
- ],
310
- },
311
- ],
312
316
  },
313
317
  {
314
318
  "_name": "LiveStore:queries",
@@ -389,6 +393,79 @@ exports[`otel > QueryBuilder subscription - unsubscribe functionality 1`] = `
389
393
  }
390
394
  `;
391
395
 
396
+ exports[`otel > QueryBuilder subscription - unsubscribe functionality 2`] = `
397
+ [
398
+ {
399
+ "_name": "LiveStore:commit",
400
+ "attributes": {
401
+ "livestore.eventTags": "[
402
+ "todo.created"
403
+ ]",
404
+ "livestore.eventsCount": 1,
405
+ },
406
+ "children": [
407
+ {
408
+ "_name": "client-session-sync-processor:push",
409
+ "attributes": {
410
+ "batchSize": 1,
411
+ "eventCounts": "{
412
+ "todo.created": 1
413
+ }",
414
+ "mergeResultTag": "advance",
415
+ },
416
+ "children": [
417
+ {
418
+ "_name": "client-session-sync-processor:materialize-event",
419
+ "children": [
420
+ {
421
+ "_name": "livestore.in-memory-db:execute",
422
+ "attributes": {
423
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
424
+ },
425
+ },
426
+ ],
427
+ },
428
+ ],
429
+ },
430
+ ],
431
+ },
432
+ {
433
+ "_name": "LiveStore:commit",
434
+ "attributes": {
435
+ "livestore.eventTags": "[
436
+ "todo.created"
437
+ ]",
438
+ "livestore.eventsCount": 1,
439
+ },
440
+ "children": [
441
+ {
442
+ "_name": "client-session-sync-processor:push",
443
+ "attributes": {
444
+ "batchSize": 1,
445
+ "eventCounts": "{
446
+ "todo.created": 1
447
+ }",
448
+ "mergeResultTag": "advance",
449
+ },
450
+ "children": [
451
+ {
452
+ "_name": "client-session-sync-processor:materialize-event",
453
+ "children": [
454
+ {
455
+ "_name": "livestore.in-memory-db:execute",
456
+ "attributes": {
457
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
458
+ },
459
+ },
460
+ ],
461
+ },
462
+ ],
463
+ },
464
+ ],
465
+ },
466
+ ]
467
+ `;
468
+
392
469
  exports[`otel > otel 3`] = `
393
470
  {
394
471
  "_name": "createStore",
@@ -429,25 +506,6 @@ exports[`otel > otel 3`] = `
429
506
  },
430
507
  {
431
508
  "_name": "LiveStore:commits",
432
- "children": [
433
- {
434
- "_name": "LiveStore:commit",
435
- "attributes": {
436
- "livestore.eventTags": [
437
- "todo.created",
438
- ],
439
- "livestore.eventsCount": 1,
440
- },
441
- "children": [
442
- {
443
- "_name": "livestore.in-memory-db:execute",
444
- "attributes": {
445
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
446
- },
447
- },
448
- ],
449
- },
450
- ],
451
509
  },
452
510
  {
453
511
  "_name": "LiveStore:queries",
@@ -492,6 +550,45 @@ exports[`otel > otel 3`] = `
492
550
  }
493
551
  `;
494
552
 
553
+ exports[`otel > otel 4`] = `
554
+ [
555
+ {
556
+ "_name": "LiveStore:commit",
557
+ "attributes": {
558
+ "livestore.eventTags": "[
559
+ "todo.created"
560
+ ]",
561
+ "livestore.eventsCount": 1,
562
+ },
563
+ "children": [
564
+ {
565
+ "_name": "client-session-sync-processor:push",
566
+ "attributes": {
567
+ "batchSize": 1,
568
+ "eventCounts": "{
569
+ "todo.created": 1
570
+ }",
571
+ "mergeResultTag": "advance",
572
+ },
573
+ "children": [
574
+ {
575
+ "_name": "client-session-sync-processor:materialize-event",
576
+ "children": [
577
+ {
578
+ "_name": "livestore.in-memory-db:execute",
579
+ "attributes": {
580
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
581
+ },
582
+ },
583
+ ],
584
+ },
585
+ ],
586
+ },
587
+ ],
588
+ },
589
+ ]
590
+ `;
591
+
495
592
  exports[`otel > with thunks 1`] = `
496
593
  {
497
594
  "atoms": [
@@ -704,25 +801,6 @@ exports[`otel > with thunks 7`] = `
704
801
  },
705
802
  {
706
803
  "_name": "LiveStore:commits",
707
- "children": [
708
- {
709
- "_name": "LiveStore:commit",
710
- "attributes": {
711
- "livestore.eventTags": [
712
- "todo.created",
713
- ],
714
- "livestore.eventsCount": 1,
715
- },
716
- "children": [
717
- {
718
- "_name": "livestore.in-memory-db:execute",
719
- "attributes": {
720
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
721
- },
722
- },
723
- ],
724
- },
725
- ],
726
804
  },
727
805
  {
728
806
  "_name": "LiveStore:queries",
@@ -773,6 +851,45 @@ exports[`otel > with thunks 7`] = `
773
851
  }
774
852
  `;
775
853
 
854
+ exports[`otel > with thunks 8`] = `
855
+ [
856
+ {
857
+ "_name": "LiveStore:commit",
858
+ "attributes": {
859
+ "livestore.eventTags": "[
860
+ "todo.created"
861
+ ]",
862
+ "livestore.eventsCount": 1,
863
+ },
864
+ "children": [
865
+ {
866
+ "_name": "client-session-sync-processor:push",
867
+ "attributes": {
868
+ "batchSize": 1,
869
+ "eventCounts": "{
870
+ "todo.created": 1
871
+ }",
872
+ "mergeResultTag": "advance",
873
+ },
874
+ "children": [
875
+ {
876
+ "_name": "client-session-sync-processor:materialize-event",
877
+ "children": [
878
+ {
879
+ "_name": "livestore.in-memory-db:execute",
880
+ "attributes": {
881
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
882
+ },
883
+ },
884
+ ],
885
+ },
886
+ ],
887
+ },
888
+ ],
889
+ },
890
+ ]
891
+ `;
892
+
776
893
  exports[`otel > with thunks with query builder and without labels 3`] = `
777
894
  {
778
895
  "_name": "createStore",
@@ -813,25 +930,6 @@ exports[`otel > with thunks with query builder and without labels 3`] = `
813
930
  },
814
931
  {
815
932
  "_name": "LiveStore:commits",
816
- "children": [
817
- {
818
- "_name": "LiveStore:commit",
819
- "attributes": {
820
- "livestore.eventTags": [
821
- "todo.created",
822
- ],
823
- "livestore.eventsCount": 1,
824
- },
825
- "children": [
826
- {
827
- "_name": "livestore.in-memory-db:execute",
828
- "attributes": {
829
- "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
830
- },
831
- },
832
- ],
833
- },
834
- ],
835
933
  },
836
934
  {
837
935
  "_name": "LiveStore:queries",
@@ -881,3 +979,42 @@ exports[`otel > with thunks with query builder and without labels 3`] = `
881
979
  ],
882
980
  }
883
981
  `;
982
+
983
+ exports[`otel > with thunks with query builder and without labels 4`] = `
984
+ [
985
+ {
986
+ "_name": "LiveStore:commit",
987
+ "attributes": {
988
+ "livestore.eventTags": "[
989
+ "todo.created"
990
+ ]",
991
+ "livestore.eventsCount": 1,
992
+ },
993
+ "children": [
994
+ {
995
+ "_name": "client-session-sync-processor:push",
996
+ "attributes": {
997
+ "batchSize": 1,
998
+ "eventCounts": "{
999
+ "todo.created": 1
1000
+ }",
1001
+ "mergeResultTag": "advance",
1002
+ },
1003
+ "children": [
1004
+ {
1005
+ "_name": "client-session-sync-processor:materialize-event",
1006
+ "children": [
1007
+ {
1008
+ "_name": "livestore.in-memory-db:execute",
1009
+ "attributes": {
1010
+ "sql.query": "INSERT INTO 'todos' (id, text, completed) VALUES (?, ?, ?)",
1011
+ },
1012
+ },
1013
+ ],
1014
+ },
1015
+ ],
1016
+ },
1017
+ ],
1018
+ },
1019
+ ]
1020
+ `;
@@ -6,7 +6,7 @@ import { expect } from 'vitest'
6
6
 
7
7
  import * as RG from '../reactive.ts'
8
8
  import { events, makeTodoMvc, tables } from '../utils/tests/fixture.ts'
9
- import { getSimplifiedRootSpan } from '../utils/tests/otel.ts'
9
+ import { getAllSimplifiedRootSpans, getSimplifiedRootSpan } from '../utils/tests/otel.ts'
10
10
  import { computed } from './computed.ts'
11
11
  import { queryDb } from './db-query.ts'
12
12
 
@@ -83,7 +83,8 @@ Vitest.describe('otel', () => {
83
83
  Effect.tap(({ exporter, provider }) =>
84
84
  Effect.promise(async () => {
85
85
  await provider.forceFlush()
86
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
86
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
87
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
87
88
  await provider.shutdown()
88
89
  }),
89
90
  ),
@@ -139,7 +140,8 @@ Vitest.describe('otel', () => {
139
140
  Effect.tap(({ exporter, provider }) =>
140
141
  Effect.promise(async () => {
141
142
  await provider.forceFlush()
142
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
143
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
144
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
143
145
  await provider.shutdown()
144
146
  }),
145
147
  ),
@@ -183,7 +185,8 @@ Vitest.describe('otel', () => {
183
185
  Effect.tap(({ exporter, provider }) =>
184
186
  Effect.promise(async () => {
185
187
  await provider.forceFlush()
186
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
188
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
189
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
187
190
  await provider.shutdown()
188
191
  }),
189
192
  ),
@@ -228,7 +231,8 @@ Vitest.describe('otel', () => {
228
231
  Effect.tap(({ exporter, provider }) =>
229
232
  Effect.promise(async () => {
230
233
  await provider.forceFlush()
231
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
234
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
235
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
232
236
  await provider.shutdown()
233
237
  }),
234
238
  ),
@@ -283,7 +287,8 @@ Vitest.describe('otel', () => {
283
287
  Effect.tap(({ exporter, provider }) =>
284
288
  Effect.promise(async () => {
285
289
  await provider.forceFlush()
286
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
290
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
291
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
287
292
  await provider.shutdown()
288
293
  }),
289
294
  ),
@@ -324,7 +329,8 @@ Vitest.describe('otel', () => {
324
329
  Effect.tap(({ exporter, provider }) =>
325
330
  Effect.promise(async () => {
326
331
  await provider.forceFlush()
327
- expect(getSimplifiedRootSpan(exporter, mapAttributes)).toMatchSnapshot()
332
+ expect(getSimplifiedRootSpan(exporter, 'createStore', mapAttributes)).toMatchSnapshot()
333
+ expect(getAllSimplifiedRootSpans(exporter, 'LiveStore:commit', mapAttributes)).toMatchSnapshot()
328
334
  await provider.shutdown()
329
335
  }),
330
336
  ),