@livestore/common 0.3.2-dev.9 → 0.4.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +2 -2
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -1
  4. package/dist/adapter-types.d.ts +4 -4
  5. package/dist/adapter-types.d.ts.map +1 -1
  6. package/dist/debug-info.d.ts +17 -17
  7. package/dist/devtools/devtools-messages-client-session.d.ts +38 -38
  8. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  9. package/dist/devtools/devtools-messages-leader.d.ts +28 -28
  10. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  11. package/dist/devtools/devtools-messages-leader.js.map +1 -1
  12. package/dist/leader-thread/LeaderSyncProcessor.js +3 -1
  13. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  14. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  15. package/dist/leader-thread/make-leader-thread-layer.js +21 -4
  16. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  17. package/dist/leader-thread/shutdown-channel.d.ts +2 -2
  18. package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
  19. package/dist/leader-thread/shutdown-channel.js +2 -2
  20. package/dist/leader-thread/shutdown-channel.js.map +1 -1
  21. package/dist/leader-thread/types.d.ts +1 -1
  22. package/dist/leader-thread/types.d.ts.map +1 -1
  23. package/dist/materializer-helper.d.ts +3 -3
  24. package/dist/materializer-helper.d.ts.map +1 -1
  25. package/dist/materializer-helper.js +2 -2
  26. package/dist/materializer-helper.js.map +1 -1
  27. package/dist/rematerialize-from-eventlog.js +1 -1
  28. package/dist/rematerialize-from-eventlog.js.map +1 -1
  29. package/dist/schema/EventDef.d.ts +104 -178
  30. package/dist/schema/EventSequenceNumber.d.ts +5 -0
  31. package/dist/schema/EventSequenceNumber.d.ts.map +1 -1
  32. package/dist/schema/EventSequenceNumber.js +7 -2
  33. package/dist/schema/EventSequenceNumber.js.map +1 -1
  34. package/dist/schema/EventSequenceNumber.test.js +2 -2
  35. package/dist/schema/LiveStoreEvent.d.ts +6 -5
  36. package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
  37. package/dist/schema/LiveStoreEvent.js +5 -0
  38. package/dist/schema/LiveStoreEvent.js.map +1 -1
  39. package/dist/schema/schema.d.ts +3 -0
  40. package/dist/schema/schema.d.ts.map +1 -1
  41. package/dist/schema/schema.js.map +1 -1
  42. package/dist/schema/state/sqlite/client-document-def.d.ts +3 -2
  43. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  44. package/dist/schema/state/sqlite/client-document-def.js +6 -4
  45. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  46. package/dist/schema/state/sqlite/client-document-def.test.js +76 -1
  47. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  48. package/dist/schema/state/sqlite/column-annotations.d.ts +34 -0
  49. package/dist/schema/state/sqlite/column-annotations.d.ts.map +1 -0
  50. package/dist/schema/state/sqlite/column-annotations.js +50 -0
  51. package/dist/schema/state/sqlite/column-annotations.js.map +1 -0
  52. package/dist/schema/state/sqlite/column-annotations.test.d.ts +2 -0
  53. package/dist/schema/state/sqlite/column-annotations.test.d.ts.map +1 -0
  54. package/dist/schema/state/sqlite/column-annotations.test.js +179 -0
  55. package/dist/schema/state/sqlite/column-annotations.test.js.map +1 -0
  56. package/dist/schema/state/sqlite/column-spec.d.ts +11 -0
  57. package/dist/schema/state/sqlite/column-spec.d.ts.map +1 -0
  58. package/dist/schema/state/sqlite/column-spec.js +39 -0
  59. package/dist/schema/state/sqlite/column-spec.js.map +1 -0
  60. package/dist/schema/state/sqlite/column-spec.test.d.ts +2 -0
  61. package/dist/schema/state/sqlite/column-spec.test.d.ts.map +1 -0
  62. package/dist/schema/state/sqlite/column-spec.test.js +146 -0
  63. package/dist/schema/state/sqlite/column-spec.test.js.map +1 -0
  64. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts +1 -0
  65. package/dist/schema/state/sqlite/db-schema/ast/sqlite.d.ts.map +1 -1
  66. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -0
  67. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js.map +1 -1
  68. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts +17 -4
  69. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.d.ts.map +1 -1
  70. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +2 -0
  71. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  72. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +65 -165
  73. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  74. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -0
  75. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  76. package/dist/schema/state/sqlite/mod.d.ts +2 -0
  77. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  78. package/dist/schema/state/sqlite/mod.js +2 -0
  79. package/dist/schema/state/sqlite/mod.js.map +1 -1
  80. package/dist/schema/state/sqlite/query-builder/api.d.ts +309 -560
  81. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  82. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +1 -0
  83. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts.map +1 -1
  84. package/dist/schema/state/sqlite/query-builder/astToSql.js +8 -6
  85. package/dist/schema/state/sqlite/query-builder/astToSql.js.map +1 -1
  86. package/dist/schema/state/sqlite/system-tables.d.ts +464 -46
  87. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
  88. package/dist/schema/state/sqlite/table-def.d.ts +161 -152
  89. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  90. package/dist/schema/state/sqlite/table-def.js +251 -5
  91. package/dist/schema/state/sqlite/table-def.js.map +1 -1
  92. package/dist/schema/state/sqlite/table-def.test.d.ts +2 -0
  93. package/dist/schema/state/sqlite/table-def.test.d.ts.map +1 -0
  94. package/dist/schema/state/sqlite/table-def.test.js +635 -0
  95. package/dist/schema/state/sqlite/table-def.test.js.map +1 -0
  96. package/dist/schema-management/common.d.ts +1 -1
  97. package/dist/schema-management/common.d.ts.map +1 -1
  98. package/dist/schema-management/common.js +11 -2
  99. package/dist/schema-management/common.js.map +1 -1
  100. package/dist/schema-management/migrations.d.ts +0 -1
  101. package/dist/schema-management/migrations.d.ts.map +1 -1
  102. package/dist/schema-management/migrations.js +4 -30
  103. package/dist/schema-management/migrations.js.map +1 -1
  104. package/dist/schema-management/migrations.test.d.ts +2 -0
  105. package/dist/schema-management/migrations.test.d.ts.map +1 -0
  106. package/dist/schema-management/migrations.test.js +52 -0
  107. package/dist/schema-management/migrations.test.js.map +1 -0
  108. package/dist/sql-queries/types.d.ts +37 -133
  109. package/dist/sqlite-db-helper.d.ts +3 -1
  110. package/dist/sqlite-db-helper.d.ts.map +1 -1
  111. package/dist/sqlite-db-helper.js +16 -0
  112. package/dist/sqlite-db-helper.js.map +1 -1
  113. package/dist/sqlite-types.d.ts +4 -4
  114. package/dist/sqlite-types.d.ts.map +1 -1
  115. package/dist/sync/ClientSessionSyncProcessor.d.ts +2 -2
  116. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  117. package/dist/sync/ClientSessionSyncProcessor.js +8 -7
  118. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  119. package/dist/sync/sync.d.ts.map +1 -1
  120. package/dist/sync/sync.js.map +1 -1
  121. package/dist/util.d.ts +3 -3
  122. package/dist/util.d.ts.map +1 -1
  123. package/dist/util.js.map +1 -1
  124. package/dist/version.d.ts +1 -1
  125. package/dist/version.js +1 -1
  126. package/package.json +4 -4
  127. package/src/ClientSessionLeaderThreadProxy.ts +2 -2
  128. package/src/adapter-types.ts +6 -4
  129. package/src/devtools/devtools-messages-leader.ts +3 -3
  130. package/src/leader-thread/LeaderSyncProcessor.ts +3 -1
  131. package/src/leader-thread/make-leader-thread-layer.ts +26 -7
  132. package/src/leader-thread/shutdown-channel.ts +2 -2
  133. package/src/leader-thread/types.ts +1 -1
  134. package/src/materializer-helper.ts +5 -11
  135. package/src/rematerialize-from-eventlog.ts +2 -2
  136. package/src/schema/EventSequenceNumber.test.ts +2 -2
  137. package/src/schema/EventSequenceNumber.ts +8 -2
  138. package/src/schema/LiveStoreEvent.ts +7 -1
  139. package/src/schema/schema.ts +4 -0
  140. package/src/schema/state/sqlite/client-document-def.test.ts +89 -1
  141. package/src/schema/state/sqlite/client-document-def.ts +7 -4
  142. package/src/schema/state/sqlite/column-annotations.test.ts +212 -0
  143. package/src/schema/state/sqlite/column-annotations.ts +77 -0
  144. package/src/schema/state/sqlite/column-spec.test.ts +223 -0
  145. package/src/schema/state/sqlite/column-spec.ts +42 -0
  146. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +2 -0
  147. package/src/schema/state/sqlite/db-schema/dsl/__snapshots__/field-defs.test.ts.snap +15 -0
  148. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +20 -2
  149. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +1 -0
  150. package/src/schema/state/sqlite/mod.ts +2 -0
  151. package/src/schema/state/sqlite/query-builder/api.ts +4 -3
  152. package/src/schema/state/sqlite/query-builder/astToSql.ts +9 -7
  153. package/src/schema/state/sqlite/table-def.test.ts +798 -0
  154. package/src/schema/state/sqlite/table-def.ts +472 -16
  155. package/src/schema-management/common.ts +10 -3
  156. package/src/schema-management/migrations.ts +4 -33
  157. package/src/sqlite-db-helper.ts +19 -1
  158. package/src/sqlite-types.ts +4 -4
  159. package/src/sync/ClientSessionSyncProcessor.ts +13 -8
  160. package/src/sync/sync.ts +2 -0
  161. package/src/util.ts +7 -2
  162. package/src/version.ts +1 -1
@@ -10,12 +10,12 @@ import type { TableDef, TableDefBase } from './table-def.ts';
10
10
  * - Synced across client sessions (e.g. tabs) but not across different clients
11
11
  * - Derived setters
12
12
  * - Emits client-only events
13
- * - Has implicit setter-reducers
13
+ * - Has implicit setter-materializers
14
14
  * - Similar to `React.useState` (except it's persisted)
15
15
  *
16
16
  * Careful:
17
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
18
+ * explicit materializers to handle the old auto-generated events
19
19
  *
20
20
  * Usage:
21
21
  *
@@ -33,6 +33,7 @@ export declare const clientDocument: <TName extends string, TType, TEncoded, con
33
33
  name: TName;
34
34
  schema: Schema.Schema<TType, TEncoded>;
35
35
  } & TOptions) => ClientDocumentTableDef<TName, TType, TEncoded, Types.Simplify<ClientDocumentTableOptions.WithDefaults<TOptions>>>;
36
+ export declare const mergeDefaultValues: <T>(defaultValues: T, explicitDefaultValues: T) => T;
36
37
  export declare const deriveEventAndMaterializer: ({ name, valueSchema, defaultValue, partialSet, }: {
37
38
  name: string;
38
39
  valueSchema: Schema.Schema<any, any>;
@@ -1 +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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"}
1
+ {"version":3,"file":"client-document-def.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAa,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,wBAAwB,CAAA;AAE3E,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,EACR,KAAK,CAAC,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACvE,gDAIC;IACD,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;CACvC,GAAG,QAAQ,KAAG,sBAAsB,CACnC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAmElE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,eAAe,CAAC,EAAE,uBAAuB,CAAC,KAAG,CAiBlF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,kDAKxC;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,EAAE,GAAG,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB;;;;;;;;;;;;;;;CAsEA,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,SAAS,SAAS,YAAY,EACvE,UAAU,SAAS,KAClB,QAAQ,IAAI,SAAS,GAAG;IACzB,OAAO,EAAE;QAAE,qBAAqB,EAAE,IAAI,CAAA;KAAE,CAAA;CACzC,GAAG,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAC7B,CAAA;AAgCjD,MAAM,MAAM,0BAA0B,CAAC,KAAK,IAAI;IAC9C,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE;QACP,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAA;QACxC,KAAK,EAAE,KAAK,CAAA;KACb,CAAA;CACF,CAAA;AAED,yBAAiB,0BAA0B,CAAC;IAC1C,KAAY,KAAK,CAAC,KAAK,IAAI;QACzB;;;;WAIG;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,OAAO,EAAE;YACP,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAA;YACzC,KAAK,EAAE,KAAK,CAAA;SACb,CAAA;KACF,CAAA;IAED,KAAY,YAAY,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI;QACpD,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;QAC7D,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YAClG,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;SAClC,CAAA;KACF,CAAA;CACF;AAED,MAAM,MAAM,sBAAsB,CAChC,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,EACR,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAChD,QAAQ,CACV,sBAAsB,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9C;IACE,qBAAqB,EAAE,IAAI,CAAA;CAC5B,CACF,GACC,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEhE,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAE5D,KAAY,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC,eAAe,CAC5E,KAAK,EACL;QACE,EAAE,EAAE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAAE,CAAA;QACjF,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAAE,CAAA;KACnF,CACF,CAAA;IAED,KAAY,aAAa,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,IAAI,YAAY,CACnE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EACvB;QACE,qBAAqB,EAAE,IAAI,CAAA;KAC5B,CACF,CAAA;IAED,UAAiB,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC;QAC9G;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2BG;QACH,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoCG;QACH,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACrD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACpD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,EAAE;YACvC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;YAC1B,QAAQ,CAAC,OAAO,EAAE;gBAChB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;gBACzD,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;aAC5E,CAAA;SACF,CAAA;KACF;IAED,KAAY,UAAU,CAAC,SAAS,SAAS,QAAQ,IAAI,SAAS,SAAS,sBAAsB,CAAC,KAAK,CACjG,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,QAAQ,CACf,GACG,QAAQ,GACR,KAAK,CAAA;IAET,KAAY,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAEhD,KAAY,aAAa,CAAC,SAAS,SAAS,QAAQ,IAAI,SAAS,SAAS,sBAAsB,CAAC,KAAK,CACpG,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,QAAQ,CACf,GACG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,GAAG,MAAM,GACxD,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GACzB,KAAK,GACP,KAAK,CAAA;IAET,KAAY,eAAe,CACzB,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAChD,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC5C,CACE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EACnE,EAAE,EAAE,MAAM,GAAG,eAAe,KACzB;QAAE,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;QAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,GAChE,CACE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EACnE,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,KAC1B;QAAE,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;QAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,CAAC,GAAG;QACtE,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAA;QAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnC,QAAQ,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAA;YAC5B,QAAQ,CAAC,IAAI,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,KAAK,CAAA;aAAE,CAAA;SAC5C,CAAA;QACD,QAAQ,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,IAAI,CAAC;YAAC,UAAU,EAAE,IAAI,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAA;KACxE,CAAA;IAED,KAAY,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAAI,QAAQ,CACjH,KAAK,EACL,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,EAC3G,GAAG,EACH,IAAI,CACL,CAAA;IAED,KAAY,mBAAmB,CAC7B,KAAK,SAAS,MAAM,EACpB,KAAK,EACL,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,IAChD,QAAQ,SAAS,0BAA0B,CAAC,KAAK,CAAC,GAAG;QAAE,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CAAA;SAAE,CAAA;KAAE,GAClG,CACE,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,EAChD,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,KAClC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,GACrG,CACE,EAAE,EAAE,MAAM,GAAG,eAAe,EAC5B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAAE,KAClC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;CAC1G;AAED,eAAO,MAAM,4BAA4B,eAAmC,CAAA;AAC5E,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA"}
@@ -11,12 +11,12 @@ import { table } from "./table-def.js";
11
11
  * - Synced across client sessions (e.g. tabs) but not across different clients
12
12
  * - Derived setters
13
13
  * - Emits client-only events
14
- * - Has implicit setter-reducers
14
+ * - Has implicit setter-materializers
15
15
  * - Similar to `React.useState` (except it's persisted)
16
16
  *
17
17
  * Careful:
18
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
19
+ * explicit materializers to handle the old auto-generated events
20
20
  *
21
21
  * Usage:
22
22
  *
@@ -83,14 +83,16 @@ export const clientDocument = ({ name, schema: valueSchema, ...inputOptions }) =
83
83
  };
84
84
  return clientDocumentTableDef;
85
85
  };
86
- const mergeDefaultValues = (defaultValues, explicitDefaultValues) => {
86
+ export const mergeDefaultValues = (defaultValues, explicitDefaultValues) => {
87
87
  if (typeof defaultValues !== 'object' ||
88
88
  typeof explicitDefaultValues !== 'object' ||
89
89
  defaultValues === null ||
90
90
  explicitDefaultValues === null) {
91
91
  return explicitDefaultValues;
92
92
  }
93
- return Object.keys(defaultValues).reduce((acc, key) => {
93
+ // Get all unique keys from both objects
94
+ const allKeys = new Set([...Object.keys(defaultValues), ...Object.keys(explicitDefaultValues)]);
95
+ return Array.from(allKeys).reduce((acc, key) => {
94
96
  acc[key] = explicitDefaultValues[key] ?? defaultValues[key];
95
97
  return acc;
96
98
  }, {});
@@ -1 +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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"}
1
+ {"version":3,"file":"client-document-def.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Schema } from '@livestore/utils/effect';
2
2
  import { describe, expect, test } from 'vitest';
3
3
  import { tables } from "../../../__tests__/fixture.js";
4
- import { ClientDocumentTableDefSymbol, clientDocument } from "./client-document-def.js";
4
+ import { ClientDocumentTableDefSymbol, clientDocument, mergeDefaultValues } from "./client-document-def.js";
5
5
  describe('client document table', () => {
6
6
  test('set event', () => {
7
7
  expect(patchId(tables.UiState.set({ showSidebar: false }, 'session-1'))).toMatchInlineSnapshot(`
@@ -196,4 +196,79 @@ const patchId = (muationEvent) => {
196
196
  const id = `00000000-0000-0000-0000-000000000000`;
197
197
  return { ...muationEvent, id };
198
198
  };
199
+ describe('mergeDefaultValues', () => {
200
+ test('merges values from both objects', () => {
201
+ const defaults = { a: 1, b: 2 };
202
+ const explicit = { a: 10, b: 20 };
203
+ const result = mergeDefaultValues(defaults, explicit);
204
+ expect(result).toEqual({ a: 10, b: 20 });
205
+ });
206
+ test('uses default values when explicit values are undefined', () => {
207
+ const defaults = { a: 1, b: 2 };
208
+ const explicit = { a: undefined, b: 20 };
209
+ const result = mergeDefaultValues(defaults, explicit);
210
+ expect(result).toEqual({ a: 1, b: 20 });
211
+ });
212
+ test('should preserve properties that are not in default values', () => {
213
+ const defaults = { a: 1, b: 2 };
214
+ const explicit = { a: 10, b: 20, c: 30 };
215
+ const result = mergeDefaultValues(defaults, explicit);
216
+ // Should include ALL properties from explicit, not just those in defaults
217
+ expect(result).toEqual({ a: 10, b: 20, c: 30 });
218
+ expect('c' in result).toBe(true);
219
+ });
220
+ test('issue #487 - should preserve optional fields not in defaults', () => {
221
+ const defaults = {
222
+ newTodoText: '',
223
+ filter: 'all',
224
+ };
225
+ const userSet = {
226
+ newTodoText: '',
227
+ description: 'First attempt', // Optional field not in defaults
228
+ filter: 'all',
229
+ };
230
+ const result = mergeDefaultValues(defaults, userSet);
231
+ // Should include the description field even though it's not in defaults
232
+ expect(result).toEqual({
233
+ newTodoText: '',
234
+ description: 'First attempt',
235
+ filter: 'all',
236
+ });
237
+ expect('description' in result).toBe(true);
238
+ });
239
+ test('handles non-object values', () => {
240
+ expect(mergeDefaultValues('default', 'explicit')).toBe('explicit');
241
+ expect(mergeDefaultValues(42, 100)).toBe(100);
242
+ expect(mergeDefaultValues(null, { a: 1 })).toEqual({ a: 1 });
243
+ expect(mergeDefaultValues({ a: 1 }, null)).toBe(null);
244
+ });
245
+ test('handles nested objects (current implementation does not deep merge)', () => {
246
+ const defaults = { a: { x: 1, y: 2 }, b: 3 };
247
+ const explicit = { a: { x: 10 }, b: 30 };
248
+ const result = mergeDefaultValues(defaults, explicit);
249
+ // Current implementation replaces entire nested object
250
+ expect(result).toEqual({ a: { x: 10 }, b: 30 });
251
+ // Note: 'y' is lost because the entire 'a' object is replaced
252
+ });
253
+ test('should handle mix of default and new properties', () => {
254
+ const defaults = {
255
+ required1: 'default1',
256
+ required2: 'default2',
257
+ };
258
+ const userSet = {
259
+ required1: 'user1', // Override default
260
+ required2: 'default2', // Keep default
261
+ optional1: 'new1', // New field
262
+ optional2: 'new2', // New field
263
+ };
264
+ const result = mergeDefaultValues(defaults, userSet);
265
+ expect(result).toEqual({
266
+ required1: 'user1',
267
+ required2: 'default2',
268
+ optional1: 'new1',
269
+ optional2: 'new2',
270
+ });
271
+ expect(Object.keys(result).sort()).toEqual(['optional1', 'optional2', 'required1', 'required2']);
272
+ });
273
+ });
199
274
  //# sourceMappingURL=client-document-def.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-document-def.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/client-document-def.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Schema } from '@livestore/utils/effect';
2
+ import type { SqliteDsl } from './db-schema/mod.ts';
3
+ export declare const PrimaryKeyId: unique symbol;
4
+ export declare const ColumnType: unique symbol;
5
+ export declare const Default: unique symbol;
6
+ export declare const AutoIncrement: unique symbol;
7
+ export declare const Unique: unique symbol;
8
+ /**
9
+ * Adds a primary key annotation to a schema.
10
+ */
11
+ export declare const withPrimaryKey: <T extends Schema.Schema.All>(schema: T) => T;
12
+ /**
13
+ * Adds a column type annotation to a schema.
14
+ */
15
+ export declare const withColumnType: {
16
+ (type: SqliteDsl.FieldColumnType): <T extends Schema.Schema.All>(schema: T) => T;
17
+ <T extends Schema.Schema.All>(schema: T, type: SqliteDsl.FieldColumnType): T;
18
+ };
19
+ /**
20
+ * Adds an auto-increment annotation to a schema.
21
+ */
22
+ export declare const withAutoIncrement: <T extends Schema.Schema.All>(schema: T) => T;
23
+ /**
24
+ * Adds a unique constraint annotation to a schema.
25
+ */
26
+ export declare const withUnique: <T extends Schema.Schema.All>(schema: T) => T;
27
+ /**
28
+ * Adds a default value annotation to a schema.
29
+ */
30
+ export declare const withDefault: {
31
+ <T extends Schema.Schema.All>(schema: T, value: unknown): T;
32
+ (value: unknown): <T extends Schema.Schema.All>(schema: T) => T;
33
+ };
34
+ //# sourceMappingURL=column-annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-annotations.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,YAAY,eAA+D,CAAA;AAExF,eAAO,MAAM,UAAU,eAA+D,CAAA;AAEtF,eAAO,MAAM,OAAO,eAA2D,CAAA;AAE/E,eAAO,MAAM,aAAa,eAAkE,CAAA;AAE5F,eAAO,MAAM,MAAM,eAA0D,CAAA;AAkB7E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,KACnB,CAAC,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IAEhF,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,CAAC,CAAA;CAI5E,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,KACrB,CAAC,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,KAA+C,CAAC,CAAA;AAEjH;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE;IAExB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;IAC3D,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;CACqD,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { dual } from '@livestore/utils/effect';
2
+ export const PrimaryKeyId = Symbol.for('livestore/state/sqlite/annotations/primary-key');
3
+ export const ColumnType = Symbol.for('livestore/state/sqlite/annotations/column-type');
4
+ export const Default = Symbol.for('livestore/state/sqlite/annotations/default');
5
+ export const AutoIncrement = Symbol.for('livestore/state/sqlite/annotations/auto-increment');
6
+ export const Unique = Symbol.for('livestore/state/sqlite/annotations/unique');
7
+ // export const Check = Symbol.for('livestore/state/sqlite/annotations/check')
8
+ /*
9
+ Here are the knobs you can turn per-column when you CREATE TABLE (or ALTER TABLE … ADD COLUMN) in SQLite:
10
+ • Declared type / affinity – INTEGER, TEXT, REAL, BLOB, NUMERIC, etc. 
11
+ • NULL vs NOT NULL – disallow NULL on inserts/updates. 
12
+ • PRIMARY KEY – makes the column the rowid (and, if the type is INTEGER, it enables rowid-based auto- numbering). Add the optional AUTOINCREMENT keyword if you need monotonic, never-reused ids. 
13
+ • UNIQUE – enforces per-column uniqueness. 
14
+ • DEFAULT <expr> – literal, function (e.g. CURRENT_TIMESTAMP), or parenthesised expression; since 3.46 you can even default to large hex blobs. 
15
+ • CHECK (<expr>) – arbitrary boolean expression evaluated on write. 
16
+ • COLLATE <name> – per-column collation sequence for text comparison. 
17
+ • REFERENCES tbl(col) [ON UPDATE/DELETE …] – column-local foreign key with its own cascade / restrict / set-null rules. 
18
+ • GENERATED ALWAYS AS (<expr>) [VIRTUAL | STORED] – computed columns (since 3.31). 
19
+ • CONSTRAINT name … – optional label in front of any of the above so you can refer to it in error messages or when dropping/recreating schemas.
20
+ */
21
+ /**
22
+ * Adds a primary key annotation to a schema.
23
+ */
24
+ export const withPrimaryKey = (schema) => schema.annotations({ [PrimaryKeyId]: true });
25
+ /**
26
+ * Adds a column type annotation to a schema.
27
+ */
28
+ export const withColumnType = dual(2, (schema, type) => {
29
+ validateSchemaColumnTypeCompatibility(schema, type);
30
+ return schema.annotations({ [ColumnType]: type });
31
+ });
32
+ /**
33
+ * Adds an auto-increment annotation to a schema.
34
+ */
35
+ export const withAutoIncrement = (schema) => schema.annotations({ [AutoIncrement]: true });
36
+ /**
37
+ * Adds a unique constraint annotation to a schema.
38
+ */
39
+ export const withUnique = (schema) => schema.annotations({ [Unique]: true });
40
+ /**
41
+ * Adds a default value annotation to a schema.
42
+ */
43
+ export const withDefault = dual(2, (schema, value) => schema.annotations({ [Default]: value }));
44
+ /**
45
+ * Validates that a schema is compatible with the specified SQLite column type
46
+ */
47
+ const validateSchemaColumnTypeCompatibility = (_schema, _columnType) => {
48
+ // TODO actually implement this
49
+ };
50
+ //# sourceMappingURL=column-annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-annotations.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAG9C,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;AAE7E,8EAA8E;AAE9E;;;;;;;;;;;;EAYE;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAA8B,MAAS,EAAE,EAAE,CACvE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAM,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAIvB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,IAA+B,EAAE,EAAE;IACtF,qCAAqC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnD,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAM,CAAA;AACxD,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA8B,MAAS,EAAE,EAAE,CAC1E,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAM,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA8B,MAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAM,CAAA;AAEjH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAIpB,IAAI,CAAC,CAAC,EAAE,CAA8B,MAAS,EAAE,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAM,CAAC,CAAA;AAEtH;;GAEG;AACH,MAAM,qCAAqC,GAAG,CAC5C,OAA0B,EAC1B,WAAsC,EAChC,EAAE;IACR,+BAA+B;AACjC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=column-annotations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-annotations.test.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,179 @@
1
+ import { Schema, SchemaAST } from '@livestore/utils/effect';
2
+ import { describe, expect, test } from 'vitest';
3
+ import { withColumnType, withPrimaryKey } from "./column-annotations.js";
4
+ describe.concurrent('annotations', () => {
5
+ describe('withPrimaryKey', () => {
6
+ test('should add primary key annotation', () => {
7
+ const schema = Schema.String;
8
+ const result = withPrimaryKey(schema);
9
+ expect(SchemaAST.annotations(result.ast, {})).toMatchInlineSnapshot(`
10
+ {
11
+ "_tag": "StringKeyword",
12
+ "annotations": {
13
+ "Symbol(effect/annotation/Description)": "a string",
14
+ "Symbol(effect/annotation/Title)": "string",
15
+ "Symbol(livestore/state/sqlite/annotations/primary-key)": true,
16
+ },
17
+ }
18
+ `);
19
+ });
20
+ });
21
+ describe('withColumnType', () => {
22
+ describe('compatible schema-column type combinations', () => {
23
+ test('Schema.String with text column type', () => {
24
+ expect(() => withColumnType(Schema.String, 'text')).not.toThrow();
25
+ });
26
+ test('Schema.Number with integer column type', () => {
27
+ expect(() => withColumnType(Schema.Number, 'integer')).not.toThrow();
28
+ });
29
+ test('Schema.Number with real column type', () => {
30
+ expect(() => withColumnType(Schema.Number, 'real')).not.toThrow();
31
+ });
32
+ test('Schema.Boolean with integer column type', () => {
33
+ expect(() => withColumnType(Schema.Boolean, 'integer')).not.toThrow();
34
+ });
35
+ test('Schema.Uint8ArrayFromSelf with blob column type', () => {
36
+ expect(() => withColumnType(Schema.Uint8ArrayFromSelf, 'blob')).not.toThrow();
37
+ });
38
+ test('Schema.Date with text column type', () => {
39
+ expect(() => withColumnType(Schema.Date, 'text')).not.toThrow();
40
+ });
41
+ test('String literal with text column type', () => {
42
+ expect(() => withColumnType(Schema.Literal('hello'), 'text')).not.toThrow();
43
+ });
44
+ test('Number literal with integer column type', () => {
45
+ expect(() => withColumnType(Schema.Literal(42), 'integer')).not.toThrow();
46
+ });
47
+ test('Number literal with real column type', () => {
48
+ expect(() => withColumnType(Schema.Literal(3.14), 'real')).not.toThrow();
49
+ });
50
+ test('Boolean literal with integer column type', () => {
51
+ expect(() => withColumnType(Schema.Literal(true), 'integer')).not.toThrow();
52
+ });
53
+ test('Union of same type with compatible column type', () => {
54
+ const unionSchema = Schema.Union(Schema.Literal('a'), Schema.Literal('b'));
55
+ expect(() => withColumnType(unionSchema, 'text')).not.toThrow();
56
+ });
57
+ test('Transformation schema with compatible base type', () => {
58
+ const transformSchema = Schema.transform(Schema.String, Schema.String, {
59
+ decode: (s) => s.toUpperCase(),
60
+ encode: (s) => s.toLowerCase(),
61
+ });
62
+ expect(() => withColumnType(transformSchema, 'text')).not.toThrow();
63
+ });
64
+ });
65
+ // TODO bring those tests back as we've implemented the column type validation
66
+ // describe('incompatible schema-column type combinations', () => {
67
+ // test('Schema.String with integer column type should throw', () => {
68
+ // expect(() => withColumnType(Schema.String, 'integer')).toThrow(
69
+ // "Schema type 'string' is incompatible with column type 'integer'",
70
+ // )
71
+ // })
72
+ // test('Schema.String with real column type should throw', () => {
73
+ // expect(() => withColumnType(Schema.String, 'real')).toThrow(
74
+ // "Schema type 'string' is incompatible with column type 'real'",
75
+ // )
76
+ // })
77
+ // test('Schema.String with blob column type should throw', () => {
78
+ // expect(() => withColumnType(Schema.String, 'blob')).toThrow(
79
+ // "Schema type 'string' is incompatible with column type 'blob'",
80
+ // )
81
+ // })
82
+ // test('Schema.Number with text column type should throw', () => {
83
+ // expect(() => withColumnType(Schema.Number, 'text')).toThrow(
84
+ // "Schema type 'number' is incompatible with column type 'text'",
85
+ // )
86
+ // })
87
+ // test('Schema.Number with blob column type should throw', () => {
88
+ // expect(() => withColumnType(Schema.Number, 'blob')).toThrow(
89
+ // "Schema type 'number' is incompatible with column type 'blob'",
90
+ // )
91
+ // })
92
+ // test('Schema.Boolean with text column type should throw', () => {
93
+ // expect(() => withColumnType(Schema.Boolean, 'text')).toThrow(
94
+ // "Schema type 'boolean' is incompatible with column type 'text'",
95
+ // )
96
+ // })
97
+ // test('Schema.Boolean with real column type should throw', () => {
98
+ // expect(() => withColumnType(Schema.Boolean, 'real')).toThrow(
99
+ // "Schema type 'boolean' is incompatible with column type 'real'",
100
+ // )
101
+ // })
102
+ // test('Schema.Boolean with blob column type should throw', () => {
103
+ // expect(() => withColumnType(Schema.Boolean, 'blob')).toThrow(
104
+ // "Schema type 'boolean' is incompatible with column type 'blob'",
105
+ // )
106
+ // })
107
+ // test('Schema.Uint8ArrayFromSelf with text column type should throw', () => {
108
+ // expect(() => withColumnType(Schema.Uint8ArrayFromSelf, 'text')).toThrow(
109
+ // "Schema type 'uint8array' is incompatible with column type 'text'",
110
+ // )
111
+ // })
112
+ // test('String literal with integer column type should throw', () => {
113
+ // expect(() => withColumnType(Schema.Literal('hello'), 'integer')).toThrow(
114
+ // "Schema type 'string' is incompatible with column type 'integer'",
115
+ // )
116
+ // })
117
+ // test('Number literal with text column type should throw', () => {
118
+ // expect(() => withColumnType(Schema.Literal(42), 'text')).toThrow(
119
+ // "Schema type 'number' is incompatible with column type 'text'",
120
+ // )
121
+ // })
122
+ // test('Schema.Date with integer column type should throw', () => {
123
+ // expect(() => withColumnType(Schema.Date, 'integer')).toThrow(
124
+ // "Schema type 'string' is incompatible with column type 'integer'",
125
+ // )
126
+ // })
127
+ // })
128
+ describe('complex schemas', () => {
129
+ test('should allow complex schemas that cannot be determined', () => {
130
+ const complexSchema = Schema.Struct({ name: Schema.String, age: Schema.Number });
131
+ expect(() => withColumnType(complexSchema, 'text')).not.toThrow();
132
+ });
133
+ test('should allow Schema.Any with any column type', () => {
134
+ expect(() => withColumnType(Schema.Any, 'text')).not.toThrow();
135
+ expect(() => withColumnType(Schema.Any, 'integer')).not.toThrow();
136
+ expect(() => withColumnType(Schema.Any, 'real')).not.toThrow();
137
+ expect(() => withColumnType(Schema.Any, 'blob')).not.toThrow();
138
+ });
139
+ test('should allow Schema.Unknown with any column type', () => {
140
+ expect(() => withColumnType(Schema.Unknown, 'text')).not.toThrow();
141
+ expect(() => withColumnType(Schema.Unknown, 'integer')).not.toThrow();
142
+ expect(() => withColumnType(Schema.Unknown, 'real')).not.toThrow();
143
+ expect(() => withColumnType(Schema.Unknown, 'blob')).not.toThrow();
144
+ });
145
+ });
146
+ describe('annotation behavior', () => {
147
+ test('should add column type annotation to schema', () => {
148
+ const schema = Schema.String;
149
+ const result = withColumnType(schema, 'text');
150
+ expect(SchemaAST.annotations(result.ast, {})).toMatchInlineSnapshot(`
151
+ {
152
+ "_tag": "StringKeyword",
153
+ "annotations": {
154
+ "Symbol(effect/annotation/Description)": "a string",
155
+ "Symbol(effect/annotation/Title)": "string",
156
+ "Symbol(livestore/state/sqlite/annotations/column-type)": "text",
157
+ },
158
+ }
159
+ `);
160
+ });
161
+ test('should preserve existing annotations', () => {
162
+ const schema = withPrimaryKey(Schema.String);
163
+ const result = withColumnType(schema, 'text');
164
+ expect(SchemaAST.annotations(result.ast, {})).toMatchInlineSnapshot(`
165
+ {
166
+ "_tag": "StringKeyword",
167
+ "annotations": {
168
+ "Symbol(effect/annotation/Description)": "a string",
169
+ "Symbol(effect/annotation/Title)": "string",
170
+ "Symbol(livestore/state/sqlite/annotations/column-type)": "text",
171
+ "Symbol(livestore/state/sqlite/annotations/primary-key)": true,
172
+ },
173
+ }
174
+ `);
175
+ });
176
+ });
177
+ });
178
+ });
179
+ //# sourceMappingURL=column-annotations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-annotations.test.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-annotations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExE,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;YAErC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;OASnE,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;YAC1D,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;gBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACnE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBAClD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACtE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;gBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACnE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACnD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACvE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC/E,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACjE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAChD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC7E,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACnD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC3E,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAChD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC1E,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAC7E,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;gBAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC1E,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACjE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;oBACrE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;iBAC/B,CAAC,CAAA;gBACF,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,8EAA8E;QAC9E,mEAAmE;QACnE,wEAAwE;QACxE,sEAAsE;QACtE,2EAA2E;QAC3E,QAAQ;QACR,OAAO;QAEP,qEAAqE;QACrE,mEAAmE;QACnE,wEAAwE;QACxE,QAAQ;QACR,OAAO;QAEP,qEAAqE;QACrE,mEAAmE;QACnE,wEAAwE;QACxE,QAAQ;QACR,OAAO;QAEP,qEAAqE;QACrE,mEAAmE;QACnE,wEAAwE;QACxE,QAAQ;QACR,OAAO;QAEP,qEAAqE;QACrE,mEAAmE;QACnE,wEAAwE;QACxE,QAAQ;QACR,OAAO;QAEP,sEAAsE;QACtE,oEAAoE;QACpE,yEAAyE;QACzE,QAAQ;QACR,OAAO;QAEP,sEAAsE;QACtE,oEAAoE;QACpE,yEAAyE;QACzE,QAAQ;QACR,OAAO;QAEP,sEAAsE;QACtE,oEAAoE;QACpE,yEAAyE;QACzE,QAAQ;QACR,OAAO;QAEP,iFAAiF;QACjF,+EAA+E;QAC/E,4EAA4E;QAC5E,QAAQ;QACR,OAAO;QAEP,yEAAyE;QACzE,gFAAgF;QAChF,2EAA2E;QAC3E,QAAQ;QACR,OAAO;QAEP,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,QAAQ;QACR,OAAO;QAEP,sEAAsE;QACtE,oEAAoE;QACpE,2EAA2E;QAC3E,QAAQ;QACR,OAAO;QACP,KAAK;QAEL,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC/B,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;gBAClE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;gBAChF,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACnE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACxD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBACjE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YAChE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;gBAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBAClE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBACrE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;gBAClE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;YACpE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACnC,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;gBAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAE7C,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;SASnE,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;gBAChD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAE7C,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;SAUnE,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { type SqliteAst } from './db-schema/mod.ts';
2
+ /**
3
+ * Returns a SQLite column specification string for a table's column definitions.
4
+ *
5
+ * Example:
6
+ * ```
7
+ * 'id' integer not null autoincrement , 'email' text not null , 'username' text not null , 'created_at' text default CURRENT_TIMESTAMP, PRIMARY KEY ('id')
8
+ * ```
9
+ */
10
+ export declare const makeColumnSpec: (tableAst: SqliteAst.Table) => string;
11
+ //# sourceMappingURL=column-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-spec.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,oBAAoB,CAAA;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU,SAAS,CAAC,KAAK,WASvD,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import { SqliteDsl } from "./db-schema/mod.js";
3
+ /**
4
+ * Returns a SQLite column specification string for a table's column definitions.
5
+ *
6
+ * Example:
7
+ * ```
8
+ * 'id' integer not null autoincrement , 'email' text not null , 'username' text not null , 'created_at' text default CURRENT_TIMESTAMP, PRIMARY KEY ('id')
9
+ * ```
10
+ */
11
+ export const makeColumnSpec = (tableAst) => {
12
+ const primaryKeys = tableAst.columns.filter((_) => _.primaryKey).map((_) => `'${_.name}'`);
13
+ const columnDefStrs = tableAst.columns.map(toSqliteColumnSpec);
14
+ if (primaryKeys.length > 0) {
15
+ columnDefStrs.push(`PRIMARY KEY (${primaryKeys.join(', ')})`);
16
+ }
17
+ return columnDefStrs.join(', ');
18
+ };
19
+ /** NOTE primary keys are applied on a table level not on a column level to account for multi-column primary keys */
20
+ const toSqliteColumnSpec = (column) => {
21
+ const columnTypeStr = column.type._tag;
22
+ const nullableStr = column.nullable === false ? 'not null' : '';
23
+ const autoIncrementStr = column.autoIncrement ? 'autoincrement' : '';
24
+ const defaultValueStr = (() => {
25
+ if (column.default._tag === 'None')
26
+ return '';
27
+ if (column.default.value === null)
28
+ return 'default null';
29
+ if (SqliteDsl.isSqlDefaultValue(column.default.value))
30
+ return `default ${column.default.value.sql}`;
31
+ const encodeValue = Schema.encodeSync(column.schema);
32
+ const encodedDefaultValue = encodeValue(column.default.value);
33
+ if (columnTypeStr === 'text')
34
+ return `default '${encodedDefaultValue}'`;
35
+ return `default ${encodedDefaultValue}`;
36
+ })();
37
+ return `'${column.name}' ${columnTypeStr} ${nullableStr} ${autoIncrementStr} ${defaultValueStr}`;
38
+ };
39
+ //# sourceMappingURL=column-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-spec.js","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAkB,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAyB,EAAE,EAAE;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;IAC1F,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAE9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,oHAAoH;AACpH,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAE,EAAE;IACtD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;QAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,CAAA;QAE7C,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,cAAc,CAAA;QACxD,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,WAAW,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAEnG,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpD,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE7D,IAAI,aAAa,KAAK,MAAM;YAAE,OAAO,YAAY,mBAAmB,GAAG,CAAA;QACvE,OAAO,WAAW,mBAAmB,EAAE,CAAA;IACzC,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,WAAW,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAAA;AAClG,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=column-spec.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-spec.test.d.ts","sourceRoot":"","sources":["../../../../src/schema/state/sqlite/column-spec.test.ts"],"names":[],"mappings":""}