@livestore/common 0.3.2-dev.0 → 0.3.2-dev.1

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 (255) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +7 -7
  3. package/dist/__tests__/fixture.d.ts +4 -4
  4. package/dist/__tests__/fixture.js +2 -2
  5. package/dist/adapter-types.d.ts +9 -9
  6. package/dist/adapter-types.d.ts.map +1 -1
  7. package/dist/adapter-types.js +4 -4
  8. package/dist/adapter-types.js.map +1 -1
  9. package/dist/debug-info.d.ts +2 -2
  10. package/dist/debug-info.js +2 -2
  11. package/dist/devtools/devtools-messages-client-session.d.ts +27 -27
  12. package/dist/devtools/devtools-messages-client-session.js +4 -4
  13. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  14. package/dist/devtools/devtools-messages-common.js +1 -1
  15. package/dist/devtools/devtools-messages-leader.d.ts +35 -35
  16. package/dist/devtools/devtools-messages-leader.js +4 -4
  17. package/dist/devtools/devtools-messages.d.ts +3 -3
  18. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  19. package/dist/devtools/devtools-messages.js +3 -3
  20. package/dist/devtools/devtools-messages.js.map +1 -1
  21. package/dist/devtools/mod.d.ts +3 -3
  22. package/dist/devtools/mod.js +3 -3
  23. package/dist/index.d.ts +16 -16
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +16 -16
  26. package/dist/index.js.map +1 -1
  27. package/dist/leader-thread/LeaderSyncProcessor.d.ts +5 -5
  28. package/dist/leader-thread/LeaderSyncProcessor.js +11 -11
  29. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  30. package/dist/leader-thread/connection.d.ts +4 -4
  31. package/dist/leader-thread/connection.js +2 -2
  32. package/dist/leader-thread/eventlog.d.ts +7 -7
  33. package/dist/leader-thread/eventlog.js +8 -8
  34. package/dist/leader-thread/eventlog.js.map +1 -1
  35. package/dist/leader-thread/leader-worker-devtools.d.ts +3 -3
  36. package/dist/leader-thread/leader-worker-devtools.js +3 -3
  37. package/dist/leader-thread/make-leader-thread-layer.d.ts +7 -7
  38. package/dist/leader-thread/make-leader-thread-layer.js +10 -10
  39. package/dist/leader-thread/materialize-event.d.ts +4 -4
  40. package/dist/leader-thread/materialize-event.js +7 -7
  41. package/dist/leader-thread/mod.d.ts +8 -8
  42. package/dist/leader-thread/mod.d.ts.map +1 -1
  43. package/dist/leader-thread/mod.js +8 -8
  44. package/dist/leader-thread/mod.js.map +1 -1
  45. package/dist/leader-thread/recreate-db.d.ts +5 -5
  46. package/dist/leader-thread/recreate-db.js +2 -2
  47. package/dist/leader-thread/shutdown-channel.d.ts +1 -1
  48. package/dist/leader-thread/shutdown-channel.js +1 -1
  49. package/dist/leader-thread/types.d.ts +6 -6
  50. package/dist/make-client-session.d.ts +2 -2
  51. package/dist/make-client-session.d.ts.map +1 -1
  52. package/dist/make-client-session.js +2 -2
  53. package/dist/make-client-session.js.map +1 -1
  54. package/dist/materializer-helper.d.ts +5 -5
  55. package/dist/materializer-helper.js +5 -5
  56. package/dist/rematerialize-from-eventlog.d.ts +4 -4
  57. package/dist/rematerialize-from-eventlog.js +3 -3
  58. package/dist/schema/EventDef.d.ts +3 -3
  59. package/dist/schema/EventSequenceNumber.test.js +1 -1
  60. package/dist/schema/LiveStoreEvent.d.ts +5 -5
  61. package/dist/schema/LiveStoreEvent.js +1 -1
  62. package/dist/schema/events.d.ts +1 -1
  63. package/dist/schema/events.d.ts.map +1 -1
  64. package/dist/schema/events.js +1 -1
  65. package/dist/schema/events.js.map +1 -1
  66. package/dist/schema/mod.d.ts +9 -9
  67. package/dist/schema/mod.d.ts.map +1 -1
  68. package/dist/schema/mod.js +9 -9
  69. package/dist/schema/mod.js.map +1 -1
  70. package/dist/schema/schema.d.ts +4 -4
  71. package/dist/schema/schema.js +3 -3
  72. package/dist/schema/state/mod.d.ts +2 -2
  73. package/dist/schema/state/mod.js +2 -2
  74. package/dist/schema/state/sqlite/client-document-def.d.ts +5 -5
  75. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  76. package/dist/schema/state/sqlite/client-document-def.js +6 -6
  77. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  78. package/dist/schema/state/sqlite/client-document-def.test.js +4 -6
  79. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  80. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -1
  81. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +1 -1
  82. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +1 -1
  83. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +3 -3
  84. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  85. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -1
  86. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  87. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -1
  88. package/dist/schema/state/sqlite/db-schema/hash.js +0 -1
  89. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -1
  90. package/dist/schema/state/sqlite/db-schema/mod.d.ts +2 -2
  91. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -1
  92. package/dist/schema/state/sqlite/db-schema/mod.js +2 -2
  93. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -1
  94. package/dist/schema/state/sqlite/mod.d.ts +7 -7
  95. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  96. package/dist/schema/state/sqlite/mod.js +7 -7
  97. package/dist/schema/state/sqlite/mod.js.map +1 -1
  98. package/dist/schema/state/sqlite/query-builder/api.d.ts +5 -5
  99. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +2 -2
  100. package/dist/schema/state/sqlite/query-builder/astToSql.js +1 -1
  101. package/dist/schema/state/sqlite/query-builder/impl.d.ts +2 -2
  102. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  103. package/dist/schema/state/sqlite/query-builder/impl.js +4 -14
  104. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  105. package/dist/schema/state/sqlite/query-builder/impl.test.js +3 -3
  106. package/dist/schema/state/sqlite/query-builder/mod.d.ts +2 -2
  107. package/dist/schema/state/sqlite/query-builder/mod.js +2 -2
  108. package/dist/schema/state/sqlite/schema-helpers.d.ts +1 -1
  109. package/dist/schema/state/sqlite/schema-helpers.js +1 -1
  110. package/dist/schema/state/sqlite/system-tables.d.ts +10 -10
  111. package/dist/schema/state/sqlite/system-tables.js +3 -3
  112. package/dist/schema/state/sqlite/table-def.d.ts +2 -2
  113. package/dist/schema/state/sqlite/table-def.js +2 -2
  114. package/dist/schema-management/common.d.ts +2 -2
  115. package/dist/schema-management/common.js +1 -1
  116. package/dist/schema-management/migrations.d.ts +6 -6
  117. package/dist/schema-management/migrations.js +5 -5
  118. package/dist/schema-management/validate-schema.d.ts +4 -4
  119. package/dist/schema-management/validate-schema.js +1 -1
  120. package/dist/sql-queries/index.d.ts +3 -3
  121. package/dist/sql-queries/index.js +3 -3
  122. package/dist/sql-queries/sql-queries.d.ts +2 -2
  123. package/dist/sql-queries/sql-queries.js +3 -3
  124. package/dist/sql-queries/sql-query-builder.d.ts +3 -3
  125. package/dist/sql-queries/sql-query-builder.js +1 -1
  126. package/dist/sql-queries/types.d.ts +1 -1
  127. package/dist/sqlite-db-helper.d.ts +2 -2
  128. package/dist/sqlite-db-helper.js +1 -1
  129. package/dist/sqlite-types.d.ts +4 -4
  130. package/dist/sync/ClientSessionSyncProcessor.d.ts +17 -6
  131. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  132. package/dist/sync/ClientSessionSyncProcessor.js +30 -11
  133. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  134. package/dist/sync/index.d.ts +3 -3
  135. package/dist/sync/index.d.ts.map +1 -1
  136. package/dist/sync/index.js +3 -3
  137. package/dist/sync/index.js.map +1 -1
  138. package/dist/sync/next/compact-events.d.ts +1 -1
  139. package/dist/sync/next/compact-events.js +4 -4
  140. package/dist/sync/next/facts.d.ts +3 -3
  141. package/dist/sync/next/facts.js +2 -2
  142. package/dist/sync/next/graphology.d.ts.map +1 -1
  143. package/dist/sync/next/graphology.js.map +1 -1
  144. package/dist/sync/next/graphology_.d.ts +1 -1
  145. package/dist/sync/next/graphology_.d.ts.map +1 -1
  146. package/dist/sync/next/graphology_.js +1 -1
  147. package/dist/sync/next/graphology_.js.map +1 -1
  148. package/dist/sync/next/history-dag-common.d.ts +3 -3
  149. package/dist/sync/next/history-dag-common.js +2 -2
  150. package/dist/sync/next/history-dag.d.ts +2 -2
  151. package/dist/sync/next/history-dag.js +3 -3
  152. package/dist/sync/next/mod.d.ts +5 -5
  153. package/dist/sync/next/mod.d.ts.map +1 -1
  154. package/dist/sync/next/mod.js +5 -5
  155. package/dist/sync/next/mod.js.map +1 -1
  156. package/dist/sync/next/rebase-events.d.ts +4 -4
  157. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  158. package/dist/sync/next/rebase-events.js +2 -2
  159. package/dist/sync/next/rebase-events.js.map +1 -1
  160. package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
  161. package/dist/sync/next/test/compact-events.test.js +4 -4
  162. package/dist/sync/next/test/event-fixtures.d.ts +3 -3
  163. package/dist/sync/next/test/event-fixtures.js +5 -5
  164. package/dist/sync/next/test/mod.d.ts +1 -1
  165. package/dist/sync/next/test/mod.js +1 -1
  166. package/dist/sync/sync.d.ts +4 -4
  167. package/dist/sync/sync.js +1 -1
  168. package/dist/sync/syncstate.d.ts +1 -1
  169. package/dist/sync/syncstate.js +2 -2
  170. package/dist/sync/syncstate.test.js +3 -4
  171. package/dist/sync/syncstate.test.js.map +1 -1
  172. package/dist/sync/validate-push-payload.d.ts +2 -2
  173. package/dist/sync/validate-push-payload.js +1 -1
  174. package/dist/util.d.ts.map +1 -1
  175. package/dist/util.js +0 -1
  176. package/dist/util.js.map +1 -1
  177. package/dist/version.d.ts +1 -1
  178. package/dist/version.js +1 -1
  179. package/package.json +6 -6
  180. package/src/ClientSessionLeaderThreadProxy.ts +7 -7
  181. package/src/__tests__/fixture.ts +2 -2
  182. package/src/adapter-types.ts +10 -9
  183. package/src/debug-info.ts +2 -2
  184. package/src/devtools/devtools-messages-client-session.ts +4 -4
  185. package/src/devtools/devtools-messages-common.ts +1 -1
  186. package/src/devtools/devtools-messages-leader.ts +4 -4
  187. package/src/devtools/devtools-messages.ts +3 -3
  188. package/src/devtools/mod.ts +3 -3
  189. package/src/index.ts +16 -16
  190. package/src/leader-thread/LeaderSyncProcessor.ts +14 -14
  191. package/src/leader-thread/connection.ts +5 -5
  192. package/src/leader-thread/eventlog.ts +12 -12
  193. package/src/leader-thread/leader-worker-devtools.ts +4 -4
  194. package/src/leader-thread/make-leader-thread-layer.ts +16 -16
  195. package/src/leader-thread/materialize-event.ts +9 -9
  196. package/src/leader-thread/mod.ts +8 -8
  197. package/src/leader-thread/recreate-db.ts +6 -6
  198. package/src/leader-thread/shutdown-channel.ts +1 -1
  199. package/src/leader-thread/types.ts +6 -6
  200. package/src/make-client-session.ts +3 -4
  201. package/src/materializer-helper.ts +11 -11
  202. package/src/rematerialize-from-eventlog.ts +6 -6
  203. package/src/schema/EventDef.ts +3 -3
  204. package/src/schema/EventSequenceNumber.test.ts +1 -1
  205. package/src/schema/LiveStoreEvent.ts +3 -3
  206. package/src/schema/events.ts +1 -1
  207. package/src/schema/mod.ts +9 -9
  208. package/src/schema/schema.ts +7 -7
  209. package/src/schema/state/mod.ts +2 -2
  210. package/src/schema/state/sqlite/client-document-def.test.ts +9 -7
  211. package/src/schema/state/sqlite/client-document-def.ts +45 -33
  212. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +1 -1
  213. package/src/schema/state/sqlite/db-schema/ast/validate.ts +1 -1
  214. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +1 -1
  215. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +19 -13
  216. package/src/schema/state/sqlite/db-schema/hash.ts +0 -1
  217. package/src/schema/state/sqlite/db-schema/mod.ts +2 -2
  218. package/src/schema/state/sqlite/mod.ts +13 -13
  219. package/src/schema/state/sqlite/query-builder/api.ts +5 -5
  220. package/src/schema/state/sqlite/query-builder/astToSql.ts +4 -4
  221. package/src/schema/state/sqlite/query-builder/impl.test.ts +4 -4
  222. package/src/schema/state/sqlite/query-builder/impl.ts +8 -16
  223. package/src/schema/state/sqlite/query-builder/mod.ts +2 -2
  224. package/src/schema/state/sqlite/schema-helpers.ts +2 -2
  225. package/src/schema/state/sqlite/system-tables.ts +3 -3
  226. package/src/schema/state/sqlite/table-def.ts +3 -3
  227. package/src/schema-management/common.ts +3 -3
  228. package/src/schema-management/migrations.ts +11 -11
  229. package/src/schema-management/validate-schema.ts +4 -4
  230. package/src/sql-queries/index.ts +3 -3
  231. package/src/sql-queries/sql-queries.ts +4 -4
  232. package/src/sql-queries/sql-query-builder.ts +4 -4
  233. package/src/sql-queries/types.ts +1 -1
  234. package/src/sqlite-db-helper.ts +3 -3
  235. package/src/sqlite-types.ts +4 -4
  236. package/src/sync/ClientSessionSyncProcessor.ts +50 -12
  237. package/src/sync/index.ts +3 -3
  238. package/src/sync/next/compact-events.ts +5 -5
  239. package/src/sync/next/facts.ts +4 -4
  240. package/src/sync/next/graphology.ts +2 -4
  241. package/src/sync/next/graphology_.ts +1 -1
  242. package/src/sync/next/history-dag-common.ts +3 -3
  243. package/src/sync/next/history-dag.ts +3 -3
  244. package/src/sync/next/mod.ts +5 -5
  245. package/src/sync/next/rebase-events.ts +6 -6
  246. package/src/sync/next/test/compact-events.calculator.test.ts +4 -4
  247. package/src/sync/next/test/compact-events.test.ts +5 -5
  248. package/src/sync/next/test/event-fixtures.ts +7 -7
  249. package/src/sync/next/test/mod.ts +1 -1
  250. package/src/sync/sync.ts +4 -4
  251. package/src/sync/syncstate.test.ts +9 -6
  252. package/src/sync/syncstate.ts +2 -2
  253. package/src/sync/validate-push-payload.ts +2 -2
  254. package/src/util.ts +0 -1
  255. package/src/version.ts +1 -1
@@ -2,15 +2,15 @@ import { shouldNeverHappen } from '@livestore/utils'
2
2
  import type { Option, Types } from '@livestore/utils/effect'
3
3
  import { Schema, SchemaAST } from '@livestore/utils/effect'
4
4
 
5
- import { SessionIdSymbol } from '../../../adapter-types.js'
6
- import { sql } from '../../../util.js'
7
- import type { EventDef, Materializer } from '../../EventDef.js'
8
- import { defineEvent, defineMaterializer } from '../../EventDef.js'
9
- import { SqliteDsl } from './db-schema/mod.js'
10
- import type { QueryBuilder, QueryBuilderAst } from './query-builder/mod.js'
11
- import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.js'
12
- import type { TableDef, TableDefBase } from './table-def.js'
13
- import { table } from './table-def.js'
5
+ import { SessionIdSymbol } from '../../../adapter-types.ts'
6
+ import { sql } from '../../../util.ts'
7
+ import type { EventDef, Materializer } from '../../EventDef.ts'
8
+ import { defineEvent, defineMaterializer } from '../../EventDef.ts'
9
+ import { SqliteDsl } from './db-schema/mod.ts'
10
+ import type { QueryBuilder, QueryBuilderAst } from './query-builder/mod.ts'
11
+ import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.ts'
12
+ import type { TableDef, TableDefBase } from './table-def.ts'
13
+ import { table } from './table-def.ts'
14
14
 
15
15
  /**
16
16
  * Special:
@@ -386,37 +386,49 @@ export namespace ClientDocumentTableDef {
386
386
  }
387
387
  }
388
388
 
389
- export type GetOptions<TTableDef extends TraitAny> =
390
- TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions> ? TOptions : never
389
+ export type GetOptions<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<
390
+ any,
391
+ any,
392
+ any,
393
+ infer TOptions
394
+ >
395
+ ? TOptions
396
+ : never
391
397
 
392
398
  export type TraitAny = Trait<any, any, any, any>
393
399
 
394
- export type DefaultIdType<TTableDef extends TraitAny> =
395
- TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions>
396
- ? TOptions['default']['id'] extends SessionIdSymbol | string
397
- ? TOptions['default']['id']
398
- : never
400
+ export type DefaultIdType<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<
401
+ any,
402
+ any,
403
+ any,
404
+ infer TOptions
405
+ >
406
+ ? TOptions['default']['id'] extends SessionIdSymbol | string
407
+ ? TOptions['default']['id']
399
408
  : never
409
+ : never
400
410
 
401
- export type SetEventDefLike<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> =
402
- // Helper to create partial event
403
- (TOptions['default']['id'] extends undefined
404
- ? (
405
- args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
406
- id: string | SessionIdSymbol,
407
- ) => { name: `${TName}Set`; args: { id: string; value: TType } }
408
- : (
409
- args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
410
- id?: string | SessionIdSymbol,
411
- ) => { name: `${TName}Set`; args: { id: string; value: TType } }) & {
411
+ export type SetEventDefLike<
412
+ TName extends string,
413
+ TType,
414
+ TOptions extends ClientDocumentTableOptions<TType>,
415
+ > = (TOptions['default']['id'] extends undefined // Helper to create partial event
416
+ ? (
417
+ args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
418
+ id: string | SessionIdSymbol,
419
+ ) => { name: `${TName}Set`; args: { id: string; value: TType } }
420
+ : (
421
+ args: TOptions['partialSet'] extends false ? TType : Partial<TType>,
422
+ id?: string | SessionIdSymbol,
423
+ ) => { name: `${TName}Set`; args: { id: string; value: TType } }) & {
424
+ readonly name: `${TName}Set`
425
+ readonly schema: Schema.Schema<any>
426
+ readonly Event: {
412
427
  readonly name: `${TName}Set`
413
- readonly schema: Schema.Schema<any>
414
- readonly Event: {
415
- readonly name: `${TName}Set`
416
- readonly args: { id: string; value: TType }
417
- }
418
- readonly options: { derived: true; clientOnly: true; facts: undefined }
428
+ readonly args: { id: string; value: TType }
419
429
  }
430
+ readonly options: { derived: true; clientOnly: true; facts: undefined }
431
+ }
420
432
 
421
433
  export type SetEventDef<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = EventDef<
422
434
  TName,
@@ -1,6 +1,6 @@
1
1
  import { type Option, Schema } from '@livestore/utils/effect'
2
2
 
3
- import { hashCode } from '../hash.js'
3
+ import { hashCode } from '../hash.ts'
4
4
 
5
5
  export namespace ColumnType {
6
6
  export type ColumnType = Text | Null | Real | Integer | Blob
@@ -1,4 +1,4 @@
1
- import type { DbSchema } from './sqlite.js'
1
+ import type { DbSchema } from './sqlite.ts'
2
2
 
3
3
  // TODO
4
4
  export const validate = (_dbSchema: DbSchema) => {
@@ -1,7 +1,7 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
  import { describe, expect, test } from 'vitest'
3
3
 
4
- import * as F from './field-defs.js'
4
+ import * as F from './field-defs.ts'
5
5
 
6
6
  describe.concurrent('FieldDefs', () => {
7
7
  test('text', () => {
@@ -2,10 +2,10 @@ import type { Nullable } from '@livestore/utils'
2
2
  import type { Option, Types } from '@livestore/utils/effect'
3
3
  import { Schema } from '@livestore/utils/effect'
4
4
 
5
- import type * as SqliteAst from '../ast/sqlite.js'
6
- import type { ColumnDefinition } from './field-defs.js'
5
+ import type * as SqliteAst from '../ast/sqlite.ts'
6
+ import type { ColumnDefinition } from './field-defs.ts'
7
7
 
8
- export * from './field-defs.js'
8
+ export * from './field-defs.ts'
9
9
 
10
10
  export type DbSchema = {
11
11
  [key: string]: TableDefinition<string, Columns>
@@ -19,12 +19,13 @@ export type DbSchemaInput = Record<string, TableDefinition<any, any>> | Readonly
19
19
  * - array: we use the table name of each array item (= table definition) as the object key
20
20
  * - object: we discard the keys of the input object and use the table name of each object value (= table definition) as the new object key
21
21
  */
22
- export type DbSchemaFromInputSchema<TSchemaInput extends DbSchemaInput> =
23
- TSchemaInput extends ReadonlyArray<TableDefinition<any, any>>
24
- ? { [K in TSchemaInput[number] as K['name']]: K }
25
- : TSchemaInput extends Record<string, TableDefinition<any, any>>
26
- ? { [K in keyof TSchemaInput as TSchemaInput[K]['name']]: TSchemaInput[K] }
27
- : never
22
+ export type DbSchemaFromInputSchema<TSchemaInput extends DbSchemaInput> = TSchemaInput extends ReadonlyArray<
23
+ TableDefinition<any, any>
24
+ >
25
+ ? { [K in TSchemaInput[number] as K['name']]: K }
26
+ : TSchemaInput extends Record<string, TableDefinition<any, any>>
27
+ ? { [K in keyof TSchemaInput as TSchemaInput[K]['name']]: TSchemaInput[K] }
28
+ : never
28
29
 
29
30
  // TODO ensure via runtime check (possibly even via type-level check) that all index names are unique
30
31
  export const makeDbSchema = <TDbSchemaInput extends DbSchemaInput>(
@@ -113,8 +114,12 @@ export type TableDefinition<TName extends string, TColumns extends Columns> = {
113
114
 
114
115
  export type Columns = Record<string, ColumnDefinition<any, any>>
115
116
 
116
- export type IsSingleColumn<TColumns extends Columns | ColumnDefinition<any, any>> =
117
- TColumns extends ColumnDefinition<any, any> ? true : false
117
+ export type IsSingleColumn<TColumns extends Columns | ColumnDefinition<any, any>> = TColumns extends ColumnDefinition<
118
+ any,
119
+ any
120
+ >
121
+ ? true
122
+ : false
118
123
 
119
124
  /**
120
125
  * NOTE this is only needed to avoid a TS limitation where `StructSchemaForColumns` in the default case
@@ -207,8 +212,9 @@ export namespace FromColumns {
207
212
 
208
213
  export type RequiredInsertColumnNames<TColumns extends Columns> = keyof RequiredInsertColumns<TColumns>
209
214
 
210
- export type RequiresInsertValues<TColumns extends Columns> =
211
- RequiredInsertColumnNames<TColumns> extends never ? false : true
215
+ export type RequiresInsertValues<TColumns extends Columns> = RequiredInsertColumnNames<TColumns> extends never
216
+ ? false
217
+ : true
212
218
 
213
219
  export type InsertRowDecoded<TColumns extends Columns> = Types.Simplify<
214
220
  Pick<RowDecodedAll<TColumns>, RequiredInsertColumnNames<TColumns>> &
@@ -5,7 +5,6 @@ export const hashCode = (str: string) => {
5
5
  let chr: number
6
6
  if (str.length === 0) return hash
7
7
  for (i = 0; i < str.length; i++) {
8
- // eslint-disable-next-line unicorn/prefer-code-point
9
8
  chr = str.charCodeAt(i)
10
9
  hash = (hash << 5) - hash + chr
11
10
  hash = Math.trunc(hash) // Convert to 32bit integer
@@ -1,2 +1,2 @@
1
- export * as SqliteDsl from './dsl/mod.js'
2
- export * as SqliteAst from './ast/sqlite.js'
1
+ export * as SqliteAst from './ast/sqlite.ts'
2
+ export * as SqliteDsl from './dsl/mod.ts'
@@ -1,22 +1,22 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
 
3
- import type { MigrationOptions } from '../../../adapter-types.js'
4
- import { type Materializer, rawSqlEvent, rawSqlMaterializer } from '../../EventDef.js'
5
- import type { InternalState } from '../../schema.js'
6
- import { ClientDocumentTableDefSymbol, tableIsClientDocumentTable } from './client-document-def.js'
7
- import { SqliteAst } from './db-schema/mod.js'
8
- import { stateSystemTables } from './system-tables.js'
9
- import type { TableDef, TableDefBase } from './table-def.js'
3
+ import type { MigrationOptions } from '../../../adapter-types.ts'
4
+ import { type Materializer, rawSqlEvent, rawSqlMaterializer } from '../../EventDef.ts'
5
+ import type { InternalState } from '../../schema.ts'
6
+ import { ClientDocumentTableDefSymbol, tableIsClientDocumentTable } from './client-document-def.ts'
7
+ import { SqliteAst } from './db-schema/mod.ts'
8
+ import { stateSystemTables } from './system-tables.ts'
9
+ import type { TableDef, TableDefBase } from './table-def.ts'
10
10
 
11
- export * from './table-def.js'
11
+ export * from '../../EventDef.ts'
12
12
  export {
13
- ClientDocumentTableDefSymbol,
14
- tableIsClientDocumentTable,
15
- clientDocument,
16
13
  type ClientDocumentTableDef,
14
+ ClientDocumentTableDefSymbol,
17
15
  type ClientDocumentTableOptions,
18
- } from './client-document-def.js'
19
- export * from '../../EventDef.js'
16
+ clientDocument,
17
+ tableIsClientDocumentTable,
18
+ } from './client-document-def.ts'
19
+ export * from './table-def.ts'
20
20
 
21
21
  export const makeState = <TStateInput extends InputState>(inputSchema: TStateInput): InternalState => {
22
22
  const inputTables: ReadonlyArray<TableDef> = Array.isArray(inputSchema.tables)
@@ -1,11 +1,11 @@
1
1
  import type { GetValForKey, SingleOrReadonlyArray } from '@livestore/utils'
2
2
  import { type Option, Predicate, type Schema } from '@livestore/utils/effect'
3
3
 
4
- import type { SessionIdSymbol } from '../../../../adapter-types.js'
5
- import type { SqlValue } from '../../../../util.js'
6
- import type { ClientDocumentTableDef } from '../client-document-def.js'
7
- import type { SqliteDsl } from '../db-schema/mod.js'
8
- import type { TableDefBase } from '../table-def.js'
4
+ import type { SessionIdSymbol } from '../../../../adapter-types.ts'
5
+ import type { SqlValue } from '../../../../util.ts'
6
+ import type { ClientDocumentTableDef } from '../client-document-def.ts'
7
+ import type { SqliteDsl } from '../db-schema/mod.ts'
8
+ import type { TableDefBase } from '../table-def.ts'
9
9
 
10
10
  export type QueryBuilderAst =
11
11
  | QueryBuilderAst.SelectQuery
@@ -1,10 +1,10 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
  import { Schema } from '@livestore/utils/effect'
3
3
 
4
- import { SessionIdSymbol } from '../../../../adapter-types.js'
5
- import type { SqlValue } from '../../../../util.js'
6
- import type { State } from '../../../mod.js'
7
- import type { QueryBuilderAst } from './api.js'
4
+ import { SessionIdSymbol } from '../../../../adapter-types.ts'
5
+ import type { SqlValue } from '../../../../util.ts'
6
+ import type { State } from '../../../mod.ts'
7
+ import type { QueryBuilderAst } from './api.ts'
8
8
 
9
9
  // Helper functions for SQL generation
10
10
  const formatWhereClause = (
@@ -1,9 +1,9 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
  import { describe, expect, it } from 'vitest'
3
3
 
4
- import { State } from '../../../mod.js'
5
- import type { QueryBuilder } from './api.js'
6
- import { getResultSchema } from './impl.js'
4
+ import { State } from '../../../mod.ts'
5
+ import type { QueryBuilder } from './api.ts'
6
+ import { getResultSchema } from './impl.ts'
7
7
 
8
8
  const todos = State.SQLite.table({
9
9
  name: 'todos',
@@ -116,7 +116,7 @@ describe('query builder', () => {
116
116
  1,
117
117
  ],
118
118
  "query": "SELECT id, text FROM 'todos' LIMIT ?",
119
- "schema": "(ReadonlyArray<{ readonly id: string; readonly text: string }> <-> { readonly id: string; readonly text: string })",
119
+ "schema": "(ReadonlyArray<{ readonly id: string; readonly text: string } | undefined> <-> { readonly id: string; readonly text: string } | undefined)",
120
120
  }
121
121
  `)
122
122
 
@@ -2,20 +2,18 @@
2
2
  import { casesHandled, shouldNeverHappen } from '@livestore/utils'
3
3
  import { Match, Option, Predicate, Schema } from '@livestore/utils/effect'
4
4
 
5
- import type { TableDefBase } from '../table-def.js'
6
- import type { QueryBuilder, QueryBuilderAst } from './api.js'
7
- import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './api.js'
8
- import { astToSql } from './astToSql.js'
5
+ import type { TableDefBase } from '../table-def.ts'
6
+ import type { QueryBuilder, QueryBuilderAst } from './api.ts'
7
+ import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './api.ts'
8
+ import { astToSql } from './astToSql.ts'
9
9
  export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
10
10
  tableDef: TTableDef,
11
11
  ast: QueryBuilderAst = emptyAst(tableDef),
12
12
  ): QueryBuilder<TResult, TTableDef, never> => {
13
13
  const api = {
14
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
15
14
  select() {
16
15
  assertSelectQueryBuilderAst(ast)
17
16
 
18
- // eslint-disable-next-line prefer-rest-params
19
17
  const params = [...arguments]
20
18
 
21
19
  // Pluck if there's only one column selected
@@ -43,7 +41,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
43
41
  if (ast._tag === 'RowQuery') return invalidQueryBuilder('Cannot use where with row')
44
42
 
45
43
  if (arguments.length === 1) {
46
- // eslint-disable-next-line prefer-rest-params
47
44
  const params = arguments[0]
48
45
  const newOps = Object.entries(params)
49
46
  .filter(([, value]) => value !== undefined)
@@ -69,7 +66,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
69
66
  }
70
67
  }
71
68
 
72
- // eslint-disable-next-line prefer-rest-params
73
69
  const [col, opOrValue, valueOrUndefined] = arguments
74
70
  const op = valueOrUndefined === undefined ? '=' : opOrValue
75
71
  const value = valueOrUndefined === undefined ? opOrValue : valueOrUndefined
@@ -89,14 +85,13 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
89
85
  }
90
86
  }
91
87
  },
92
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
88
+
93
89
  orderBy() {
94
90
  assertSelectQueryBuilderAst(ast)
95
91
 
96
92
  if (arguments.length === 0 || arguments.length > 2) return invalidQueryBuilder()
97
93
 
98
94
  if (arguments.length === 1) {
99
- // eslint-disable-next-line prefer-rest-params
100
95
  const params = arguments[0] as QueryBuilder.OrderByParams<TTableDef>
101
96
  return makeQueryBuilder(tableDef, {
102
97
  ...ast,
@@ -104,7 +99,6 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
104
99
  })
105
100
  }
106
101
 
107
- // eslint-disable-next-line prefer-rest-params
108
102
  const [col, direction] = arguments as any as [keyof TTableDef['sqliteDef']['columns'] & string, 'asc' | 'desc']
109
103
 
110
104
  return makeQueryBuilder(tableDef, {
@@ -148,13 +142,13 @@ export const makeQueryBuilder = <TResult, TTableDef extends TableDefBase>(
148
142
  pickFirst: { _tag: 'enabled', ...(behaviour ?? { behaviour: 'undefined' }) },
149
143
  })
150
144
  },
151
- // // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
145
+ //
152
146
  // getOrCreate() {
153
147
  // if (tableDef.options.isClientDocumentTable === false) {
154
148
  // return invalidQueryBuilder(`getOrCreate() is not allowed when table is not a client document table`)
155
149
  // }
156
150
 
157
- // // eslint-disable-next-line prefer-rest-params
151
+ //
158
152
  // const params = [...arguments]
159
153
 
160
154
  // let id: string | number
@@ -277,21 +271,19 @@ const emptyAst = (tableDef: TableDefBase): QueryBuilderAst.SelectQuery => ({
277
271
  })
278
272
 
279
273
  // Helper functions
280
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
274
+
281
275
  function assertSelectQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.SelectQuery {
282
276
  if (ast._tag !== 'SelectQuery') {
283
277
  return shouldNeverHappen(`Expected SelectQuery but got ${ast._tag}`)
284
278
  }
285
279
  }
286
280
 
287
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
288
281
  function assertInsertQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.InsertQuery {
289
282
  if (ast._tag !== 'InsertQuery') {
290
283
  return shouldNeverHappen(`Expected InsertQuery but got ${ast._tag}`)
291
284
  }
292
285
  }
293
286
 
294
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
295
287
  function assertWriteQueryBuilderAst(ast: QueryBuilderAst): asserts ast is QueryBuilderAst.WriteQuery {
296
288
  if (ast._tag !== 'InsertQuery' && ast._tag !== 'UpdateQuery' && ast._tag !== 'DeleteQuery') {
297
289
  return shouldNeverHappen(`Expected WriteQuery but got ${ast._tag}`)
@@ -1,5 +1,5 @@
1
- export * from './api.js'
2
- export * from './impl.js'
1
+ export * from './api.ts'
2
+ export * from './impl.ts'
3
3
 
4
4
  /**
5
5
  * Design decisions:
@@ -1,8 +1,8 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
  import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect'
3
3
 
4
- import { SqliteDsl } from './db-schema/mod.js'
5
- import type { TableDef, TableDefBase } from './table-def.js'
4
+ import { SqliteDsl } from './db-schema/mod.ts'
5
+ import type { TableDef, TableDefBase } from './table-def.ts'
6
6
 
7
7
  export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
8
8
  tableDef: TTableDef,
@@ -1,8 +1,8 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
 
3
- import * as EventSequenceNumber from '../../EventSequenceNumber.js'
4
- import { SqliteDsl } from './db-schema/mod.js'
5
- import { table } from './table-def.js'
3
+ import * as EventSequenceNumber from '../../EventSequenceNumber.ts'
4
+ import { SqliteDsl } from './db-schema/mod.ts'
5
+ import { table } from './table-def.ts'
6
6
 
7
7
  /// State DB
8
8
 
@@ -1,9 +1,9 @@
1
1
  import type { Nullable } from '@livestore/utils'
2
2
  import type { Schema, Types } from '@livestore/utils/effect'
3
3
 
4
- import { SqliteDsl } from './db-schema/mod.js'
5
- import type { QueryBuilder } from './query-builder/mod.js'
6
- import { makeQueryBuilder, QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.js'
4
+ import { SqliteDsl } from './db-schema/mod.ts'
5
+ import type { QueryBuilder } from './query-builder/mod.ts'
6
+ import { makeQueryBuilder, QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.ts'
7
7
 
8
8
  export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl
9
9
 
@@ -1,6 +1,6 @@
1
- import type { SqliteDb } from '../adapter-types.js'
2
- import type { ParamsObject } from '../util.js'
3
- import { prepareBindValues } from '../util.js'
1
+ import type { SqliteDb } from '../adapter-types.ts'
2
+ import type { ParamsObject } from '../util.ts'
3
+ import { prepareBindValues } from '../util.ts'
4
4
 
5
5
  // TODO bring back statement caching
6
6
  // will require proper scope-aware cleanup etc (for testing and apps with multiple LiveStore instances)
@@ -1,23 +1,23 @@
1
1
  import { memoizeByStringifyArgs } from '@livestore/utils'
2
2
  import { Effect, Schema as EffectSchema } from '@livestore/utils/effect'
3
3
 
4
- import type { SqliteDb } from '../adapter-types.js'
5
- import type { MigrationsReport, MigrationsReportEntry } from '../defs.js'
6
- import type { UnexpectedError } from '../errors.js'
7
- import type { LiveStoreSchema } from '../schema/mod.js'
8
- import { SqliteAst, SqliteDsl } from '../schema/state/sqlite/db-schema/mod.js'
9
- import type { SchemaEventDefsMetaRow, SchemaMetaRow } from '../schema/state/sqlite/system-tables.js'
4
+ import type { SqliteDb } from '../adapter-types.ts'
5
+ import type { MigrationsReport, MigrationsReportEntry } from '../defs.ts'
6
+ import type { UnexpectedError } from '../errors.ts'
7
+ import type { LiveStoreSchema } from '../schema/mod.ts'
8
+ import { SqliteAst, SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
9
+ import type { SchemaEventDefsMetaRow, SchemaMetaRow } from '../schema/state/sqlite/system-tables.ts'
10
10
  import {
11
11
  isStateSystemTable,
12
12
  SCHEMA_EVENT_DEFS_META_TABLE,
13
13
  SCHEMA_META_TABLE,
14
14
  schemaEventDefsMetaTable,
15
15
  stateSystemTables,
16
- } from '../schema/state/sqlite/system-tables.js'
17
- import { sql } from '../util.js'
18
- import type { SchemaManager } from './common.js'
19
- import { dbExecute, dbSelect } from './common.js'
20
- import { validateSchema } from './validate-schema.js'
16
+ } from '../schema/state/sqlite/system-tables.ts'
17
+ import { sql } from '../util.ts'
18
+ import type { SchemaManager } from './common.ts'
19
+ import { dbExecute, dbSelect } from './common.ts'
20
+ import { validateSchema } from './validate-schema.ts'
21
21
 
22
22
  const getMemoizedTimestamp = memoizeByStringifyArgs(() => new Date().toISOString())
23
23
 
@@ -1,9 +1,9 @@
1
1
  import { Effect, Schema } from '@livestore/utils/effect'
2
2
 
3
- import { UnexpectedError } from '../adapter-types.js'
4
- import type { EventDef } from '../schema/EventDef.js'
5
- import type { LiveStoreSchema } from '../schema/mod.js'
6
- import type { EventDefInfo, SchemaManager } from './common.js'
3
+ import { UnexpectedError } from '../adapter-types.ts'
4
+ import type { EventDef } from '../schema/EventDef.ts'
5
+ import type { LiveStoreSchema } from '../schema/mod.ts'
6
+ import type { EventDefInfo, SchemaManager } from './common.ts'
7
7
 
8
8
  export const validateSchema = (schema: LiveStoreSchema, schemaManager: SchemaManager) =>
9
9
  Effect.gen(function* () {
@@ -1,3 +1,3 @@
1
- export * from './sql-queries.js'
2
- export * from './sql-query-builder.js'
3
- export * from './types.js'
1
+ export * from './sql-queries.ts'
2
+ export * from './sql-query-builder.ts'
3
+ export * from './types.ts'
@@ -1,10 +1,10 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
2
  import { pipe, ReadonlyArray, Schema, TreeFormatter } from '@livestore/utils/effect'
3
3
 
4
- import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.js'
5
- import { sql } from '../util.js'
6
- import { objectEntries } from './misc.js'
7
- import * as ClientTypes from './types.js'
4
+ import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
5
+ import { sql } from '../util.ts'
6
+ import { objectEntries } from './misc.ts'
7
+ import * as ClientTypes from './types.ts'
8
8
 
9
9
  export type BindValues = {
10
10
  readonly [columnName: string]: any
@@ -1,7 +1,7 @@
1
- import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.js'
2
- import type { BindValues } from './sql-queries.js'
3
- import * as SqlQueries from './sql-queries.js'
4
- import type * as ClientTypes from './types.js'
1
+ import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
2
+ import type { BindValues } from './sql-queries.ts'
3
+ import * as SqlQueries from './sql-queries.ts'
4
+ import type * as ClientTypes from './types.ts'
5
5
 
6
6
  export type SqlQuery = [stmt: string, bindValues: BindValues, tableName: string]
7
7
 
@@ -1,7 +1,7 @@
1
1
  import type { Prettify } from '@livestore/utils'
2
2
  import type { Schema } from '@livestore/utils/effect'
3
3
 
4
- import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.js'
4
+ import type { SqliteDsl } from '../schema/state/sqlite/db-schema/mod.ts'
5
5
 
6
6
  export type DecodedValuesForTableAll<TSchema extends SqliteDsl.DbSchema, TTableName extends keyof TSchema> = {
7
7
  [K in keyof GetColumns<TSchema, TTableName>]: Schema.Schema.Type<GetColumn<TSchema, TTableName, K>['schema']>
@@ -1,8 +1,8 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
 
3
- import type { SqliteDb } from './adapter-types.js'
4
- import { getResultSchema, isQueryBuilder } from './schema/state/sqlite/query-builder/mod.js'
5
- import type { PreparedBindValues } from './util.js'
3
+ import type { SqliteDb } from './adapter-types.ts'
4
+ import { getResultSchema, isQueryBuilder } from './schema/state/sqlite/query-builder/mod.ts'
5
+ import type { PreparedBindValues } from './util.ts'
6
6
 
7
7
  export const makeExecute = (
8
8
  execute: (
@@ -1,8 +1,8 @@
1
1
  import { type Effect, Schema } from '@livestore/utils/effect'
2
- import type { SqliteError, UnexpectedError } from './errors.js'
3
- import type { EventSequenceNumber } from './schema/mod.js'
4
- import type { QueryBuilder } from './schema/state/sqlite/query-builder/api.js'
5
- import type { PreparedBindValues } from './util.js'
2
+ import type { SqliteError, UnexpectedError } from './errors.ts'
3
+ import type { EventSequenceNumber } from './schema/mod.ts'
4
+ import type { QueryBuilder } from './schema/state/sqlite/query-builder/api.ts'
5
+ import type { PreparedBindValues } from './util.ts'
6
6
 
7
7
  /**
8
8
  * Common interface for SQLite databases used by LiveStore to facilitate a consistent API across different platforms.