@livestore/common 0.3.0-dev.33 → 0.3.0-dev.34

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 (238) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-types.d.ts +5 -9
  3. package/dist/adapter-types.d.ts.map +1 -1
  4. package/dist/adapter-types.js.map +1 -1
  5. package/dist/devtools/devtools-messages-client-session.d.ts +30 -29
  6. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  7. package/dist/devtools/devtools-messages-client-session.js +1 -0
  8. package/dist/devtools/devtools-messages-client-session.js.map +1 -1
  9. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  10. package/dist/devtools/devtools-messages-leader.d.ts +25 -25
  11. package/dist/devtools/devtools-messages-leader.js +1 -1
  12. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/leader-thread/LeaderSyncProcessor.d.ts +4 -4
  18. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  19. package/dist/leader-thread/LeaderSyncProcessor.js +21 -17
  20. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  21. package/dist/leader-thread/apply-event.d.ts +4 -4
  22. package/dist/leader-thread/apply-event.d.ts.map +1 -1
  23. package/dist/leader-thread/apply-event.js +9 -9
  24. package/dist/leader-thread/apply-event.js.map +1 -1
  25. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  26. package/dist/leader-thread/eventlog.js +11 -15
  27. package/dist/leader-thread/eventlog.js.map +1 -1
  28. package/dist/leader-thread/leader-worker-devtools.d.ts +1 -1
  29. package/dist/leader-thread/leader-worker-devtools.js +13 -12
  30. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  31. package/dist/leader-thread/make-leader-thread-layer.d.ts +2 -2
  32. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  33. package/dist/leader-thread/make-leader-thread-layer.js +11 -18
  34. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  35. package/dist/leader-thread/materialize-event.d.ts +16 -0
  36. package/dist/leader-thread/materialize-event.d.ts.map +1 -0
  37. package/dist/leader-thread/materialize-event.js +103 -0
  38. package/dist/leader-thread/materialize-event.js.map +1 -0
  39. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  40. package/dist/leader-thread/recreate-db.js +9 -17
  41. package/dist/leader-thread/recreate-db.js.map +1 -1
  42. package/dist/leader-thread/types.d.ts +5 -5
  43. package/dist/leader-thread/types.d.ts.map +1 -1
  44. package/dist/materializer-helper.d.ts.map +1 -1
  45. package/dist/materializer-helper.js +1 -1
  46. package/dist/materializer-helper.js.map +1 -1
  47. package/dist/query-builder/api.d.ts +4 -4
  48. package/dist/query-builder/api.d.ts.map +1 -1
  49. package/dist/query-builder/impl.d.ts +2 -2
  50. package/dist/query-builder/impl.test.d.ts +5 -5
  51. package/dist/query-builder/mod.d.ts +2 -2
  52. package/dist/rehydrate-from-eventlog.d.ts +1 -1
  53. package/dist/rehydrate-from-eventlog.d.ts.map +1 -1
  54. package/dist/rehydrate-from-eventlog.js +6 -7
  55. package/dist/rehydrate-from-eventlog.js.map +1 -1
  56. package/dist/rematerialize-from-eventlog.d.ts +14 -0
  57. package/dist/rematerialize-from-eventlog.d.ts.map +1 -0
  58. package/dist/rematerialize-from-eventlog.js +64 -0
  59. package/dist/rematerialize-from-eventlog.js.map +1 -0
  60. package/dist/schema/EventDef.d.ts +3 -3
  61. package/dist/schema/EventDef.d.ts.map +1 -1
  62. package/dist/schema/EventId.test.js +1 -1
  63. package/dist/schema/EventId.test.js.map +1 -1
  64. package/dist/schema/client-document-def.d.ts +2 -2
  65. package/dist/schema/db-schema/dsl/mod.d.ts +3 -3
  66. package/dist/schema/db-schema/mod.d.ts +2 -2
  67. package/dist/schema/mod.d.ts +4 -4
  68. package/dist/schema/mod.d.ts.map +1 -1
  69. package/dist/schema/mod.js +4 -4
  70. package/dist/schema/mod.js.map +1 -1
  71. package/dist/schema/schema-helpers.d.ts +1 -1
  72. package/dist/schema/schema.d.ts +12 -14
  73. package/dist/schema/schema.d.ts.map +1 -1
  74. package/dist/schema/schema.js +5 -28
  75. package/dist/schema/schema.js.map +1 -1
  76. package/dist/schema/state/mod.d.ts +3 -0
  77. package/dist/schema/state/mod.d.ts.map +1 -0
  78. package/dist/schema/state/mod.js +3 -0
  79. package/dist/schema/state/mod.js.map +1 -0
  80. package/dist/schema/state/sqlite/client-document-def.d.ts +223 -0
  81. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -0
  82. package/dist/schema/state/sqlite/client-document-def.js +170 -0
  83. package/dist/schema/state/sqlite/client-document-def.js.map +1 -0
  84. package/dist/schema/state/sqlite/client-document-def.test.d.ts +2 -0
  85. package/dist/schema/state/sqlite/client-document-def.test.d.ts.map +1 -0
  86. package/dist/schema/state/sqlite/client-document-def.test.js +201 -0
  87. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -0
  88. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +69 -0
  89. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -0
  90. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +71 -0
  91. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -0
  92. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +3 -0
  93. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts.map +1 -0
  94. package/dist/schema/state/sqlite/db-schema/ast/validate.js +12 -0
  95. package/dist/schema/state/sqlite/db-schema/ast/validate.js.map +1 -0
  96. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +90 -0
  97. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -0
  98. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +87 -0
  99. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -0
  100. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts +2 -0
  101. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.d.ts.map +1 -0
  102. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +29 -0
  103. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js.map +1 -0
  104. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +90 -0
  105. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -0
  106. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +41 -0
  107. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -0
  108. package/dist/schema/state/sqlite/db-schema/hash.d.ts +2 -0
  109. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -0
  110. package/dist/schema/state/sqlite/db-schema/hash.js +14 -0
  111. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -0
  112. package/dist/schema/state/sqlite/db-schema/mod.d.ts +3 -0
  113. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -0
  114. package/dist/schema/state/sqlite/db-schema/mod.js +3 -0
  115. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -0
  116. package/dist/schema/state/sqlite/mod.d.ts +17 -0
  117. package/dist/schema/state/sqlite/mod.d.ts.map +1 -0
  118. package/dist/schema/state/sqlite/mod.js +41 -0
  119. package/dist/schema/state/sqlite/mod.js.map +1 -0
  120. package/dist/schema/state/sqlite/query-builder/api.d.ts +293 -0
  121. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -0
  122. package/dist/schema/state/sqlite/query-builder/api.js +6 -0
  123. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -0
  124. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +7 -0
  125. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -0
  126. package/dist/schema/state/sqlite/query-builder/astToSql.js +190 -0
  127. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -0
  128. package/dist/schema/state/sqlite/query-builder/impl.d.ts +7 -0
  129. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -0
  130. package/dist/schema/state/sqlite/query-builder/impl.js +286 -0
  131. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -0
  132. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +87 -0
  133. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -0
  134. package/dist/schema/state/sqlite/query-builder/impl.test.js +554 -0
  135. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -0
  136. package/dist/schema/state/sqlite/query-builder/mod.d.ts +17 -0
  137. package/dist/schema/state/sqlite/query-builder/mod.d.ts.map +1 -0
  138. package/dist/schema/state/sqlite/query-builder/mod.js +17 -0
  139. package/dist/schema/state/sqlite/query-builder/mod.js.map +1 -0
  140. package/dist/schema/state/sqlite/schema-helpers.d.ts +4 -0
  141. package/dist/schema/state/sqlite/schema-helpers.d.ts.map +1 -0
  142. package/dist/schema/state/sqlite/schema-helpers.js +30 -0
  143. package/dist/schema/state/sqlite/schema-helpers.js.map +1 -0
  144. package/dist/schema/state/sqlite/sqlite-state.d.ts +12 -0
  145. package/dist/schema/state/sqlite/sqlite-state.d.ts.map +1 -0
  146. package/dist/schema/state/sqlite/sqlite-state.js +36 -0
  147. package/dist/schema/state/sqlite/sqlite-state.js.map +1 -0
  148. package/dist/schema/state/sqlite/system-tables.d.ts +574 -0
  149. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -0
  150. package/dist/schema/state/sqlite/system-tables.js +87 -0
  151. package/dist/schema/state/sqlite/system-tables.js.map +1 -0
  152. package/dist/schema/state/sqlite/table-def.d.ts +84 -0
  153. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -0
  154. package/dist/schema/state/sqlite/table-def.js +36 -0
  155. package/dist/schema/state/sqlite/table-def.js.map +1 -0
  156. package/dist/schema/state/state.d.ts +3 -0
  157. package/dist/schema/state/state.d.ts.map +1 -0
  158. package/dist/schema/state/state.js +3 -0
  159. package/dist/schema/state/state.js.map +1 -0
  160. package/dist/schema/state.d.ts +3 -0
  161. package/dist/schema/state.d.ts.map +1 -0
  162. package/dist/schema/state.js +3 -0
  163. package/dist/schema/state.js.map +1 -0
  164. package/dist/schema/system-tables.d.ts +7 -433
  165. package/dist/schema/system-tables.d.ts.map +1 -1
  166. package/dist/schema/system-tables.js +1 -1
  167. package/dist/schema/system-tables.js.map +1 -1
  168. package/dist/schema/table-def.d.ts +2 -2
  169. package/dist/schema-management/migrations.d.ts +1 -1
  170. package/dist/schema-management/migrations.d.ts.map +1 -1
  171. package/dist/schema-management/migrations.js +14 -12
  172. package/dist/schema-management/migrations.js.map +1 -1
  173. package/dist/schema-management/validate-schema.d.ts +8 -0
  174. package/dist/schema-management/validate-schema.d.ts.map +1 -0
  175. package/dist/schema-management/validate-schema.js +39 -0
  176. package/dist/schema-management/validate-schema.js.map +1 -0
  177. package/dist/sql-queries/sql-queries.d.ts +1 -1
  178. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  179. package/dist/sql-queries/sql-query-builder.d.ts +1 -1
  180. package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
  181. package/dist/sql-queries/types.d.ts +1 -1
  182. package/dist/sql-queries/types.d.ts.map +1 -1
  183. package/dist/sync/ClientSessionSyncProcessor.d.ts +3 -3
  184. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  185. package/dist/sync/ClientSessionSyncProcessor.js +6 -6
  186. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  187. package/dist/sync/next/test/event-fixtures.d.ts +7 -7
  188. package/dist/sync/syncstate.d.ts +4 -4
  189. package/dist/version.d.ts +1 -1
  190. package/dist/version.js +1 -1
  191. package/package.json +9 -3
  192. package/src/adapter-types.ts +4 -10
  193. package/src/devtools/devtools-messages-client-session.ts +1 -0
  194. package/src/devtools/devtools-messages-leader.ts +1 -1
  195. package/src/index.ts +3 -3
  196. package/src/leader-thread/LeaderSyncProcessor.ts +28 -30
  197. package/src/leader-thread/eventlog.ts +12 -17
  198. package/src/leader-thread/leader-worker-devtools.ts +15 -12
  199. package/src/leader-thread/make-leader-thread-layer.ts +15 -21
  200. package/src/leader-thread/{apply-event.ts → materialize-event.ts} +22 -28
  201. package/src/leader-thread/recreate-db.ts +9 -21
  202. package/src/leader-thread/types.ts +5 -5
  203. package/src/materializer-helper.ts +1 -1
  204. package/src/{rehydrate-from-eventlog.ts → rematerialize-from-eventlog.ts} +41 -38
  205. package/src/schema/EventDef.ts +1 -1
  206. package/src/schema/EventId.test.ts +1 -1
  207. package/src/schema/mod.ts +4 -4
  208. package/src/schema/schema.ts +18 -52
  209. package/src/schema/state/mod.ts +2 -0
  210. package/src/schema/{client-document-def.test.ts → state/sqlite/client-document-def.test.ts} +2 -2
  211. package/src/schema/{client-document-def.ts → state/sqlite/client-document-def.ts} +6 -6
  212. package/src/schema/{sqlite-state.ts → state/sqlite/mod.ts} +17 -6
  213. package/src/{query-builder → schema/state/sqlite/query-builder}/api.ts +21 -22
  214. package/src/{query-builder → schema/state/sqlite/query-builder}/astToSql.ts +3 -3
  215. package/src/{query-builder → schema/state/sqlite/query-builder}/impl.test.ts +1 -1
  216. package/src/{query-builder → schema/state/sqlite/query-builder}/impl.ts +3 -4
  217. package/src/schema/{schema-helpers.ts → state/sqlite/schema-helpers.ts} +1 -1
  218. package/src/schema/{system-tables.ts → state/sqlite/system-tables.ts} +6 -5
  219. package/src/schema/{table-def.ts → state/sqlite/table-def.ts} +2 -2
  220. package/src/schema-management/migrations.ts +17 -15
  221. package/src/sql-queries/sql-queries.ts +1 -1
  222. package/src/sql-queries/sql-query-builder.ts +1 -1
  223. package/src/sql-queries/types.ts +1 -1
  224. package/src/sync/ClientSessionSyncProcessor.ts +7 -7
  225. package/src/version.ts +1 -1
  226. package/src/schema/view.ts +0 -2
  227. package/tmp/pack.tgz +0 -0
  228. package/tsconfig.json +0 -12
  229. /package/src/schema/{db-schema → state/sqlite/db-schema}/ast/sqlite.ts +0 -0
  230. /package/src/schema/{db-schema → state/sqlite/db-schema}/ast/validate.ts +0 -0
  231. /package/src/schema/{db-schema → state/sqlite/db-schema}/dsl/__snapshots__/field-defs.test.ts.snap +0 -0
  232. /package/src/schema/{db-schema → state/sqlite/db-schema}/dsl/field-defs.test.ts +0 -0
  233. /package/src/schema/{db-schema → state/sqlite/db-schema}/dsl/field-defs.ts +0 -0
  234. /package/src/schema/{db-schema → state/sqlite/db-schema}/dsl/mod.ts +0 -0
  235. /package/src/schema/{db-schema → state/sqlite/db-schema}/hash.ts +0 -0
  236. /package/src/schema/{db-schema → state/sqlite/db-schema}/mod.ts +0 -0
  237. /package/src/{query-builder → schema/state/sqlite/query-builder}/mod.ts +0 -0
  238. /package/src/schema-management/{validate-mutation-defs.ts → validate-schema.ts} +0 -0
@@ -1,9 +1,9 @@
1
- export * from './system-tables.js';
2
- export { SqliteAst, SqliteDsl } from './db-schema/mod.js';
1
+ export * as SystemTables from './state/sqlite/system-tables.js';
2
+ export { SqliteAst, SqliteDsl } from './state/sqlite/db-schema/mod.js';
3
3
  export * from './EventDef.js';
4
- export * from './schema-helpers.js';
4
+ export * from './state/sqlite/schema-helpers.js';
5
5
  export * from './schema.js';
6
- export * as State from './view.js';
6
+ export * as State from './state/mod.js';
7
7
  export * as LiveStoreEvent from './LiveStoreEvent.js';
8
8
  export * as EventId from './EventId.js';
9
9
  export * as Events from './events.js';
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACzD,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,WAAW,CAAA;AAClC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/schema/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACtE,cAAc,eAAe,CAAA;AAC7B,cAAc,kCAAkC,CAAA;AAChD,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { TableDef, TableDefBase } from './table-def.js';
1
+ import type { TableDef, TableDefBase } from '../../table-def.js';
2
2
  export declare const getDefaultValuesEncoded: <TTableDef extends TableDef>(tableDef: TTableDef, fallbackValues?: Record<string, any>) => Record<string, any>;
3
3
  export declare const getDefaultValuesDecoded: <TTableDef extends TableDefBase>(tableDef: TTableDef, fallbackValues?: Record<string, any>) => Record<string, any>;
4
4
  //# sourceMappingURL=schema-helpers.d.ts.map
@@ -1,24 +1,25 @@
1
1
  import type { MigrationOptions } from '../adapter-types.js';
2
- import type { SqliteDsl } from './db-schema/mod.js';
3
2
  import type { EventDef, EventDefRecord, Materializer, RawSqlEvent } from './EventDef.js';
4
- import type { TableDef } from './table-def.js';
3
+ import type { SqliteDsl } from './state/sqlite/db-schema/mod.js';
4
+ import type { TableDef } from './state/sqlite/table-def.js';
5
5
  export declare const LiveStoreSchemaSymbol: unique symbol;
6
6
  export type LiveStoreSchemaSymbol = typeof LiveStoreSchemaSymbol;
7
7
  export type LiveStoreSchema<TDbSchema extends SqliteDsl.DbSchema = SqliteDsl.DbSchema, TEventsDefRecord extends EventDefRecord = EventDefRecord> = {
8
- readonly _Type: LiveStoreSchemaSymbol;
8
+ readonly LiveStoreSchemaSymbol: LiveStoreSchemaSymbol;
9
9
  /** Only used on type-level */
10
10
  readonly _DbSchemaType: TDbSchema;
11
11
  /** Only used on type-level */
12
12
  readonly _EventDefMapType: TEventsDefRecord;
13
- readonly tables: Map<string, TableDef>;
14
- /** Compound hash of all table defs etc */
15
- readonly hash: number;
16
13
  readonly state: State;
17
14
  readonly eventsDefsMap: Map<string, EventDef.AnyWithoutFn>;
18
- migrationOptions: MigrationOptions;
19
15
  };
20
16
  export type State = {
21
- readonly tables: Map<string, TableDef.Any>;
17
+ readonly sqlite: {
18
+ readonly tables: Map<string, TableDef.Any>;
19
+ readonly migrations: MigrationOptions;
20
+ /** Compound hash of all table defs etc */
21
+ readonly hash: number;
22
+ };
22
23
  readonly materializers: Map<string, Materializer>;
23
24
  };
24
25
  export type InputSchema = {
@@ -27,22 +28,19 @@ export type InputSchema = {
27
28
  };
28
29
  export declare const makeSchema: <TInputSchema extends InputSchema>(
29
30
  /** Note when using the object-notation for tables/events, the object keys are ignored and not used as table/mutation names */
30
- inputSchema: TInputSchema & {
31
- /** "hard-reset" is currently the default strategy */
32
- migrations?: MigrationOptions;
33
- }) => FromInputSchema.DeriveSchema<TInputSchema>;
31
+ inputSchema: TInputSchema) => FromInputSchema.DeriveSchema<TInputSchema>;
34
32
  export declare const getEventDef: <TSchema extends LiveStoreSchema>(schema: TSchema, eventName: string) => {
35
33
  eventDef: EventDef.AnyWithoutFn;
36
34
  materializer: Materializer;
37
35
  };
38
36
  export declare namespace FromInputSchema {
39
- export type DeriveSchema<TInputSchema extends InputSchema> = LiveStoreSchema<DbSchemaFromInputSchemaTables<TInputSchema['state']['tables']>, EventDefRecordFromInputSchemaEvents<TInputSchema['events']>>;
37
+ export type DeriveSchema<TInputSchema extends InputSchema> = LiveStoreSchema<DbSchemaFromInputSchemaTables<TInputSchema['state']['sqlite']['tables']>, EventDefRecordFromInputSchemaEvents<TInputSchema['events']>>;
40
38
  /**
41
39
  * In case of ...
42
40
  * - array: we use the table name of each array item (= table definition) as the object key
43
41
  * - 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
44
42
  */
45
- type DbSchemaFromInputSchemaTables<TTables extends InputSchema['state']['tables']> = TTables extends ReadonlyArray<TableDef> ? {
43
+ type DbSchemaFromInputSchemaTables<TTables extends InputSchema['state']['sqlite']['tables']> = TTables extends ReadonlyArray<TableDef> ? {
46
44
  [K in TTables[number] as K['sqliteDef']['name']]: K['sqliteDef'];
47
45
  } : TTables extends Record<string, TableDef> ? {
48
46
  [K in keyof TTables as TTables[K]['sqliteDef']['name']]: TTables[K]['sqliteDef'];
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,14 @@
1
1
  import { isReadonlyArray, shouldNeverHappen } from '@livestore/utils';
2
- import { tableIsClientDocumentTable } from './client-document-def.js';
3
- import { SqliteAst } from './db-schema/mod.js';
4
2
  import { rawSqlEvent } from './EventDef.js';
5
- import { systemTables } from './system-tables.js';
3
+ import { tableIsClientDocumentTable } from './state/sqlite/client-document-def.js';
4
+ import { stateSystemTables } from './state/sqlite/system-tables.js';
6
5
  export const LiveStoreSchemaSymbol = Symbol.for('livestore.LiveStoreSchema');
7
6
  export const makeSchema = (
8
7
  /** Note when using the object-notation for tables/events, the object keys are ignored and not used as table/mutation names */
9
8
  inputSchema) => {
10
- // const inputTables: ReadonlyArray<TableDef> = Array.isArray(inputSchema.tables)
11
- // ? inputSchema.tables
12
- // : Object.values(inputSchema.tables)
13
- // const inputTables = []
14
- // const tables = new Map<string, TableDef>()
15
- // for (const tableDef of inputTables) {
16
- // // TODO validate tables (e.g. index names are unique)
17
- // if (tables.has(tableDef.sqliteDef.ast.name)) {
18
- // shouldNeverHappen(`Duplicate table name: ${tableDef.sqliteDef.ast.name}. Please use unique names for tables.`)
19
- // }
20
- // tables.set(tableDef.sqliteDef.ast.name, tableDef)
21
- // }
22
9
  const state = inputSchema.state;
23
- const tables = inputSchema.state.tables;
24
- for (const tableDef of systemTables) {
25
- // // @ts-expect-error TODO fix type level issue
10
+ const tables = inputSchema.state.sqlite.tables;
11
+ for (const tableDef of stateSystemTables) {
26
12
  tables.set(tableDef.sqliteDef.name, tableDef);
27
13
  }
28
14
  const eventsDefsMap = new Map();
@@ -45,21 +31,12 @@ inputSchema) => {
45
31
  eventsDefsMap.set(tableDef.set.name, tableDef.set);
46
32
  }
47
33
  }
48
- const hash = SqliteAst.hash({
49
- _tag: 'dbSchema',
50
- tables: [...tables.values()].map((_) => _.sqliteDef.ast),
51
- });
52
34
  return {
53
- _Type: LiveStoreSchemaSymbol,
35
+ LiveStoreSchemaSymbol,
54
36
  _DbSchemaType: Symbol.for('livestore.DbSchemaType'),
55
37
  _EventDefMapType: Symbol.for('livestore.EventDefMapType'),
56
- // tables,
57
- // events,
58
38
  state,
59
- tables: state.tables,
60
39
  eventsDefsMap,
61
- migrationOptions: inputSchema.migrations ?? { strategy: 'from-eventlog' },
62
- hash,
63
40
  };
64
41
  };
65
42
  export const getEventDef = (schema, eventName) => {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * as SQLite from './sqlite/mod.js';
2
+ export { QueryBuilderAstSymbol, QueryBuilderTypeId } from './sqlite/query-builder/mod.js';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/schema/state/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * as SQLite from './sqlite/mod.js';
2
+ export { QueryBuilderAstSymbol, QueryBuilderTypeId } from './sqlite/query-builder/mod.js';
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/schema/state/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -0,0 +1,223 @@
1
+ import type { Option, Types } from '@livestore/utils/effect';
2
+ import { Schema } from '@livestore/utils/effect';
3
+ import { SessionIdSymbol } from '../../../adapter-types.js';
4
+ import type { EventDef, Materializer } from '../../EventDef.js';
5
+ import { SqliteDsl } from './db-schema/mod.js';
6
+ import type { QueryBuilder } from './query-builder/mod.js';
7
+ import type { TableDef, TableDefBase } from './table-def.js';
8
+ /**
9
+ * Special:
10
+ * - Synced across client sessions (e.g. tabs) but not across different clients
11
+ * - Derived setters
12
+ * - Emits client-only events
13
+ * - Has implicit setter-reducers
14
+ * - Similar to `React.useState` (except it's persisted)
15
+ *
16
+ * Careful:
17
+ * - When changing the table definitions in a non-backwards compatible way, the state might be lost without
18
+ * explicit reducers to handle the old auto-generated events
19
+ */
20
+ export declare const clientDocument: <TName extends string, TType, TEncoded, const TOptions extends ClientDocumentTableOptions.Input<NoInfer<TType>>>({ name, schema: valueSchema, ...inputOptions }: {
21
+ name: TName;
22
+ schema: Schema.Schema<TType, TEncoded>;
23
+ } & TOptions) => ClientDocumentTableDef<TName, TType, TEncoded, Types.Simplify<ClientDocumentTableOptions.WithDefaults<TOptions>>>;
24
+ export declare const deriveEventAndMaterializer: ({ name, valueSchema, defaultValue, partialSet, }: {
25
+ name: string;
26
+ valueSchema: Schema.Schema<any, any>;
27
+ defaultValue: any;
28
+ partialSet: boolean;
29
+ }) => {
30
+ eventDef: EventDef<`${string}Set`, {
31
+ readonly value: any;
32
+ readonly id: string | typeof SessionIdSymbol;
33
+ }, {
34
+ readonly value: any;
35
+ readonly id: string | typeof SessionIdSymbol;
36
+ }, true>;
37
+ materializer: Materializer<EventDef<`${string}Set`, {
38
+ readonly value: any;
39
+ readonly id: string | typeof SessionIdSymbol;
40
+ }, {
41
+ readonly value: any;
42
+ readonly id: string | typeof SessionIdSymbol;
43
+ }, true>>;
44
+ };
45
+ export declare const tableIsClientDocumentTable: <TTableDef extends TableDefBase>(tableDef: TTableDef) => tableDef is TTableDef & {
46
+ options: {
47
+ isClientDocumentTable: true;
48
+ };
49
+ } & ClientDocumentTableDef.Trait<TTableDef["sqliteDef"]["name"], any, any, any>;
50
+ export type ClientDocumentTableOptions<TType> = {
51
+ partialSet: boolean;
52
+ default: {
53
+ id: SessionIdSymbol | string | undefined;
54
+ value: TType;
55
+ };
56
+ };
57
+ export declare namespace ClientDocumentTableOptions {
58
+ type Input<TType> = {
59
+ /**
60
+ * Whether to allow for partial set operations. Only applies if the schema is a struct.
61
+ *
62
+ * @default true
63
+ */
64
+ partialSet?: boolean;
65
+ default: {
66
+ id?: SessionIdSymbol | string | undefined;
67
+ value: TType;
68
+ };
69
+ };
70
+ type WithDefaults<TInput extends Input<any>> = {
71
+ partialSet: TInput['partialSet'] extends false ? false : true;
72
+ default: {
73
+ id: TInput['default']['id'] extends string | SessionIdSymbol ? TInput['default']['id'] : undefined;
74
+ value: TInput['default']['value'];
75
+ };
76
+ };
77
+ }
78
+ export type ClientDocumentTableDef<TName extends string, TType, TEncoded, TOptions extends ClientDocumentTableOptions<TType>> = TableDef<ClientDocumentTableDef.SqliteDef<TName, TType>, {
79
+ isClientDocumentTable: true;
80
+ }> & ClientDocumentTableDef.Trait<TName, TType, TEncoded, TOptions>;
81
+ export declare namespace ClientDocumentTableDef {
82
+ type Any = ClientDocumentTableDef<any, any, any, any>;
83
+ type SqliteDef<TName extends string, TType> = SqliteDsl.TableDefinition<TName, {
84
+ id: SqliteDsl.ColumnDefinition<string, string> & {
85
+ default: Option.Some<string>;
86
+ };
87
+ value: SqliteDsl.ColumnDefinition<string, TType> & {
88
+ default: Option.Some<TType>;
89
+ };
90
+ }>;
91
+ type TableDefBase_<TName extends string, TType> = TableDefBase<SqliteDef<TName, TType>, {
92
+ isClientDocumentTable: true;
93
+ }>;
94
+ interface Trait<TName extends string, TType, TEncoded, TOptions extends ClientDocumentTableOptions<TType>> {
95
+ /**
96
+ * Get the current value of the client document table.
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * const someDocumentTable = State.SQLite.clientDocument({
101
+ * name: 'SomeDocumentTable',
102
+ * schema: Schema.Struct({
103
+ * someField: Schema.String,
104
+ * }),
105
+ * default: { value: { someField: 'some-value' } },
106
+ * })
107
+ *
108
+ * const value$ = queryDb(someDocumentTable.get('some-id'))
109
+ *
110
+ * // When you've set a default id, you can omit the id argument
111
+ *
112
+ * const uiState = State.SQLite.clientDocument({
113
+ * name: 'UiState',
114
+ * schema: Schema.Struct({
115
+ * someField: Schema.String,
116
+ * }),
117
+ * default: { id: SessionIdSymbol, value: { someField: 'some-value' } },
118
+ * })
119
+ *
120
+ * const value$ = queryDb(uiState.get())
121
+ * ```
122
+ */
123
+ readonly get: MakeGetQueryBuilder<TName, TType, TOptions>;
124
+ /**
125
+ * Derived event definition for setting the value of the client document table.
126
+ * If the document doesn't exist yet, the first .set event will create it.
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * const someDocumentTable = State.SQLite.clientDocument({
131
+ * name: 'SomeDocumentTable',
132
+ * schema: Schema.Struct({
133
+ * someField: Schema.String,
134
+ * someOtherField: Schema.String,
135
+ * }),
136
+ * default: { value: { someField: 'some-default-value', someOtherField: 'some-other-default-value' } },
137
+ * })
138
+ *
139
+ * const setEventDef = store.commit(someDocumentTable.set({ someField: 'explicit-value' }, 'some-id'))
140
+ * // Will commit an event with the following payload:
141
+ * // { id: 'some-id', value: { someField: 'explicit-value', someOtherField: 'some-other-default-value' } }
142
+ * ```
143
+ *
144
+ * Similar to `.get`, you can omit the id argument if you've set a default id.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const uiState = State.SQLite.clientDocument({
149
+ * name: 'UiState',
150
+ * schema: Schema.Struct({ someField: Schema.String }),
151
+ * default: { id: SessionIdSymbol, value: { someField: 'some-default-value' } },
152
+ * })
153
+ *
154
+ * const setEventDef = store.commit(uiState.set({ someField: 'explicit-value' }))
155
+ * // Will commit an event with the following payload:
156
+ * // { id: '...', value: { someField: 'explicit-value' } }
157
+ * // ^^^
158
+ * // Automatically replaced with the client session id
159
+ * ```
160
+ */
161
+ readonly set: SetEventDefLike<TName, TType, TOptions>;
162
+ readonly Value: TType;
163
+ readonly valueSchema: Schema.Schema<TType, TEncoded>;
164
+ readonly default: TOptions['default'];
165
+ readonly [ClientDocumentTableDefSymbol]: {
166
+ readonly options: TOptions;
167
+ readonly derived: {
168
+ readonly setEventDef: SetEventDef<TName, TType, TOptions>;
169
+ readonly setMaterializer: Materializer<SetEventDef<TName, TType, TOptions>>;
170
+ };
171
+ };
172
+ }
173
+ type GetOptions<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions> ? TOptions : never;
174
+ type TraitAny = Trait<any, any, any, any>;
175
+ type DefaultIdType<TTableDef extends TraitAny> = TTableDef extends ClientDocumentTableDef.Trait<any, any, any, infer TOptions> ? TOptions['default']['id'] extends SessionIdSymbol | string ? TOptions['default']['id'] : never : never;
176
+ type SetEventDefLike<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = (TOptions['default']['id'] extends undefined ? (args: TOptions['partialSet'] extends false ? TType : Partial<TType>, id: string | SessionIdSymbol) => {
177
+ name: `${TName}Set`;
178
+ args: {
179
+ id: string;
180
+ value: TType;
181
+ };
182
+ } : (args: TOptions['partialSet'] extends false ? TType : Partial<TType>, id?: string | SessionIdSymbol) => {
183
+ name: `${TName}Set`;
184
+ args: {
185
+ id: string;
186
+ value: TType;
187
+ };
188
+ }) & {
189
+ readonly name: `${TName}Set`;
190
+ readonly schema: Schema.Schema<any>;
191
+ readonly Event: {
192
+ readonly name: `${TName}Set`;
193
+ readonly args: {
194
+ id: string;
195
+ value: TType;
196
+ };
197
+ };
198
+ readonly options: {
199
+ derived: true;
200
+ clientOnly: true;
201
+ facts: undefined;
202
+ };
203
+ };
204
+ type SetEventDef<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = EventDef<TName, TOptions['partialSet'] extends false ? {
205
+ id: string;
206
+ value: TType;
207
+ } : {
208
+ id: string;
209
+ value: Partial<TType>;
210
+ }, any, true>;
211
+ type MakeGetQueryBuilder<TName extends string, TType, TOptions extends ClientDocumentTableOptions<TType>> = TOptions extends ClientDocumentTableOptions<TType> & {
212
+ default: {
213
+ id: string | SessionIdSymbol;
214
+ };
215
+ } ? (id?: TOptions['default']['id'] | SessionIdSymbol, options?: {
216
+ default: Partial<TType>;
217
+ }) => QueryBuilder<TType, ClientDocumentTableDef.TableDefBase_<TName, TType>, QueryBuilder.ApiFeature> : (id: string | SessionIdSymbol, options?: {
218
+ default: Partial<TType>;
219
+ }) => QueryBuilder<TType, ClientDocumentTableDef.TableDefBase_<TName, TType>, QueryBuilder.ApiFeature>;
220
+ }
221
+ export declare const ClientDocumentTableDefSymbol: unique symbol;
222
+ export type ClientDocumentTableDefSymbol = typeof ClientDocumentTableDefSymbol;
223
+ //# sourceMappingURL=client-document-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-document-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import { shouldNeverHappen } from '@livestore/utils';
2
+ import { Schema, SchemaAST } from '@livestore/utils/effect';
3
+ import { SessionIdSymbol } from '../../../adapter-types.js';
4
+ import { sql } from '../../../util.js';
5
+ import { defineEvent, defineMaterializer } from '../../EventDef.js';
6
+ import { SqliteDsl } from './db-schema/mod.js';
7
+ import { QueryBuilderAstSymbol, QueryBuilderTypeId } from './query-builder/mod.js';
8
+ import { table } from './table-def.js';
9
+ /**
10
+ * Special:
11
+ * - Synced across client sessions (e.g. tabs) but not across different clients
12
+ * - Derived setters
13
+ * - Emits client-only events
14
+ * - Has implicit setter-reducers
15
+ * - Similar to `React.useState` (except it's persisted)
16
+ *
17
+ * Careful:
18
+ * - When changing the table definitions in a non-backwards compatible way, the state might be lost without
19
+ * explicit reducers to handle the old auto-generated events
20
+ */
21
+ export const clientDocument = ({ name, schema: valueSchema, ...inputOptions }) => {
22
+ const options = {
23
+ partialSet: inputOptions.partialSet ?? true,
24
+ default: {
25
+ id: inputOptions.default.id,
26
+ value: inputOptions.default.value,
27
+ },
28
+ };
29
+ const columns = {
30
+ id: SqliteDsl.text({ primaryKey: true }),
31
+ value: SqliteDsl.json({ schema: valueSchema }),
32
+ };
33
+ const tableDef = table({ name, columns });
34
+ // @ts-expect-error TODO properly type this
35
+ tableDef.options.isClientDocumentTable = true;
36
+ const { eventDef: derivedSetEventDef, materializer: derivedSetMaterializer } = deriveEventAndMaterializer({
37
+ name,
38
+ valueSchema,
39
+ defaultValue: options.default.value,
40
+ partialSet: options.partialSet,
41
+ });
42
+ const setEventDef = (...args) => {
43
+ const [value, id = options.default.id] = args;
44
+ return derivedSetEventDef({ id, value });
45
+ };
46
+ Object.defineProperty(setEventDef, 'name', { value: `${name}Set` });
47
+ Object.defineProperty(setEventDef, 'schema', {
48
+ value: Schema.Struct({
49
+ id: Schema.String,
50
+ value: options.partialSet ? Schema.partial(valueSchema) : valueSchema,
51
+ }).annotations({ title: `${name}Set:Args` }),
52
+ });
53
+ Object.defineProperty(setEventDef, 'options', { value: { derived: true, clientOnly: true, facts: undefined } });
54
+ const clientDocumentTableDefTrait = {
55
+ get: makeGetQueryBuilder(() => clientDocumentTableDef),
56
+ set: setEventDef,
57
+ Value: 'only-for-type-inference',
58
+ default: options.default,
59
+ valueSchema,
60
+ [ClientDocumentTableDefSymbol]: {
61
+ derived: {
62
+ setEventDef: derivedSetEventDef,
63
+ setMaterializer: derivedSetMaterializer,
64
+ },
65
+ options,
66
+ },
67
+ };
68
+ const clientDocumentTableDef = {
69
+ ...tableDef,
70
+ ...clientDocumentTableDefTrait,
71
+ };
72
+ return clientDocumentTableDef;
73
+ };
74
+ const mergeDefaultValues = (defaultValues, explicitDefaultValues) => {
75
+ if (typeof defaultValues !== 'object' ||
76
+ typeof explicitDefaultValues !== 'object' ||
77
+ defaultValues === null ||
78
+ explicitDefaultValues === null) {
79
+ return explicitDefaultValues;
80
+ }
81
+ return Object.keys(defaultValues).reduce((acc, key) => {
82
+ acc[key] = explicitDefaultValues[key] ?? defaultValues[key];
83
+ return acc;
84
+ }, {});
85
+ };
86
+ export const deriveEventAndMaterializer = ({ name, valueSchema, defaultValue, partialSet, }) => {
87
+ const derivedSetEventDef = defineEvent({
88
+ name: `${name}Set`,
89
+ schema: Schema.Struct({
90
+ id: Schema.Union(Schema.String, Schema.UniqueSymbolFromSelf(SessionIdSymbol)),
91
+ value: partialSet ? Schema.partial(valueSchema) : valueSchema,
92
+ }).annotations({ title: `${name}Set:Args` }),
93
+ clientOnly: true,
94
+ derived: true,
95
+ });
96
+ const derivedSetMaterializer = defineMaterializer(derivedSetEventDef, ({ id, value }) => {
97
+ if (id === SessionIdSymbol) {
98
+ return shouldNeverHappen(`SessionIdSymbol needs to be replaced before materializing the set event`);
99
+ }
100
+ // Override the full value if it's not an object or no partial set is allowed
101
+ const schemaProps = SchemaAST.getPropertySignatures(valueSchema.ast);
102
+ if (schemaProps.length === 0 || partialSet === false) {
103
+ const valueColJsonSchema = Schema.parseJson(valueSchema);
104
+ const encodedInsertValue = Schema.encodeSyncDebug(valueColJsonSchema)(value ?? defaultValue);
105
+ const encodedUpdateValue = Schema.encodeSyncDebug(valueColJsonSchema)(value);
106
+ return {
107
+ sql: `INSERT INTO '${name}' (id, value) VALUES (?, ?) ON CONFLICT (id) DO UPDATE SET value = ?`,
108
+ bindValues: [id, encodedInsertValue, encodedUpdateValue],
109
+ writeTables: new Set([name]),
110
+ };
111
+ }
112
+ else {
113
+ const valueColJsonSchema = Schema.parseJson(Schema.partial(valueSchema));
114
+ const encodedInsertValue = Schema.encodeSyncDebug(valueColJsonSchema)(mergeDefaultValues(defaultValue, value));
115
+ let jsonSetSql = 'value';
116
+ const setBindValues = [];
117
+ const keys = Object.keys(value);
118
+ const partialUpdateSchema = valueSchema.pipe(Schema.pick(...keys));
119
+ const encodedPartialUpdate = Schema.encodeSyncDebug(partialUpdateSchema)(value);
120
+ for (const key in encodedPartialUpdate) {
121
+ const encodedValueForKey = encodedPartialUpdate[key];
122
+ // Skipping undefined values
123
+ if (encodedValueForKey === undefined) {
124
+ continue;
125
+ }
126
+ jsonSetSql = `json_set(${jsonSetSql}, ?, json(?))`;
127
+ setBindValues.push(`$.${key}`, JSON.stringify(encodedValueForKey));
128
+ }
129
+ const onConflictClause = setBindValues.length > 0
130
+ ? `ON CONFLICT (id) DO UPDATE SET value = ${jsonSetSql}`
131
+ : 'ON CONFLICT (id) DO NOTHING';
132
+ const sqlQuery = `
133
+ INSERT INTO '${name}' (id, value)
134
+ VALUES (?, ?)
135
+ ${onConflictClause}
136
+ `;
137
+ return {
138
+ sql: sqlQuery,
139
+ bindValues: [id, encodedInsertValue, ...setBindValues],
140
+ writeTables: new Set([name]),
141
+ };
142
+ }
143
+ });
144
+ return { eventDef: derivedSetEventDef, materializer: derivedSetMaterializer };
145
+ };
146
+ export const tableIsClientDocumentTable = (tableDef) => tableDef.options.isClientDocumentTable === true;
147
+ const makeGetQueryBuilder = (getTableDef) => {
148
+ return ((...args) => {
149
+ const tableDef = getTableDef();
150
+ const [id = tableDef[ClientDocumentTableDefSymbol].options.default.id, options = {}] = args;
151
+ const explicitDefaultValues = options.default ?? tableDef[ClientDocumentTableDefSymbol].options.default.value;
152
+ const ast = {
153
+ _tag: 'RowQuery',
154
+ tableDef,
155
+ id,
156
+ explicitDefaultValues,
157
+ };
158
+ const query = sql `SELECT * FROM '${tableDef.sqliteDef.name}' WHERE id = ?`;
159
+ return {
160
+ [QueryBuilderTypeId]: QueryBuilderTypeId,
161
+ [QueryBuilderAstSymbol]: ast,
162
+ ResultType: 'only-for-type-inference',
163
+ asSql: () => ({ query, bindValues: [id] }),
164
+ toString: () => query.toString(),
165
+ ...{}, // Needed for type cast
166
+ };
167
+ });
168
+ };
169
+ export const ClientDocumentTableDefSymbol = Symbol('ClientDocumentTableDef');
170
+ //# sourceMappingURL=client-document-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-document-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client-document-def.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-document-def.test.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":""}