@livestore/livestore 0.0.25 → 0.0.28
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/QueryCache.d.ts +1 -1
- package/dist/QueryCache.d.ts.map +1 -1
- package/dist/QueryCache.js +50 -60
- package/dist/QueryCache.js.map +1 -1
- package/dist/__tests__/react/fixture.d.ts +21 -6
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +13 -14
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/__tests__/react/useQuery.test.js +5 -5
- package/dist/__tests__/react/useQuery.test.js.map +1 -1
- package/dist/__tests__/react/useRow.test.d.ts +2 -0
- package/dist/__tests__/react/useRow.test.d.ts.map +1 -0
- package/dist/__tests__/react/{useComponentState.test.js → useRow.test.js} +22 -27
- package/dist/__tests__/react/useRow.test.js.map +1 -0
- package/dist/__tests__/react/utils/stack-info.test.js +32 -0
- package/dist/__tests__/react/utils/stack-info.test.js.map +1 -1
- package/dist/__tests__/reactive.test.js +1 -1
- package/dist/__tests__/reactive.test.js.map +1 -1
- package/dist/__tests__/reactiveQueries/sql.test.js +10 -10
- package/dist/__tests__/reactiveQueries/sql.test.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +3 -3
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +1 -1
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/global-state.d.ts +19 -0
- package/dist/global-state.d.ts.map +1 -0
- package/dist/global-state.js +20 -0
- package/dist/global-state.js.map +1 -0
- package/dist/inMemoryDatabase.d.ts +3 -3
- package/dist/inMemoryDatabase.d.ts.map +1 -1
- package/dist/inMemoryDatabase.js +14 -7
- package/dist/inMemoryDatabase.js.map +1 -1
- package/dist/index.d.ts +5 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +4 -4
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +34 -28
- package/dist/migrations.js.map +1 -1
- package/dist/react/LiveStoreContext.js.map +1 -1
- package/dist/react/LiveStoreProvider.d.ts +2 -2
- package/dist/react/LiveStoreProvider.d.ts.map +1 -1
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/react/index.d.ts +1 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/useQuery.d.ts +3 -0
- package/dist/react/useQuery.d.ts.map +1 -1
- package/dist/react/useQuery.js +5 -4
- package/dist/react/useQuery.js.map +1 -1
- package/dist/react/useRow.d.ts +36 -0
- package/dist/react/useRow.d.ts.map +1 -0
- package/dist/react/useRow.js +143 -0
- package/dist/react/useRow.js.map +1 -0
- package/dist/react/useTemporaryQuery.d.ts +2 -0
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js +28 -11
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/react/utils/stack-info.d.ts.map +1 -1
- package/dist/react/utils/stack-info.js +3 -2
- package/dist/react/utils/stack-info.js.map +1 -1
- package/dist/react/utils/useStateRefWithReactiveInput.js.map +1 -1
- package/dist/reactive.d.ts +1 -1
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +47 -44
- package/dist/reactive.js.map +1 -1
- package/dist/reactiveQueries/base-class.d.ts +6 -2
- package/dist/reactiveQueries/base-class.d.ts.map +1 -1
- package/dist/reactiveQueries/base-class.js +10 -12
- package/dist/reactiveQueries/base-class.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts +2 -2
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js +56 -50
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/js.d.ts +1 -2
- package/dist/reactiveQueries/js.d.ts.map +1 -1
- package/dist/reactiveQueries/js.js +25 -15
- package/dist/reactiveQueries/js.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +3 -3
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +39 -34
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/row-query.d.ts +23 -0
- package/dist/row-query.d.ts.map +1 -0
- package/dist/row-query.js +78 -0
- package/dist/row-query.js.map +1 -0
- package/dist/schema/action.d.ts +30 -0
- package/dist/schema/action.d.ts.map +1 -0
- package/dist/schema/action.js +3 -0
- package/dist/schema/action.js.map +1 -0
- package/dist/schema/index.d.ts +28 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +26 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/system-tables.d.ts +24 -0
- package/dist/schema/system-tables.d.ts.map +1 -0
- package/dist/schema/system-tables.js +11 -0
- package/dist/schema/system-tables.js.map +1 -0
- package/dist/schema/table-def.d.ts +161 -0
- package/dist/schema/table-def.d.ts.map +1 -0
- package/dist/schema/table-def.js +50 -0
- package/dist/schema/table-def.js.map +1 -0
- package/dist/storage/in-memory/index.d.ts +1 -1
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/in-memory/index.js +6 -7
- package/dist/storage/in-memory/index.js.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/tauri/index.d.ts +1 -1
- package/dist/storage/tauri/index.d.ts.map +1 -1
- package/dist/storage/tauri/index.js +25 -23
- package/dist/storage/tauri/index.js.map +1 -1
- package/dist/storage/utils/idb.js +3 -1
- package/dist/storage/utils/idb.js.map +1 -1
- package/dist/storage/web-worker/index.d.ts +1 -1
- package/dist/storage/web-worker/index.d.ts.map +1 -1
- package/dist/storage/web-worker/index.js +38 -34
- package/dist/storage/web-worker/index.js.map +1 -1
- package/dist/storage/web-worker/worker.d.ts +1 -1
- package/dist/storage/web-worker/worker.d.ts.map +1 -1
- package/dist/storage/web-worker/worker.js +1 -1
- package/dist/storage/web-worker/worker.js.map +1 -1
- package/dist/store.d.ts +10 -10
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +285 -265
- package/dist/store.js.map +1 -1
- package/dist/utils/bounded-collections.d.ts.map +1 -0
- package/dist/utils/bounded-collections.js +90 -0
- package/dist/utils/bounded-collections.js.map +1 -0
- package/dist/utils/otel.d.ts.map +1 -0
- package/dist/{otel.js → utils/otel.js} +1 -1
- package/dist/utils/otel.js.map +1 -0
- package/dist/utils/util.d.ts.map +1 -0
- package/dist/utils/util.js.map +1 -0
- package/package.json +15 -15
- package/src/QueryCache.ts +2 -2
- package/src/__tests__/react/fixture.tsx +15 -15
- package/src/__tests__/react/useQuery.test.tsx +5 -5
- package/src/__tests__/react/{useComponentState.test.tsx → useRow.test.tsx} +28 -29
- package/src/__tests__/react/utils/stack-info.test.ts +34 -0
- package/src/__tests__/reactive.test.ts +1 -1
- package/src/__tests__/reactiveQueries/sql.test.ts +10 -10
- package/src/effect/LiveStore.ts +6 -6
- package/src/global-state.ts +26 -0
- package/src/inMemoryDatabase.ts +9 -4
- package/src/index.ts +18 -17
- package/src/migrations.ts +41 -35
- package/src/react/LiveStoreProvider.tsx +2 -2
- package/src/react/index.ts +7 -9
- package/src/react/useQuery.ts +10 -4
- package/src/react/useRow.ts +239 -0
- package/src/react/useTemporaryQuery.ts +43 -11
- package/src/react/utils/stack-info.ts +4 -2
- package/src/reactive.ts +1 -1
- package/src/reactiveQueries/base-class.ts +8 -2
- package/src/reactiveQueries/graphql.ts +4 -3
- package/src/reactiveQueries/js.ts +3 -4
- package/src/reactiveQueries/sql.ts +6 -6
- package/src/row-query.ts +148 -0
- package/src/schema/action.ts +41 -0
- package/src/schema/index.ts +63 -0
- package/src/schema/system-tables.ts +21 -0
- package/src/schema/table-def.ts +197 -0
- package/src/storage/in-memory/index.ts +1 -1
- package/src/storage/index.ts +2 -1
- package/src/storage/tauri/index.ts +2 -2
- package/src/storage/web-worker/index.ts +1 -1
- package/src/storage/web-worker/worker.ts +2 -2
- package/src/store.ts +43 -27
- package/dist/__tests__/react/useComponentState.test.d.ts +0 -2
- package/dist/__tests__/react/useComponentState.test.d.ts.map +0 -1
- package/dist/__tests__/react/useComponentState.test.js.map +0 -1
- package/dist/bounded-collections.d.ts.map +0 -1
- package/dist/bounded-collections.js +0 -103
- package/dist/bounded-collections.js.map +0 -1
- package/dist/componentKey.d.ts +0 -20
- package/dist/componentKey.d.ts.map +0 -1
- package/dist/componentKey.js +0 -3
- package/dist/componentKey.js.map +0 -1
- package/dist/otel.d.ts.map +0 -1
- package/dist/otel.js.map +0 -1
- package/dist/react/useComponentState.d.ts +0 -50
- package/dist/react/useComponentState.d.ts.map +0 -1
- package/dist/react/useComponentState.js +0 -226
- package/dist/react/useComponentState.js.map +0 -1
- package/dist/reactiveQueries/graph.d.ts +0 -10
- package/dist/reactiveQueries/graph.d.ts.map +0 -1
- package/dist/reactiveQueries/graph.js +0 -6
- package/dist/reactiveQueries/graph.js.map +0 -1
- package/dist/schema.d.ts +0 -81
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -46
- package/dist/schema.js.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- package/src/componentKey.ts +0 -9
- package/src/react/useComponentState.ts +0 -385
- package/src/reactiveQueries/graph.ts +0 -15
- package/src/schema.ts +0 -143
- /package/dist/{bounded-collections.d.ts → utils/bounded-collections.d.ts} +0 -0
- /package/dist/{otel.d.ts → utils/otel.d.ts} +0 -0
- /package/dist/{util.d.ts → utils/util.d.ts} +0 -0
- /package/dist/{util.js → utils/util.js} +0 -0
- /package/src/{bounded-collections.ts → utils/bounded-collections.ts} +0 -0
- /package/src/{otel.ts → utils/otel.ts} +0 -0
- /package/src/{util.ts → utils/util.ts} +0 -0
package/src/schema.ts
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import type { PrettifyFlat } from '@livestore/utils'
|
|
2
|
-
import { mapObjectValues } from '@livestore/utils'
|
|
3
|
-
import type { Schema } from '@livestore/utils/effect'
|
|
4
|
-
import type { SqliteAst } from 'effect-db-schema'
|
|
5
|
-
import { SqliteDsl } from 'effect-db-schema'
|
|
6
|
-
|
|
7
|
-
import { DbSchema } from './index.js'
|
|
8
|
-
|
|
9
|
-
export type Index = {
|
|
10
|
-
name: string
|
|
11
|
-
columns: string[]
|
|
12
|
-
/** @default false */
|
|
13
|
-
isUnique?: boolean
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// A global variable representing component state tables we should create in the database
|
|
17
|
-
export const componentStateTables: { [key: string]: SqliteAst.Table } = {}
|
|
18
|
-
|
|
19
|
-
export type InputSchema = {
|
|
20
|
-
tables: {
|
|
21
|
-
[tableName: string]: SqliteDsl.TableDefinition<any, any>
|
|
22
|
-
}
|
|
23
|
-
materializedViews?: MaterializedViewDefinitions
|
|
24
|
-
actions: ActionDefinitions<any>
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export const makeSchema = <TSchema extends InputSchema>(schema: TSchema): Schema =>
|
|
28
|
-
({
|
|
29
|
-
tables: { ...mapObjectValues(schema.tables, (_tableName, table) => table.ast), ...systemTables },
|
|
30
|
-
materializedViews: schema.materializedViews ?? {},
|
|
31
|
-
actions: schema.actions,
|
|
32
|
-
}) satisfies Schema
|
|
33
|
-
|
|
34
|
-
export type ComponentStateSchema = SqliteDsl.TableDefinition<any, any> & {
|
|
35
|
-
// TODO
|
|
36
|
-
register: () => void
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// TODO get rid of "side effect" in this function (via explicit register fn)
|
|
40
|
-
export const defineComponentStateSchema = <TName extends string, TColumns extends SqliteDsl.Columns>(
|
|
41
|
-
// TODO get rid of the `name` param here and use the `componentKey` name instead
|
|
42
|
-
name: TName,
|
|
43
|
-
columns: TColumns,
|
|
44
|
-
): SqliteDsl.TableDefinition<
|
|
45
|
-
`components__${TName}`,
|
|
46
|
-
PrettifyFlat<TColumns & { id: SqliteDsl.ColumnDefinition<SqliteDsl.FieldType.FieldTypeText<string, string>, false> }>
|
|
47
|
-
> => {
|
|
48
|
-
const tablePath = `components__${name}` as const
|
|
49
|
-
if (Object.keys(componentStateTables).includes(tablePath)) {
|
|
50
|
-
// throw new Error(`Can't register duplicate component: ${name}`)
|
|
51
|
-
console.error(`Can't register duplicate component: ${tablePath}`)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const schemaWithId = columns as unknown as PrettifyFlat<
|
|
55
|
-
TColumns & {
|
|
56
|
-
id: SqliteDsl.ColumnDefinition<SqliteDsl.FieldType.FieldTypeText<string, string>, false>
|
|
57
|
-
}
|
|
58
|
-
>
|
|
59
|
-
|
|
60
|
-
schemaWithId.id = DbSchema.text({ primaryKey: true })
|
|
61
|
-
|
|
62
|
-
const tableDef = SqliteDsl.table(tablePath, schemaWithId, [])
|
|
63
|
-
|
|
64
|
-
// TODO move into register fn
|
|
65
|
-
componentStateTables[tablePath] = tableDef.ast
|
|
66
|
-
|
|
67
|
-
return tableDef
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export type SQLWriteStatement = {
|
|
71
|
-
sql: string
|
|
72
|
-
|
|
73
|
-
/** Tables written by the statement */
|
|
74
|
-
writeTables: string[]
|
|
75
|
-
// TODO refactor this
|
|
76
|
-
argsAlreadyBound?: boolean
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export type ActionDefinition<TArgs = any> = {
|
|
80
|
-
statement: SQLWriteStatement | ((args: TArgs) => SQLWriteStatement)
|
|
81
|
-
prepareBindValues?: (args: TArgs) => any
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export type Schema = {
|
|
85
|
-
tables: TableDefinitions
|
|
86
|
-
materializedViews: MaterializedViewDefinitions
|
|
87
|
-
actions: ActionDefinitions<any>
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export type TableDefinitions = { [key: string]: SqliteAst.Table }
|
|
91
|
-
export type MaterializedViewDefinitions = { [key: string]: {} }
|
|
92
|
-
export type ActionDefinitions<TArgsMap extends Record<string, any>> = {
|
|
93
|
-
[key in keyof TArgsMap]: ActionDefinition<TArgsMap[key]>
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export const SCHEMA_META_TABLE = '__livestore_schema'
|
|
97
|
-
|
|
98
|
-
const schemaMetaTable = SqliteDsl.table(SCHEMA_META_TABLE, {
|
|
99
|
-
tableName: SqliteDsl.text({ primaryKey: true }),
|
|
100
|
-
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
101
|
-
/** ISO date format */
|
|
102
|
-
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
export type SchemaMetaRow = SqliteDsl.FromTable.RowDecoded<typeof schemaMetaTable>
|
|
106
|
-
|
|
107
|
-
export const systemTables = {
|
|
108
|
-
// [EVENTS_TABLE_NAME]: SqliteDsl.table(EVENTS_TABLE_NAME, {
|
|
109
|
-
// id: SqliteDsl.text({ primaryKey: true }),
|
|
110
|
-
// type: SqliteDsl.text({ nullable: false }),
|
|
111
|
-
// args: SqliteDsl.text({ nullable: false }),
|
|
112
|
-
// }).ast,
|
|
113
|
-
[SCHEMA_META_TABLE]: schemaMetaTable.ast,
|
|
114
|
-
} satisfies TableDefinitions
|
|
115
|
-
|
|
116
|
-
export const defineTables = <T extends TableDefinitions>(tables: T) => tables
|
|
117
|
-
|
|
118
|
-
export const defineMaterializedViews = <M extends MaterializedViewDefinitions>(materializedViews: M) =>
|
|
119
|
-
materializedViews
|
|
120
|
-
|
|
121
|
-
export const defineActions = <A extends ActionDefinitions<any>>(actions: A) => actions
|
|
122
|
-
export const defineAction = <TArgs extends Record<string, any>>(
|
|
123
|
-
action: ActionDefinition<TArgs>,
|
|
124
|
-
): ActionDefinition<TArgs> => action
|
|
125
|
-
|
|
126
|
-
export type GetApplyEventArgs<TActionDefinitionsMap> = RecordValues<{
|
|
127
|
-
[eventType in keyof TActionDefinitionsMap]: {
|
|
128
|
-
eventType: eventType
|
|
129
|
-
args: GetActionArgs<TActionDefinitionsMap[eventType]>
|
|
130
|
-
}
|
|
131
|
-
}>
|
|
132
|
-
|
|
133
|
-
type RecordValues<T> = T extends Record<string, infer V> ? V : never
|
|
134
|
-
|
|
135
|
-
export type GetActionArgs<A> = A extends ActionDefinition<infer TArgs> ? TArgs : never
|
|
136
|
-
|
|
137
|
-
// TODO get rid of this
|
|
138
|
-
declare global {
|
|
139
|
-
// NOTE Can be extended
|
|
140
|
-
interface LiveStoreActionDefinitionsTypes {
|
|
141
|
-
[key: string]: ActionDefinition
|
|
142
|
-
}
|
|
143
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|