@livestore/livestore 0.0.25 → 0.0.27

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 (206) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/QueryCache.d.ts +1 -1
  3. package/dist/QueryCache.d.ts.map +1 -1
  4. package/dist/QueryCache.js +50 -60
  5. package/dist/QueryCache.js.map +1 -1
  6. package/dist/__tests__/react/fixture.d.ts +21 -6
  7. package/dist/__tests__/react/fixture.d.ts.map +1 -1
  8. package/dist/__tests__/react/fixture.js +13 -14
  9. package/dist/__tests__/react/fixture.js.map +1 -1
  10. package/dist/__tests__/react/useQuery.test.js +5 -5
  11. package/dist/__tests__/react/useQuery.test.js.map +1 -1
  12. package/dist/__tests__/react/useRow.test.d.ts +2 -0
  13. package/dist/__tests__/react/useRow.test.d.ts.map +1 -0
  14. package/dist/__tests__/react/{useComponentState.test.js → useRow.test.js} +21 -26
  15. package/dist/__tests__/react/useRow.test.js.map +1 -0
  16. package/dist/__tests__/react/utils/stack-info.test.js +32 -0
  17. package/dist/__tests__/react/utils/stack-info.test.js.map +1 -1
  18. package/dist/__tests__/reactiveQueries/sql.test.js +4 -4
  19. package/dist/__tests__/reactiveQueries/sql.test.js.map +1 -1
  20. package/dist/effect/LiveStore.d.ts +3 -3
  21. package/dist/effect/LiveStore.d.ts.map +1 -1
  22. package/dist/effect/LiveStore.js +1 -1
  23. package/dist/effect/LiveStore.js.map +1 -1
  24. package/dist/global-state.d.ts +19 -0
  25. package/dist/global-state.d.ts.map +1 -0
  26. package/dist/global-state.js +20 -0
  27. package/dist/global-state.js.map +1 -0
  28. package/dist/inMemoryDatabase.d.ts +3 -3
  29. package/dist/inMemoryDatabase.d.ts.map +1 -1
  30. package/dist/inMemoryDatabase.js +13 -7
  31. package/dist/inMemoryDatabase.js.map +1 -1
  32. package/dist/index.d.ts +5 -9
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -5
  35. package/dist/index.js.map +1 -1
  36. package/dist/migrations.d.ts +4 -4
  37. package/dist/migrations.d.ts.map +1 -1
  38. package/dist/migrations.js +34 -28
  39. package/dist/migrations.js.map +1 -1
  40. package/dist/react/LiveStoreContext.js.map +1 -1
  41. package/dist/react/LiveStoreProvider.d.ts +2 -2
  42. package/dist/react/LiveStoreProvider.d.ts.map +1 -1
  43. package/dist/react/LiveStoreProvider.js.map +1 -1
  44. package/dist/react/index.d.ts +1 -2
  45. package/dist/react/index.d.ts.map +1 -1
  46. package/dist/react/index.js +1 -1
  47. package/dist/react/index.js.map +1 -1
  48. package/dist/react/useQuery.d.ts +3 -0
  49. package/dist/react/useQuery.d.ts.map +1 -1
  50. package/dist/react/useQuery.js +5 -4
  51. package/dist/react/useQuery.js.map +1 -1
  52. package/dist/react/useRow.d.ts +33 -0
  53. package/dist/react/useRow.d.ts.map +1 -0
  54. package/dist/react/useRow.js +136 -0
  55. package/dist/react/useRow.js.map +1 -0
  56. package/dist/react/useTemporaryQuery.d.ts +2 -0
  57. package/dist/react/useTemporaryQuery.d.ts.map +1 -1
  58. package/dist/react/useTemporaryQuery.js +28 -11
  59. package/dist/react/useTemporaryQuery.js.map +1 -1
  60. package/dist/react/utils/stack-info.d.ts.map +1 -1
  61. package/dist/react/utils/stack-info.js +3 -2
  62. package/dist/react/utils/stack-info.js.map +1 -1
  63. package/dist/react/utils/useStateRefWithReactiveInput.js.map +1 -1
  64. package/dist/reactive.d.ts +1 -1
  65. package/dist/reactive.d.ts.map +1 -1
  66. package/dist/reactive.js +47 -44
  67. package/dist/reactive.js.map +1 -1
  68. package/dist/reactiveQueries/base-class.d.ts +6 -2
  69. package/dist/reactiveQueries/base-class.d.ts.map +1 -1
  70. package/dist/reactiveQueries/base-class.js +10 -12
  71. package/dist/reactiveQueries/base-class.js.map +1 -1
  72. package/dist/reactiveQueries/graphql.d.ts +2 -2
  73. package/dist/reactiveQueries/graphql.d.ts.map +1 -1
  74. package/dist/reactiveQueries/graphql.js +56 -50
  75. package/dist/reactiveQueries/graphql.js.map +1 -1
  76. package/dist/reactiveQueries/js.d.ts +1 -2
  77. package/dist/reactiveQueries/js.d.ts.map +1 -1
  78. package/dist/reactiveQueries/js.js +25 -15
  79. package/dist/reactiveQueries/js.js.map +1 -1
  80. package/dist/reactiveQueries/sql.d.ts +3 -3
  81. package/dist/reactiveQueries/sql.d.ts.map +1 -1
  82. package/dist/reactiveQueries/sql.js +39 -34
  83. package/dist/reactiveQueries/sql.js.map +1 -1
  84. package/dist/row-query.d.ts +21 -0
  85. package/dist/row-query.d.ts.map +1 -0
  86. package/dist/row-query.js +77 -0
  87. package/dist/row-query.js.map +1 -0
  88. package/dist/schema/action.d.ts +30 -0
  89. package/dist/schema/action.d.ts.map +1 -0
  90. package/dist/schema/action.js +3 -0
  91. package/dist/schema/action.js.map +1 -0
  92. package/dist/schema/index.d.ts +28 -0
  93. package/dist/schema/index.d.ts.map +1 -0
  94. package/dist/schema/index.js +26 -0
  95. package/dist/schema/index.js.map +1 -0
  96. package/dist/schema/system-tables.d.ts +24 -0
  97. package/dist/schema/system-tables.d.ts.map +1 -0
  98. package/dist/schema/system-tables.js +11 -0
  99. package/dist/schema/system-tables.js.map +1 -0
  100. package/dist/schema/table-def.d.ts +161 -0
  101. package/dist/schema/table-def.d.ts.map +1 -0
  102. package/dist/schema/table-def.js +53 -0
  103. package/dist/schema/table-def.js.map +1 -0
  104. package/dist/storage/in-memory/index.d.ts +1 -1
  105. package/dist/storage/in-memory/index.d.ts.map +1 -1
  106. package/dist/storage/in-memory/index.js +6 -7
  107. package/dist/storage/in-memory/index.js.map +1 -1
  108. package/dist/storage/index.d.ts +1 -1
  109. package/dist/storage/index.d.ts.map +1 -1
  110. package/dist/storage/tauri/index.d.ts +1 -1
  111. package/dist/storage/tauri/index.d.ts.map +1 -1
  112. package/dist/storage/tauri/index.js +25 -23
  113. package/dist/storage/tauri/index.js.map +1 -1
  114. package/dist/storage/utils/idb.js +3 -1
  115. package/dist/storage/utils/idb.js.map +1 -1
  116. package/dist/storage/web-worker/index.d.ts +1 -1
  117. package/dist/storage/web-worker/index.d.ts.map +1 -1
  118. package/dist/storage/web-worker/index.js +38 -34
  119. package/dist/storage/web-worker/index.js.map +1 -1
  120. package/dist/storage/web-worker/worker.d.ts +1 -1
  121. package/dist/storage/web-worker/worker.d.ts.map +1 -1
  122. package/dist/storage/web-worker/worker.js +1 -1
  123. package/dist/storage/web-worker/worker.js.map +1 -1
  124. package/dist/store.d.ts +9 -10
  125. package/dist/store.d.ts.map +1 -1
  126. package/dist/store.js +282 -265
  127. package/dist/store.js.map +1 -1
  128. package/dist/utils/bounded-collections.d.ts.map +1 -0
  129. package/dist/utils/bounded-collections.js +90 -0
  130. package/dist/utils/bounded-collections.js.map +1 -0
  131. package/dist/utils/otel.d.ts.map +1 -0
  132. package/dist/{otel.js → utils/otel.js} +1 -1
  133. package/dist/utils/otel.js.map +1 -0
  134. package/dist/utils/util.d.ts.map +1 -0
  135. package/dist/utils/util.js.map +1 -0
  136. package/package.json +12 -12
  137. package/src/QueryCache.ts +2 -2
  138. package/src/__tests__/react/fixture.tsx +15 -15
  139. package/src/__tests__/react/useQuery.test.tsx +5 -5
  140. package/src/__tests__/react/{useComponentState.test.tsx → useRow.test.tsx} +27 -28
  141. package/src/__tests__/react/utils/stack-info.test.ts +34 -0
  142. package/src/__tests__/reactiveQueries/sql.test.ts +4 -4
  143. package/src/effect/LiveStore.ts +6 -6
  144. package/src/global-state.ts +26 -0
  145. package/src/inMemoryDatabase.ts +6 -4
  146. package/src/index.ts +18 -17
  147. package/src/migrations.ts +41 -35
  148. package/src/react/LiveStoreProvider.tsx +2 -2
  149. package/src/react/index.ts +7 -9
  150. package/src/react/useQuery.ts +10 -4
  151. package/src/react/useRow.ts +221 -0
  152. package/src/react/useTemporaryQuery.ts +43 -11
  153. package/src/react/utils/stack-info.ts +4 -2
  154. package/src/reactive.ts +1 -1
  155. package/src/reactiveQueries/base-class.ts +8 -2
  156. package/src/reactiveQueries/graphql.ts +4 -3
  157. package/src/reactiveQueries/js.ts +3 -4
  158. package/src/reactiveQueries/sql.ts +6 -6
  159. package/src/row-query.ts +142 -0
  160. package/src/schema/action.ts +41 -0
  161. package/src/schema/index.ts +63 -0
  162. package/src/schema/system-tables.ts +21 -0
  163. package/src/schema/table-def.ts +199 -0
  164. package/src/storage/in-memory/index.ts +1 -1
  165. package/src/storage/index.ts +2 -1
  166. package/src/storage/tauri/index.ts +2 -2
  167. package/src/storage/web-worker/index.ts +1 -1
  168. package/src/storage/web-worker/worker.ts +2 -2
  169. package/src/store.ts +39 -27
  170. package/dist/__tests__/react/useComponentState.test.d.ts +0 -2
  171. package/dist/__tests__/react/useComponentState.test.d.ts.map +0 -1
  172. package/dist/__tests__/react/useComponentState.test.js.map +0 -1
  173. package/dist/bounded-collections.d.ts.map +0 -1
  174. package/dist/bounded-collections.js +0 -103
  175. package/dist/bounded-collections.js.map +0 -1
  176. package/dist/componentKey.d.ts +0 -20
  177. package/dist/componentKey.d.ts.map +0 -1
  178. package/dist/componentKey.js +0 -3
  179. package/dist/componentKey.js.map +0 -1
  180. package/dist/otel.d.ts.map +0 -1
  181. package/dist/otel.js.map +0 -1
  182. package/dist/react/useComponentState.d.ts +0 -50
  183. package/dist/react/useComponentState.d.ts.map +0 -1
  184. package/dist/react/useComponentState.js +0 -226
  185. package/dist/react/useComponentState.js.map +0 -1
  186. package/dist/reactiveQueries/graph.d.ts +0 -10
  187. package/dist/reactiveQueries/graph.d.ts.map +0 -1
  188. package/dist/reactiveQueries/graph.js +0 -6
  189. package/dist/reactiveQueries/graph.js.map +0 -1
  190. package/dist/schema.d.ts +0 -81
  191. package/dist/schema.d.ts.map +0 -1
  192. package/dist/schema.js +0 -46
  193. package/dist/schema.js.map +0 -1
  194. package/dist/util.d.ts.map +0 -1
  195. package/dist/util.js.map +0 -1
  196. package/src/componentKey.ts +0 -9
  197. package/src/react/useComponentState.ts +0 -385
  198. package/src/reactiveQueries/graph.ts +0 -15
  199. package/src/schema.ts +0 -143
  200. /package/dist/{bounded-collections.d.ts → utils/bounded-collections.d.ts} +0 -0
  201. /package/dist/{otel.d.ts → utils/otel.d.ts} +0 -0
  202. /package/dist/{util.d.ts → utils/util.d.ts} +0 -0
  203. /package/dist/{util.js → utils/util.js} +0 -0
  204. /package/src/{bounded-collections.ts → utils/bounded-collections.ts} +0 -0
  205. /package/src/{otel.ts → utils/otel.ts} +0 -0
  206. /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