@livestore/livestore 0.4.0-dev.9 → 0.4.0
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 +0 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/QueryCache.js +1 -1
- package/dist/QueryCache.js.map +1 -1
- package/dist/SqliteDbWrapper.d.ts +5 -5
- package/dist/SqliteDbWrapper.d.ts.map +1 -1
- package/dist/SqliteDbWrapper.js +8 -8
- package/dist/SqliteDbWrapper.js.map +1 -1
- package/dist/SqliteDbWrapper.test.js +4 -3
- package/dist/SqliteDbWrapper.test.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +133 -5
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +187 -8
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/effect/LiveStore.test.d.ts +2 -0
- package/dist/effect/LiveStore.test.d.ts.map +1 -0
- package/dist/effect/LiveStore.test.js +42 -0
- package/dist/effect/LiveStore.test.js.map +1 -0
- package/dist/effect/mod.d.ts +1 -1
- package/dist/effect/mod.d.ts.map +1 -1
- package/dist/effect/mod.js +3 -1
- package/dist/effect/mod.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +110 -7
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +2 -2
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/client-document-get-query.d.ts +1 -1
- package/dist/live-queries/client-document-get-query.d.ts.map +1 -1
- package/dist/live-queries/client-document-get-query.js +4 -3
- package/dist/live-queries/client-document-get-query.js.map +1 -1
- package/dist/live-queries/computed.d.ts +56 -0
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +58 -2
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/db-query.d.ts.map +1 -1
- package/dist/live-queries/db-query.js +21 -19
- package/dist/live-queries/db-query.js.map +1 -1
- package/dist/live-queries/db-query.test.js +106 -23
- package/dist/live-queries/db-query.test.js.map +1 -1
- package/dist/live-queries/signal.d.ts +49 -0
- package/dist/live-queries/signal.d.ts.map +1 -1
- package/dist/live-queries/signal.js +49 -0
- package/dist/live-queries/signal.js.map +1 -1
- package/dist/live-queries/signal.test.js +2 -2
- package/dist/live-queries/signal.test.js.map +1 -1
- package/dist/mod.d.ts +3 -3
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +3 -2
- package/dist/mod.js.map +1 -1
- package/dist/reactive.d.ts +9 -9
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +9 -26
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.js +2 -2
- package/dist/reactive.test.js.map +1 -1
- package/dist/store/StoreRegistry.d.ts +215 -0
- package/dist/store/StoreRegistry.d.ts.map +1 -0
- package/dist/store/StoreRegistry.js +267 -0
- package/dist/store/StoreRegistry.js.map +1 -0
- package/dist/store/StoreRegistry.test.d.ts +2 -0
- package/dist/store/StoreRegistry.test.d.ts.map +1 -0
- package/dist/store/StoreRegistry.test.js +381 -0
- package/dist/store/StoreRegistry.test.js.map +1 -0
- package/dist/store/create-store.d.ts +98 -18
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +49 -20
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +5 -16
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +59 -18
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-eventstream.test.d.ts +2 -0
- package/dist/store/store-eventstream.test.d.ts.map +1 -0
- package/dist/store/store-eventstream.test.js +65 -0
- package/dist/store/store-eventstream.test.js.map +1 -0
- package/dist/store/store-types.d.ts +285 -27
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js +77 -1
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store-types.test.d.ts +2 -0
- package/dist/store/store-types.test.d.ts.map +1 -0
- package/dist/store/store-types.test.js +39 -0
- package/dist/store/store-types.test.js.map +1 -0
- package/dist/store/store.d.ts +253 -66
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +442 -153
- package/dist/store/store.js.map +1 -1
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/stack-info.js +2 -2
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +20 -5
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +7 -0
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +5 -5
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +59 -17
- package/src/QueryCache.ts +1 -1
- package/src/SqliteDbWrapper.test.ts +5 -3
- package/src/SqliteDbWrapper.ts +12 -11
- package/src/ambient.d.ts +0 -7
- package/src/effect/LiveStore.test.ts +61 -0
- package/src/effect/LiveStore.ts +388 -13
- package/src/effect/mod.ts +13 -1
- package/src/live-queries/__snapshots__/db-query.test.ts.snap +604 -192
- package/src/live-queries/base-class.ts +126 -28
- package/src/live-queries/client-document-get-query.ts +6 -4
- package/src/live-queries/computed.ts +59 -2
- package/src/live-queries/db-query.test.ts +162 -24
- package/src/live-queries/db-query.ts +23 -20
- package/src/live-queries/signal.test.ts +3 -2
- package/src/live-queries/signal.ts +49 -0
- package/src/mod.ts +19 -2
- package/src/reactive.test.ts +3 -2
- package/src/reactive.ts +22 -23
- package/src/store/StoreRegistry.test.ts +540 -0
- package/src/store/StoreRegistry.ts +418 -0
- package/src/store/create-store.ts +158 -39
- package/src/store/devtools.ts +77 -33
- package/src/store/store-eventstream.test.ts +114 -0
- package/src/store/store-types.test.ts +52 -0
- package/src/store/store-types.ts +360 -40
- package/src/store/store.ts +571 -236
- package/src/utils/dev.ts +2 -3
- package/src/utils/stack-info.ts +2 -2
- package/src/utils/tests/fixture.ts +9 -1
- package/src/utils/tests/otel.ts +8 -7
package/src/utils/dev.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { prettyBytes } from '@livestore/utils'
|
|
|
3
3
|
import { Effect } from '@livestore/utils/effect'
|
|
4
4
|
|
|
5
5
|
declare global {
|
|
6
|
-
// declaring a global *value* is the least fussy when augmenting inline
|
|
7
6
|
var __debugLiveStoreUtils: any
|
|
8
7
|
}
|
|
9
8
|
|
|
@@ -34,8 +33,8 @@ export const downloadURL = (data: string, fileName: string) => {
|
|
|
34
33
|
export const exposeDebugUtils = () => {
|
|
35
34
|
globalThis.__debugLiveStoreUtils = {
|
|
36
35
|
downloadBlob,
|
|
37
|
-
runSync: (effect: Effect.Effect<
|
|
38
|
-
runFork: (effect: Effect.Effect<
|
|
36
|
+
runSync: <A, E>(effect: Effect.Effect<A, E>) => Effect.runSync(effect),
|
|
37
|
+
runFork: <A, E>(effect: Effect.Effect<A, E>) => Effect.runFork(effect),
|
|
39
38
|
dumpDb: (db: SqliteDb) => {
|
|
40
39
|
const tables = db.select<{ name: string }>(`SELECT name FROM sqlite_master WHERE type='table'`)
|
|
41
40
|
for (const table of tables) {
|
package/src/utils/stack-info.ts
CHANGED
|
@@ -41,12 +41,12 @@ export const extractStackInfoFromStackTrace = (stackTrace: string): StackInfo =>
|
|
|
41
41
|
// console.debug(name, filePath)
|
|
42
42
|
|
|
43
43
|
// NOTE No idea where this `Module.` comes from - possibly a Vite thing?
|
|
44
|
-
if ((name.startsWith('use') || name.startsWith('Module.use')) && name.endsWith('QueryRef') === false) {
|
|
44
|
+
if ((name.startsWith('use') === true || name.startsWith('Module.use') === true) && name.endsWith('QueryRef') === false) {
|
|
45
45
|
hasReachedStart = true
|
|
46
46
|
// console.debug('hasReachedStart. adding one more frame.')
|
|
47
47
|
|
|
48
48
|
frames.unshift({ name: name.replace(/^Module\./, ''), filePath })
|
|
49
|
-
} else if (hasReachedStart) {
|
|
49
|
+
} else if (hasReachedStart === true) {
|
|
50
50
|
// We've reached the end of the `use*` functions, so we're adding the component name and stop
|
|
51
51
|
// Unless it's `react-stack-bottom-frame`, which we skip
|
|
52
52
|
if (name !== 'Object.react-stack-bottom-frame') {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type * as otel from '@opentelemetry/api'
|
|
2
|
+
|
|
1
3
|
import { makeInMemoryAdapter } from '@livestore/adapter-web'
|
|
2
4
|
import { provideOtel } from '@livestore/common'
|
|
3
5
|
import { createStore, Events, makeSchema, State } from '@livestore/livestore'
|
|
4
6
|
import { omitUndefineds } from '@livestore/utils'
|
|
5
7
|
import { Effect, Schema } from '@livestore/utils/effect'
|
|
6
|
-
import type * as otel from '@opentelemetry/api'
|
|
7
8
|
|
|
8
9
|
export type Todo = {
|
|
9
10
|
id: string
|
|
@@ -47,10 +48,17 @@ export const events = {
|
|
|
47
48
|
completed: Schema.Boolean,
|
|
48
49
|
}),
|
|
49
50
|
}),
|
|
51
|
+
todoCompleted: Events.synced({
|
|
52
|
+
name: 'todo.completed',
|
|
53
|
+
schema: Schema.Struct({
|
|
54
|
+
id: Schema.String,
|
|
55
|
+
}),
|
|
56
|
+
}),
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
const materializers = State.SQLite.materializers(events, {
|
|
53
60
|
'todo.created': ({ id, text, completed }) => tables.todos.insert({ id, text, completed }),
|
|
61
|
+
'todo.completed': ({ id }) => tables.todos.update({ completed: true }).where({ id }),
|
|
54
62
|
})
|
|
55
63
|
|
|
56
64
|
export const state = State.SQLite.makeState({ tables, materializers })
|
package/src/utils/tests/otel.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { omitUndefineds } from '@livestore/utils'
|
|
2
|
-
import { identity } from '@livestore/utils/effect'
|
|
3
1
|
import type { Attributes } from '@opentelemetry/api'
|
|
4
2
|
import type { InMemorySpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
|
5
3
|
|
|
4
|
+
import { omitUndefineds } from '@livestore/utils'
|
|
5
|
+
import { identity } from '@livestore/utils/effect'
|
|
6
|
+
|
|
6
7
|
type SimplifiedNestedSpan = { _name: string; attributes: any; children: SimplifiedNestedSpan[] }
|
|
7
8
|
|
|
8
9
|
type NestedSpan = { span: ReadableSpan; children: NestedSpan[] }
|
|
@@ -19,8 +20,8 @@ const buildSimplifiedRootSpans = (
|
|
|
19
20
|
|
|
20
21
|
spansMap.forEach((nestedSpan) => {
|
|
21
22
|
const parentId = nestedSpan.span.parentSpanContext?.spanId
|
|
22
|
-
const parentSpan = parentId ? spansMap.get(parentId) : undefined
|
|
23
|
-
if (parentSpan) {
|
|
23
|
+
const parentSpan = parentId !== undefined ? spansMap.get(parentId) : undefined
|
|
24
|
+
if (parentSpan !== undefined) {
|
|
24
25
|
parentSpan.children.push(nestedSpan)
|
|
25
26
|
}
|
|
26
27
|
})
|
|
@@ -55,7 +56,7 @@ export const getSimplifiedRootSpan = (
|
|
|
55
56
|
): SimplifiedNestedSpan => {
|
|
56
57
|
const results = buildSimplifiedRootSpans(exporter, rootSpanName, mapAttributes)
|
|
57
58
|
const firstResult = results[0]
|
|
58
|
-
if (
|
|
59
|
+
if (firstResult == null) throw new Error(`Could not find the root span named '${rootSpanName}'.`)
|
|
59
60
|
return firstResult
|
|
60
61
|
}
|
|
61
62
|
|
|
@@ -77,7 +78,7 @@ const omitEmpty = (obj: any) => {
|
|
|
77
78
|
for (const key in obj) {
|
|
78
79
|
if (
|
|
79
80
|
obj[key] !== undefined &&
|
|
80
|
-
!(Array.isArray(obj[key]) && obj[key].length === 0) &&
|
|
81
|
+
!(Array.isArray(obj[key]) === true && obj[key].length === 0) &&
|
|
81
82
|
Object.keys(obj[key]).length > 0
|
|
82
83
|
) {
|
|
83
84
|
result[key] = obj[key]
|
|
@@ -119,7 +120,7 @@ export const toTraceFile = (spans: ReadableSpan[]) => {
|
|
|
119
120
|
typeof value === 'string'
|
|
120
121
|
? { stringValue: value }
|
|
121
122
|
: typeof value === 'number'
|
|
122
|
-
? Number.isInteger(value)
|
|
123
|
+
? Number.isInteger(value) === true
|
|
123
124
|
? { intValue: value }
|
|
124
125
|
: { doubleValue: value }
|
|
125
126
|
: typeof value === 'boolean'
|