@livestore/livestore 0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4
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/README.md +1 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/QueryCache.d.ts +20 -0
- package/dist/QueryCache.d.ts.map +1 -0
- package/dist/QueryCache.js +61 -0
- package/dist/QueryCache.js.map +1 -0
- package/dist/SynchronousDatabaseWrapper.d.ts +36 -0
- package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -0
- package/dist/SynchronousDatabaseWrapper.js +176 -0
- package/dist/SynchronousDatabaseWrapper.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +38 -0
- package/dist/effect/LiveStore.d.ts.map +1 -0
- package/dist/effect/LiveStore.js +38 -0
- package/dist/effect/LiveStore.js.map +1 -0
- package/dist/effect/index.d.ts +2 -0
- package/dist/effect/index.d.ts.map +1 -0
- package/dist/effect/index.js +2 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/global-state.d.ts +14 -0
- package/dist/global-state.d.ts.map +1 -0
- package/dist/global-state.js +16 -0
- package/dist/global-state.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/reactive.d.ts +163 -0
- package/dist/reactive.d.ts.map +1 -0
- package/dist/reactive.js +382 -0
- package/dist/reactive.js.map +1 -0
- package/dist/reactive.test.d.ts +2 -0
- package/dist/reactive.test.d.ts.map +1 -0
- package/dist/reactive.test.js +345 -0
- package/dist/reactive.test.js.map +1 -0
- package/dist/reactiveQueries/base-class.d.ts +59 -0
- package/dist/reactiveQueries/base-class.d.ts.map +1 -0
- package/dist/reactiveQueries/base-class.js +29 -0
- package/dist/reactiveQueries/base-class.js.map +1 -0
- package/dist/reactiveQueries/graphql.d.ts +52 -0
- package/dist/reactiveQueries/graphql.d.ts.map +1 -0
- package/dist/reactiveQueries/graphql.js +136 -0
- package/dist/reactiveQueries/graphql.js.map +1 -0
- package/dist/reactiveQueries/js.d.ts +35 -0
- package/dist/reactiveQueries/js.d.ts.map +1 -0
- package/dist/reactiveQueries/js.js +57 -0
- package/dist/reactiveQueries/js.js.map +1 -0
- package/dist/reactiveQueries/sql.d.ts +49 -0
- package/dist/reactiveQueries/sql.d.ts.map +1 -0
- package/dist/reactiveQueries/sql.js +130 -0
- package/dist/reactiveQueries/sql.js.map +1 -0
- package/dist/reactiveQueries/sql.test.d.ts +2 -0
- package/dist/reactiveQueries/sql.test.d.ts.map +1 -0
- package/dist/reactiveQueries/sql.test.js +284 -0
- package/dist/reactiveQueries/sql.test.js.map +1 -0
- package/dist/row-query.d.ts +33 -0
- package/dist/row-query.d.ts.map +1 -0
- package/dist/row-query.js +84 -0
- package/dist/row-query.js.map +1 -0
- package/dist/store-context.d.ts +26 -0
- package/dist/store-context.d.ts.map +1 -0
- package/dist/store-context.js +6 -0
- package/dist/store-context.js.map +1 -0
- package/dist/store-devtools.d.ts +19 -0
- package/dist/store-devtools.d.ts.map +1 -0
- package/dist/store-devtools.js +141 -0
- package/dist/store-devtools.js.map +1 -0
- package/dist/store.d.ts +175 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +507 -0
- package/dist/store.js.map +1 -0
- package/dist/utils/data-structures.d.ts +10 -0
- package/dist/utils/data-structures.d.ts.map +1 -0
- package/dist/utils/data-structures.js +32 -0
- package/dist/utils/data-structures.js.map +1 -0
- package/dist/utils/dev.d.ts +3 -0
- package/dist/utils/dev.d.ts.map +1 -0
- package/dist/utils/dev.js +17 -0
- package/dist/utils/dev.js.map +1 -0
- package/dist/utils/otel.d.ts +4 -0
- package/dist/utils/otel.d.ts.map +1 -0
- package/dist/utils/otel.js +6 -0
- package/dist/utils/otel.js.map +1 -0
- package/dist/utils/stack-info.d.ts +10 -0
- package/dist/utils/stack-info.d.ts.map +1 -0
- package/dist/utils/stack-info.js +41 -0
- package/dist/utils/stack-info.js.map +1 -0
- package/dist/utils/stack-info.test.d.ts +2 -0
- package/dist/utils/stack-info.test.d.ts.map +1 -0
- package/dist/utils/stack-info.test.js +75 -0
- package/dist/utils/stack-info.test.js.map +1 -0
- package/dist/utils/tests/fixture.d.ts +259 -0
- package/dist/utils/tests/fixture.d.ts.map +1 -0
- package/dist/utils/tests/fixture.js +33 -0
- package/dist/utils/tests/fixture.js.map +1 -0
- package/dist/utils/tests/mod.d.ts +3 -0
- package/dist/utils/tests/mod.d.ts.map +1 -0
- package/dist/utils/tests/mod.js +3 -0
- package/dist/utils/tests/mod.js.map +1 -0
- package/dist/utils/tests/otel.d.ts +10 -0
- package/dist/utils/tests/otel.d.ts.map +1 -0
- package/dist/utils/tests/otel.js +42 -0
- package/dist/utils/tests/otel.js.map +1 -0
- package/package.json +60 -0
- package/src/QueryCache.ts +81 -0
- package/src/SynchronousDatabaseWrapper.ts +256 -0
- package/src/ambient.d.ts +10 -0
- package/src/effect/LiveStore.ts +112 -0
- package/src/effect/index.ts +8 -0
- package/src/global-state.ts +20 -0
- package/src/index.ts +64 -0
- package/src/reactive.test.ts +426 -0
- package/src/reactive.ts +661 -0
- package/src/reactiveQueries/base-class.ts +115 -0
- package/src/reactiveQueries/graphql.ts +233 -0
- package/src/reactiveQueries/js.ts +108 -0
- package/src/reactiveQueries/sql.test.ts +308 -0
- package/src/reactiveQueries/sql.ts +226 -0
- package/src/row-query.ts +200 -0
- package/src/store-context.ts +23 -0
- package/src/store-devtools.ts +217 -0
- package/src/store.ts +920 -0
- package/src/utils/data-structures.ts +36 -0
- package/src/utils/dev.ts +24 -0
- package/src/utils/otel.ts +9 -0
- package/src/utils/stack-info.test.ts +79 -0
- package/src/utils/stack-info.ts +54 -0
- package/src/utils/tests/fixture.ts +77 -0
- package/src/utils/tests/mod.ts +2 -0
- package/src/utils/tests/otel.ts +61 -0
- package/tsconfig.json +18 -0
- package/vitest.config.js +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/utils/otel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAe,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAsC,IAAY,CAAC,SAAS,CAAA;IAC5E,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAe,EAAuB,EAAE,CACjF,IAAY,CAAC,qBAA4C,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type StackInfo = {
|
|
2
|
+
frames: StackFrame[];
|
|
3
|
+
};
|
|
4
|
+
export type StackFrame = {
|
|
5
|
+
name: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const extractStackInfoFromStackTrace: (stackTrace: string) => StackInfo;
|
|
9
|
+
export declare const stackInfoToString: (stackInfo: StackInfo) => string;
|
|
10
|
+
//# sourceMappingURL=stack-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-info.d.ts","sourceRoot":"","sources":["../../src/utils/stack-info.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAqBD,eAAO,MAAM,8BAA8B,eAAgB,MAAM,KAAG,SAsBnE,CAAA;AAED,eAAO,MAAM,iBAAiB,cAAe,SAAS,KAAG,MACY,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Example stack trace:
|
|
3
|
+
|
|
4
|
+
Error
|
|
5
|
+
at https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1699550216884:18:23
|
|
6
|
+
at mountMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:12817:27)
|
|
7
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:13141:24)
|
|
8
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-4WADDZ2G.js?v=3eb66ed6:1094:29)
|
|
9
|
+
at useQuery (https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1699550216884:13:33)
|
|
10
|
+
at useAppState (https://localhost:8081/src/db/AppState.ts?t=1699550216884:17:34)
|
|
11
|
+
at useRoute (https://localhost:8081/src/db/AppState.ts?t=1699550216884:74:22)
|
|
12
|
+
at RouteLink (https://localhost:8081/src/components/Link.tsx?t=1699550216884:36:7)
|
|
13
|
+
at renderWithHooks (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:12171:26)
|
|
14
|
+
at mountIndeterminateComponent (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:14921:21)
|
|
15
|
+
|
|
16
|
+
Approach:
|
|
17
|
+
- Start filtering at `at useQuery` (including)
|
|
18
|
+
- Stop filtering at `at renderWithHooks` (excluding)
|
|
19
|
+
*/
|
|
20
|
+
export const extractStackInfoFromStackTrace = (stackTrace) => {
|
|
21
|
+
const namePattern = /at (\S+) \((.+)\)/g;
|
|
22
|
+
let match;
|
|
23
|
+
const frames = [];
|
|
24
|
+
let hasReachedStart = false;
|
|
25
|
+
while ((match = namePattern.exec(stackTrace)) !== null) {
|
|
26
|
+
const [, name, filePath] = match;
|
|
27
|
+
// NOTE No idea where this `Module.` comes from - possibly a Vite thing?
|
|
28
|
+
if ((name.startsWith('use') || name.startsWith('Module.use')) && name.endsWith('QueryRef') === false) {
|
|
29
|
+
hasReachedStart = true;
|
|
30
|
+
frames.unshift({ name: name.replace(/^Module\./, ''), filePath });
|
|
31
|
+
}
|
|
32
|
+
else if (hasReachedStart) {
|
|
33
|
+
// We've reached the end of the `use*` functions, so we're adding the component name and stop
|
|
34
|
+
frames.unshift({ name, filePath });
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return { frames };
|
|
39
|
+
};
|
|
40
|
+
export const stackInfoToString = (stackInfo) => stackInfo.frames.map((f) => `${f.name} (${f.filePath})`).join('\n');
|
|
41
|
+
//# sourceMappingURL=stack-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-info.js","sourceRoot":"","sources":["../../src/utils/stack-info.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAkB,EAAa,EAAE;IAC9E,MAAM,WAAW,GAAG,oBAAoB,CAAA;IACxC,IAAI,KAA6B,CAAA;IACjC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,IAAI,eAAe,GAAG,KAAK,CAAA;IAE3B,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAwC,CAAA;QAEnE,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;YACrG,eAAe,GAAG,IAAI,CAAA;YAEtB,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QACnE,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC3B,6FAA6F;YAC7F,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;YAClC,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAU,EAAE,CAChE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-info.test.d.ts","sourceRoot":"","sources":["../../src/utils/stack-info.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { extractStackInfoFromStackTrace } from './stack-info.js';
|
|
3
|
+
it('RouteLink stacktrace', async () => {
|
|
4
|
+
const stackTrace = `\
|
|
5
|
+
Error
|
|
6
|
+
at https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1699550216884:18:23
|
|
7
|
+
at mountMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:12817:27)
|
|
8
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:13141:24)
|
|
9
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-4WADDZ2G.js?v=3eb66ed6:1094:29)
|
|
10
|
+
at useQuery (https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1699550216884:13:33)
|
|
11
|
+
at useAppState (https://localhost:8081/src/db/AppState.ts?t=1699550216884:17:34)
|
|
12
|
+
at useRoute (https://localhost:8081/src/db/AppState.ts?t=1699550216884:74:22)
|
|
13
|
+
at RouteLink (https://localhost:8081/src/components/Link.tsx?t=1699550216884:36:7)
|
|
14
|
+
at renderWithHooks (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:12171:26)
|
|
15
|
+
at mountIndeterminateComponent (https://localhost:8081/node_modules/.vite-web/deps/chunk-M23HUTQV.js?v=3eb66ed6:14921:21)
|
|
16
|
+
`;
|
|
17
|
+
const stackInfo = extractStackInfoFromStackTrace(stackTrace);
|
|
18
|
+
// Replacing file paths for snapshot testing as they are not stable
|
|
19
|
+
stackInfo.frames.forEach((_) => (_.filePath = '__REPLACED_FOR_SNAPSHOT__'));
|
|
20
|
+
expect(stackInfo).toMatchInlineSnapshot(`
|
|
21
|
+
{
|
|
22
|
+
"frames": [
|
|
23
|
+
{
|
|
24
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
25
|
+
"name": "RouteLink",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
29
|
+
"name": "useRoute",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
33
|
+
"name": "useAppState",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
37
|
+
"name": "useQuery",
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
}
|
|
41
|
+
`);
|
|
42
|
+
});
|
|
43
|
+
it('Tracklist_ stacktrace', async () => {
|
|
44
|
+
const stackTrace = `\
|
|
45
|
+
stack Error
|
|
46
|
+
at https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1701368568351:19:23
|
|
47
|
+
at mountMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-YKTDXTVC.js?v=86daed82:12817:27)
|
|
48
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-YKTDXTVC.js?v=86daed82:13141:24)
|
|
49
|
+
at Object.useMemo (https://localhost:8081/node_modules/.vite-web/deps/chunk-7P4K3U7O.js?v=86daed82:1094:29)
|
|
50
|
+
at useQueryRef (https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1701368568351:16:29)
|
|
51
|
+
at Module.useQuery (https://localhost:8081/@fs/Users/schickling/Code/overtone/submodules/livestore/packages/@livestore/livestore/dist/react/useQuery.js?t=1701368568351:13:36)
|
|
52
|
+
at Tracklist_ (https://localhost:8081/src/components/Tracklist/Tracklist.tsx?t=1701368568351:148:44)
|
|
53
|
+
at renderWithHooks (https://localhost:8081/node_modules/.vite-web/deps/chunk-YKTDXTVC.js?v=86daed82:12171:26)
|
|
54
|
+
at mountIndeterminateComponent (https://localhost:8081/node_modules/.vite-web/deps/chunk-YKTDXTVC.js?v=86daed82:14921:21)
|
|
55
|
+
at beginWork (https://localhost:8081/node_modules/.vite-web/deps/chunk-YKTDXTVC.js?v=86daed82:15902:22)
|
|
56
|
+
`;
|
|
57
|
+
const stackInfo = extractStackInfoFromStackTrace(stackTrace);
|
|
58
|
+
// Replacing file paths for snapshot testing as they are not stable
|
|
59
|
+
stackInfo.frames.forEach((_) => (_.filePath = '__REPLACED_FOR_SNAPSHOT__'));
|
|
60
|
+
expect(stackInfo).toMatchInlineSnapshot(`
|
|
61
|
+
{
|
|
62
|
+
"frames": [
|
|
63
|
+
{
|
|
64
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
65
|
+
"name": "Tracklist_",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"filePath": "__REPLACED_FOR_SNAPSHOT__",
|
|
69
|
+
"name": "useQuery",
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
}
|
|
73
|
+
`);
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=stack-info.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-info.test.js","sourceRoot":"","sources":["../../src/utils/stack-info.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAA;AAEhE,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,UAAU,GAAG;;;;;;;;;;;;CAYpB,CAAA;IAEC,MAAM,SAAS,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAA;IAC5D,mEAAmE;IACnE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAA;IAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;GAqBvC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,UAAU,GAAG;;;;;;;;;;;;CAYpB,CAAA;IAEC,MAAM,SAAS,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAA;IAC5D,mEAAmE;IACnE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAA;IAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;GAavC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import type { FromInputSchema } from '@livestore/common/schema';
|
|
2
|
+
import type { Store } from '@livestore/livestore';
|
|
3
|
+
import { DbSchema } from '@livestore/livestore';
|
|
4
|
+
import { Effect } from '@livestore/utils/effect';
|
|
5
|
+
import type * as otel from '@opentelemetry/api';
|
|
6
|
+
export type Todo = {
|
|
7
|
+
id: string;
|
|
8
|
+
text: string;
|
|
9
|
+
completed: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type Filter = 'all' | 'active' | 'completed';
|
|
12
|
+
export type AppState = {
|
|
13
|
+
newTodoText: string;
|
|
14
|
+
filter: Filter;
|
|
15
|
+
};
|
|
16
|
+
export declare const todos: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"todos", {
|
|
17
|
+
id: {
|
|
18
|
+
columnType: "text";
|
|
19
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
20
|
+
default: import("effect/Option").None<never>;
|
|
21
|
+
nullable: false;
|
|
22
|
+
primaryKey: true;
|
|
23
|
+
};
|
|
24
|
+
text: {
|
|
25
|
+
columnType: "text";
|
|
26
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
27
|
+
default: import("effect/Option").Some<"">;
|
|
28
|
+
nullable: false;
|
|
29
|
+
primaryKey: false;
|
|
30
|
+
};
|
|
31
|
+
completed: {
|
|
32
|
+
columnType: "integer";
|
|
33
|
+
schema: import("effect/Schema").Schema<boolean, number, never>;
|
|
34
|
+
default: import("effect/Option").Some<false>;
|
|
35
|
+
nullable: false;
|
|
36
|
+
primaryKey: false;
|
|
37
|
+
};
|
|
38
|
+
}>, false, {
|
|
39
|
+
isSingleton: false;
|
|
40
|
+
disableAutomaticIdColumn: false;
|
|
41
|
+
deriveMutations: {
|
|
42
|
+
enabled: true;
|
|
43
|
+
localOnly: boolean;
|
|
44
|
+
};
|
|
45
|
+
isSingleColumn: false;
|
|
46
|
+
}, import("effect/Schema").Schema<{
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly text: string;
|
|
49
|
+
readonly completed: boolean;
|
|
50
|
+
}, {
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly text: string;
|
|
53
|
+
readonly completed: number;
|
|
54
|
+
}, never>>;
|
|
55
|
+
export declare const app: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"app", {
|
|
56
|
+
id: {
|
|
57
|
+
columnType: "text";
|
|
58
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
59
|
+
default: import("effect/Option").None<never>;
|
|
60
|
+
nullable: false;
|
|
61
|
+
primaryKey: true;
|
|
62
|
+
};
|
|
63
|
+
newTodoText: {
|
|
64
|
+
columnType: "text";
|
|
65
|
+
schema: import("effect/Schema").Schema<string | null, string | null, never>;
|
|
66
|
+
default: import("effect/Option").Some<"">;
|
|
67
|
+
nullable: true;
|
|
68
|
+
primaryKey: false;
|
|
69
|
+
};
|
|
70
|
+
filter: {
|
|
71
|
+
columnType: "text";
|
|
72
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
73
|
+
default: import("effect/Option").Some<"all">;
|
|
74
|
+
nullable: false;
|
|
75
|
+
primaryKey: false;
|
|
76
|
+
};
|
|
77
|
+
}>, false, {
|
|
78
|
+
isSingleton: false;
|
|
79
|
+
disableAutomaticIdColumn: false;
|
|
80
|
+
deriveMutations: never;
|
|
81
|
+
isSingleColumn: false;
|
|
82
|
+
}, import("effect/Schema").Schema<{
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly newTodoText: string | null;
|
|
85
|
+
readonly filter: string;
|
|
86
|
+
}, {
|
|
87
|
+
readonly id: string;
|
|
88
|
+
readonly newTodoText: string | null;
|
|
89
|
+
readonly filter: string;
|
|
90
|
+
}, never>>;
|
|
91
|
+
export declare const tables: {
|
|
92
|
+
todos: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"todos", {
|
|
93
|
+
id: {
|
|
94
|
+
columnType: "text";
|
|
95
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
96
|
+
default: import("effect/Option").None<never>;
|
|
97
|
+
nullable: false;
|
|
98
|
+
primaryKey: true;
|
|
99
|
+
};
|
|
100
|
+
text: {
|
|
101
|
+
columnType: "text";
|
|
102
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
103
|
+
default: import("effect/Option").Some<"">;
|
|
104
|
+
nullable: false;
|
|
105
|
+
primaryKey: false;
|
|
106
|
+
};
|
|
107
|
+
completed: {
|
|
108
|
+
columnType: "integer";
|
|
109
|
+
schema: import("effect/Schema").Schema<boolean, number, never>;
|
|
110
|
+
default: import("effect/Option").Some<false>;
|
|
111
|
+
nullable: false;
|
|
112
|
+
primaryKey: false;
|
|
113
|
+
};
|
|
114
|
+
}>, false, {
|
|
115
|
+
isSingleton: false;
|
|
116
|
+
disableAutomaticIdColumn: false;
|
|
117
|
+
deriveMutations: {
|
|
118
|
+
enabled: true;
|
|
119
|
+
localOnly: boolean;
|
|
120
|
+
};
|
|
121
|
+
isSingleColumn: false;
|
|
122
|
+
}, import("effect/Schema").Schema<{
|
|
123
|
+
readonly id: string;
|
|
124
|
+
readonly text: string;
|
|
125
|
+
readonly completed: boolean;
|
|
126
|
+
}, {
|
|
127
|
+
readonly id: string;
|
|
128
|
+
readonly text: string;
|
|
129
|
+
readonly completed: number;
|
|
130
|
+
}, never>>;
|
|
131
|
+
app: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"app", {
|
|
132
|
+
id: {
|
|
133
|
+
columnType: "text";
|
|
134
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
135
|
+
default: import("effect/Option").None<never>;
|
|
136
|
+
nullable: false;
|
|
137
|
+
primaryKey: true;
|
|
138
|
+
};
|
|
139
|
+
newTodoText: {
|
|
140
|
+
columnType: "text";
|
|
141
|
+
schema: import("effect/Schema").Schema<string | null, string | null, never>;
|
|
142
|
+
default: import("effect/Option").Some<"">;
|
|
143
|
+
nullable: true;
|
|
144
|
+
primaryKey: false;
|
|
145
|
+
};
|
|
146
|
+
filter: {
|
|
147
|
+
columnType: "text";
|
|
148
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
149
|
+
default: import("effect/Option").Some<"all">;
|
|
150
|
+
nullable: false;
|
|
151
|
+
primaryKey: false;
|
|
152
|
+
};
|
|
153
|
+
}>, false, {
|
|
154
|
+
isSingleton: false;
|
|
155
|
+
disableAutomaticIdColumn: false;
|
|
156
|
+
deriveMutations: never;
|
|
157
|
+
isSingleColumn: false;
|
|
158
|
+
}, import("effect/Schema").Schema<{
|
|
159
|
+
readonly id: string;
|
|
160
|
+
readonly newTodoText: string | null;
|
|
161
|
+
readonly filter: string;
|
|
162
|
+
}, {
|
|
163
|
+
readonly id: string;
|
|
164
|
+
readonly newTodoText: string | null;
|
|
165
|
+
readonly filter: string;
|
|
166
|
+
}, never>>;
|
|
167
|
+
};
|
|
168
|
+
export declare const schema: FromInputSchema.DeriveSchema<{
|
|
169
|
+
tables: {
|
|
170
|
+
todos: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"todos", {
|
|
171
|
+
id: {
|
|
172
|
+
columnType: "text";
|
|
173
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
174
|
+
default: import("effect/Option").None<never>;
|
|
175
|
+
nullable: false;
|
|
176
|
+
primaryKey: true;
|
|
177
|
+
};
|
|
178
|
+
text: {
|
|
179
|
+
columnType: "text";
|
|
180
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
181
|
+
default: import("effect/Option").Some<"">;
|
|
182
|
+
nullable: false;
|
|
183
|
+
primaryKey: false;
|
|
184
|
+
};
|
|
185
|
+
completed: {
|
|
186
|
+
columnType: "integer";
|
|
187
|
+
schema: import("effect/Schema").Schema<boolean, number, never>;
|
|
188
|
+
default: import("effect/Option").Some<false>;
|
|
189
|
+
nullable: false;
|
|
190
|
+
primaryKey: false;
|
|
191
|
+
};
|
|
192
|
+
}>, false, {
|
|
193
|
+
isSingleton: false;
|
|
194
|
+
disableAutomaticIdColumn: false;
|
|
195
|
+
deriveMutations: {
|
|
196
|
+
enabled: true;
|
|
197
|
+
localOnly: boolean;
|
|
198
|
+
};
|
|
199
|
+
isSingleColumn: false;
|
|
200
|
+
}, import("effect/Schema").Schema<{
|
|
201
|
+
readonly id: string;
|
|
202
|
+
readonly text: string;
|
|
203
|
+
readonly completed: boolean;
|
|
204
|
+
}, {
|
|
205
|
+
readonly id: string;
|
|
206
|
+
readonly text: string;
|
|
207
|
+
readonly completed: number;
|
|
208
|
+
}, never>>;
|
|
209
|
+
app: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"app", {
|
|
210
|
+
id: {
|
|
211
|
+
columnType: "text";
|
|
212
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
213
|
+
default: import("effect/Option").None<never>;
|
|
214
|
+
nullable: false;
|
|
215
|
+
primaryKey: true;
|
|
216
|
+
};
|
|
217
|
+
newTodoText: {
|
|
218
|
+
columnType: "text";
|
|
219
|
+
schema: import("effect/Schema").Schema<string | null, string | null, never>;
|
|
220
|
+
default: import("effect/Option").Some<"">;
|
|
221
|
+
nullable: true;
|
|
222
|
+
primaryKey: false;
|
|
223
|
+
};
|
|
224
|
+
filter: {
|
|
225
|
+
columnType: "text";
|
|
226
|
+
schema: import("effect/Schema").Schema<string, string, never>;
|
|
227
|
+
default: import("effect/Option").Some<"all">;
|
|
228
|
+
nullable: false;
|
|
229
|
+
primaryKey: false;
|
|
230
|
+
};
|
|
231
|
+
}>, false, {
|
|
232
|
+
isSingleton: false;
|
|
233
|
+
disableAutomaticIdColumn: false;
|
|
234
|
+
deriveMutations: never;
|
|
235
|
+
isSingleColumn: false;
|
|
236
|
+
}, import("effect/Schema").Schema<{
|
|
237
|
+
readonly id: string;
|
|
238
|
+
readonly newTodoText: string | null;
|
|
239
|
+
readonly filter: string;
|
|
240
|
+
}, {
|
|
241
|
+
readonly id: string;
|
|
242
|
+
readonly newTodoText: string | null;
|
|
243
|
+
readonly filter: string;
|
|
244
|
+
}, never>>;
|
|
245
|
+
};
|
|
246
|
+
}>;
|
|
247
|
+
export interface FixtureSchema extends FromInputSchema.DeriveSchema<{
|
|
248
|
+
tables: typeof tables;
|
|
249
|
+
}> {
|
|
250
|
+
}
|
|
251
|
+
export declare const makeTodoMvc: ({ otelTracer, otelContext, useGlobalReactivityGraph, }?: {
|
|
252
|
+
otelTracer?: otel.Tracer;
|
|
253
|
+
otelContext?: otel.Context;
|
|
254
|
+
useGlobalReactivityGraph?: boolean;
|
|
255
|
+
}) => Effect.Effect<{
|
|
256
|
+
store: Store<any, FixtureSchema>;
|
|
257
|
+
reactivityGraph: import("@livestore/livestore").ReactivityGraph;
|
|
258
|
+
}, import("@livestore/common/dist/adapter-types.js").UnexpectedError, import("effect/Scope").Scope>;
|
|
259
|
+
//# sourceMappingURL=fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,QAAQ,EAKT,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAY,MAAM,yBAAyB,CAAA;AAE1D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAQjB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAId,CAAA;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAA;AACpC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyB,CAAA;AAE5C,MAAM,WAAW,aAAc,SAAQ,eAAe,CAAC,YAAY,CAAC;IAAE,MAAM,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;CAAG;AAEjG,eAAO,MAAM,WAAW,4DAIrB;IACD,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;;;mGAoBG,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createStore, DbSchema, globalReactivityGraph, makeReactivityGraph, makeSchema, sql, } from '@livestore/livestore';
|
|
2
|
+
import { Effect, FiberSet } from '@livestore/utils/effect';
|
|
3
|
+
import { makeInMemoryAdapter } from '@livestore/web';
|
|
4
|
+
export const todos = DbSchema.table('todos', {
|
|
5
|
+
id: DbSchema.text({ primaryKey: true }),
|
|
6
|
+
text: DbSchema.text({ default: '', nullable: false }),
|
|
7
|
+
completed: DbSchema.boolean({ default: false, nullable: false }),
|
|
8
|
+
}, { deriveMutations: true, isSingleton: false });
|
|
9
|
+
export const app = DbSchema.table('app', {
|
|
10
|
+
id: DbSchema.text({ primaryKey: true }),
|
|
11
|
+
newTodoText: DbSchema.text({ default: '', nullable: true }),
|
|
12
|
+
filter: DbSchema.text({ default: 'all', nullable: false }),
|
|
13
|
+
});
|
|
14
|
+
export const tables = { todos, app };
|
|
15
|
+
export const schema = makeSchema({ tables });
|
|
16
|
+
export const makeTodoMvc = ({ otelTracer, otelContext, useGlobalReactivityGraph = true, } = {}) => Effect.gen(function* () {
|
|
17
|
+
const reactivityGraph = useGlobalReactivityGraph ? globalReactivityGraph : makeReactivityGraph();
|
|
18
|
+
const fiberSet = yield* FiberSet.make();
|
|
19
|
+
const store = yield* createStore({
|
|
20
|
+
schema,
|
|
21
|
+
storeId: 'default',
|
|
22
|
+
boot: (db) => db.execute(sql `INSERT OR IGNORE INTO app (id, newTodoText, filter) VALUES ('static', '', 'all');`),
|
|
23
|
+
adapter: makeInMemoryAdapter(),
|
|
24
|
+
reactivityGraph,
|
|
25
|
+
otelOptions: {
|
|
26
|
+
tracer: otelTracer,
|
|
27
|
+
rootSpanContext: otelContext,
|
|
28
|
+
},
|
|
29
|
+
fiberSet,
|
|
30
|
+
});
|
|
31
|
+
return { store, reactivityGraph };
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/utils/tests/fixture.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,EACV,GAAG,GACJ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAgBpD,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CACjC,OAAO,EACP;IACE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrD,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CACjE,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAC9C,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;IACvC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC3D,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAI5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EACV,WAAW,EACX,wBAAwB,GAAG,IAAI,MAK7B,EAAE,EAAE,EAAE,CACR,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,eAAe,GAAG,wBAAwB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAA;IAEhG,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IAEvC,MAAM,KAAK,GAA8B,KAAK,CAAC,CAAC,WAAW,CAAC;QAC1D,MAAM;QACN,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,mFAAmF,CAAC;QAChH,OAAO,EAAE,mBAAmB,EAAE;QAC9B,eAAe;QACf,WAAW,EAAE;YACX,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,WAAW;SAC7B;QACD,QAAQ;KACT,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;AACnC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/utils/tests/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Attributes } from '@opentelemetry/api';
|
|
2
|
+
import type { InMemorySpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
type SimplifiedNestedSpan = {
|
|
4
|
+
_name: string;
|
|
5
|
+
attributes: any;
|
|
6
|
+
children: SimplifiedNestedSpan[];
|
|
7
|
+
};
|
|
8
|
+
export declare const getSimplifiedRootSpan: (exporter: InMemorySpanExporter, mapAttributes?: (attributes: Attributes) => Attributes) => SimplifiedNestedSpan;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=otel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/otel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAgB,MAAM,+BAA+B,CAAA;AAEvF,KAAK,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAA;AAEhG,eAAO,MAAM,qBAAqB,aACtB,oBAAoB,kBACd,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,yBAiCvD,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { identity } from '@livestore/utils/effect';
|
|
2
|
+
export const getSimplifiedRootSpan = (exporter, mapAttributes) => {
|
|
3
|
+
const spans = exporter.getFinishedSpans();
|
|
4
|
+
const spansMap = new Map(spans.map((span) => [span.spanContext().spanId, { span, children: [] }]));
|
|
5
|
+
const mapAttributesfn = mapAttributes ?? identity;
|
|
6
|
+
spansMap.forEach((nestedSpan) => {
|
|
7
|
+
const parentSpan = nestedSpan.span.parentSpanId ? spansMap.get(nestedSpan.span.parentSpanId) : undefined;
|
|
8
|
+
if (parentSpan) {
|
|
9
|
+
parentSpan.children.push(nestedSpan);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const rootSpan = spansMap.get(spans.find((_) => _.name === 'test').spanContext().spanId);
|
|
13
|
+
const simplifySpan = (span) => omitEmpty({
|
|
14
|
+
_name: span.span.name,
|
|
15
|
+
attributes: mapAttributesfn(span.span.attributes),
|
|
16
|
+
children: span.children
|
|
17
|
+
.filter((_) => _.span.name !== 'createStore')
|
|
18
|
+
// .sort((a, b) => compareHrTime(a.span.startTime, b.span.startTime))
|
|
19
|
+
.map(simplifySpan),
|
|
20
|
+
});
|
|
21
|
+
// console.dir(
|
|
22
|
+
// spans.map((_) => [_.spanContext().spanId, _.name, _.attributes, _.parentSpanId]),
|
|
23
|
+
// { depth: 10 },
|
|
24
|
+
// )
|
|
25
|
+
return simplifySpan(rootSpan);
|
|
26
|
+
};
|
|
27
|
+
// const compareHrTime = (a: [number, number], b: [number, number]) => {
|
|
28
|
+
// if (a[0] !== b[0]) return a[0] - b[0]
|
|
29
|
+
// return a[1] - b[1]
|
|
30
|
+
// }
|
|
31
|
+
const omitEmpty = (obj) => {
|
|
32
|
+
const result = {};
|
|
33
|
+
for (const key in obj) {
|
|
34
|
+
if (obj[key] !== undefined &&
|
|
35
|
+
!(Array.isArray(obj[key]) && obj[key].length === 0) &&
|
|
36
|
+
Object.keys(obj[key]).length > 0) {
|
|
37
|
+
result[key] = obj[key];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=otel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../../../src/utils/tests/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAMlD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAA8B,EAC9B,aAAsD,EACtD,EAAE;IACF,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,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACxG,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,CAAA;IAGF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAE,CAAA;IAE1F,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAwB,EAAE,CAC9D,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,aAAa,CAAC;YAC7C,qEAAqE;aACpE,GAAG,CAAC,YAAY,CAAC;KACrB,CAAC,CAAA;IAEJ,eAAe;IACf,sFAAsF;IACtF,mBAAmB;IACnB,IAAI;IAEJ,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC/B,CAAC,CAAA;AAED,wEAAwE;AACxE,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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@livestore/livestore",
|
|
3
|
+
"version": "0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"default": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"./internal/testing-utils": {
|
|
11
|
+
"types": "./dist/utils/tests/mod.d.ts",
|
|
12
|
+
"default": "./dist/utils/tests/mod.js"
|
|
13
|
+
},
|
|
14
|
+
"./effect": {
|
|
15
|
+
"types": "./dist/effect/index.d.ts",
|
|
16
|
+
"default": "./dist/effect/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"typesVersions": {
|
|
21
|
+
"*": {
|
|
22
|
+
"testing-utils": [
|
|
23
|
+
"./dist/utils/tests/mod.d.ts"
|
|
24
|
+
],
|
|
25
|
+
"effect": [
|
|
26
|
+
"./dist/effect/index.d.ts"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@graphql-typed-document-node/core": "^3.2.0",
|
|
32
|
+
"@opentelemetry/api": "^1.9.0",
|
|
33
|
+
"@livestore/common": "0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4",
|
|
34
|
+
"@livestore/utils": "0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4",
|
|
35
|
+
"@livestore/db-schema": "0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@opentelemetry/sdk-trace-base": "1.27.0",
|
|
39
|
+
"jsdom": "^25.0.1",
|
|
40
|
+
"typescript": "5.6.3",
|
|
41
|
+
"vite": "5.4.10",
|
|
42
|
+
"vitest": "^2.1.4",
|
|
43
|
+
"@livestore/web": "0.0.0-snapshot-909cdd1ac2fd591945c2be2b0f53e14d87f3c9d4"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"graphql": "16.x"
|
|
47
|
+
},
|
|
48
|
+
"peerDependenciesMeta": {
|
|
49
|
+
"graphql": {
|
|
50
|
+
"optional": true
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsc",
|
|
58
|
+
"test": "vitest"
|
|
59
|
+
}
|
|
60
|
+
}
|