jazz-tools 2.0.0-alpha.21 → 2.0.0-alpha.24

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 (226) hide show
  1. package/bin/docs-index.db +0 -0
  2. package/bin/docs-index.txt +1624 -542
  3. package/bin/jazz-tools.js +47 -41
  4. package/bin/native/jazz-tools-darwin-arm64 +0 -0
  5. package/bin/native/jazz-tools-darwin-x64 +0 -0
  6. package/bin/native/jazz-tools-linux-arm64 +0 -0
  7. package/bin/native/jazz-tools-linux-x64 +0 -0
  8. package/dist/backend/create-jazz-context.d.ts +31 -6
  9. package/dist/backend/create-jazz-context.d.ts.map +1 -1
  10. package/dist/backend/create-jazz-context.js +35 -5
  11. package/dist/backend/create-jazz-context.js.map +1 -1
  12. package/dist/backend/create-jazz-context.test.js +61 -6
  13. package/dist/backend/create-jazz-context.test.js.map +1 -1
  14. package/dist/cli.d.ts +29 -2
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +648 -246
  17. package/dist/cli.js.map +1 -1
  18. package/dist/cli.test.js +640 -294
  19. package/dist/cli.test.js.map +1 -1
  20. package/dist/codegen/schema-reader.d.ts.map +1 -1
  21. package/dist/codegen/schema-reader.js +6 -1
  22. package/dist/codegen/schema-reader.js.map +1 -1
  23. package/dist/dev-tools/dev-tools.d.ts.map +1 -1
  24. package/dist/dev-tools/dev-tools.js +61 -13
  25. package/dist/dev-tools/dev-tools.js.map +1 -1
  26. package/dist/dev-tools/dev-tools.test.js +166 -0
  27. package/dist/dev-tools/dev-tools.test.js.map +1 -1
  28. package/dist/dev-tools/extension-panel.d.ts.map +1 -1
  29. package/dist/dev-tools/extension-panel.js +30 -7
  30. package/dist/dev-tools/extension-panel.js.map +1 -1
  31. package/dist/dev-tools/protocol.d.ts +49 -1
  32. package/dist/dev-tools/protocol.d.ts.map +1 -1
  33. package/dist/dev-tools/protocol.js +3 -0
  34. package/dist/dev-tools/protocol.js.map +1 -1
  35. package/dist/drivers/index.d.ts +1 -1
  36. package/dist/drivers/index.d.ts.map +1 -1
  37. package/dist/drivers/schema-wire.d.ts.map +1 -1
  38. package/dist/drivers/schema-wire.js +12 -1
  39. package/dist/drivers/schema-wire.js.map +1 -1
  40. package/dist/drivers/schema-wire.test.d.ts +2 -0
  41. package/dist/drivers/schema-wire.test.d.ts.map +1 -0
  42. package/dist/drivers/schema-wire.test.js +31 -0
  43. package/dist/drivers/schema-wire.test.js.map +1 -0
  44. package/dist/drivers/types.d.ts +2 -0
  45. package/dist/drivers/types.d.ts.map +1 -1
  46. package/dist/dsl.d.ts +139 -95
  47. package/dist/dsl.d.ts.map +1 -1
  48. package/dist/dsl.js +64 -8
  49. package/dist/dsl.js.map +1 -1
  50. package/dist/dsl.test.js +78 -8
  51. package/dist/dsl.test.js.map +1 -1
  52. package/dist/index.d.ts +32 -3
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +16 -3
  55. package/dist/index.js.map +1 -1
  56. package/dist/magic-columns.d.ts +3 -1
  57. package/dist/magic-columns.d.ts.map +1 -1
  58. package/dist/magic-columns.js +20 -4
  59. package/dist/magic-columns.js.map +1 -1
  60. package/dist/mcp/build-index.test.js +1 -1
  61. package/dist/migrations.d.ts +126 -0
  62. package/dist/migrations.d.ts.map +1 -0
  63. package/dist/migrations.js +112 -0
  64. package/dist/migrations.js.map +1 -0
  65. package/dist/permissions/index.test.js +35 -0
  66. package/dist/permissions/index.test.js.map +1 -1
  67. package/dist/react-native/create-jazz-client.test.js +62 -42
  68. package/dist/react-native/create-jazz-client.test.js.map +1 -1
  69. package/dist/react-native/jazz-rn-runtime-adapter.d.ts +18 -3
  70. package/dist/react-native/jazz-rn-runtime-adapter.d.ts.map +1 -1
  71. package/dist/react-native/jazz-rn-runtime-adapter.js +110 -6
  72. package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
  73. package/dist/react-native/jazz-rn-runtime-adapter.test.js +149 -4
  74. package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
  75. package/dist/reconcile-array.d.ts +29 -0
  76. package/dist/reconcile-array.d.ts.map +1 -0
  77. package/dist/reconcile-array.js +110 -0
  78. package/dist/reconcile-array.js.map +1 -0
  79. package/dist/reconcile-array.test.d.ts +2 -0
  80. package/dist/reconcile-array.test.d.ts.map +1 -0
  81. package/dist/reconcile-array.test.js +118 -0
  82. package/dist/reconcile-array.test.js.map +1 -0
  83. package/dist/runtime/client.d.ts +24 -20
  84. package/dist/runtime/client.d.ts.map +1 -1
  85. package/dist/runtime/client.for-request.test.js +8 -8
  86. package/dist/runtime/client.for-request.test.js.map +1 -1
  87. package/dist/runtime/client.js +58 -25
  88. package/dist/runtime/client.js.map +1 -1
  89. package/dist/runtime/client.mutations.test.js +72 -1
  90. package/dist/runtime/client.mutations.test.js.map +1 -1
  91. package/dist/runtime/cloud-server.integration.test.js +145 -88
  92. package/dist/runtime/cloud-server.integration.test.js.map +1 -1
  93. package/dist/runtime/db.d.ts +3 -7
  94. package/dist/runtime/db.d.ts.map +1 -1
  95. package/dist/runtime/db.js +16 -14
  96. package/dist/runtime/db.js.map +1 -1
  97. package/dist/runtime/db.schema-order.test.js +8 -8
  98. package/dist/runtime/db.schema-order.test.js.map +1 -1
  99. package/dist/runtime/index.d.ts +1 -1
  100. package/dist/runtime/index.d.ts.map +1 -1
  101. package/dist/runtime/index.js +1 -1
  102. package/dist/runtime/index.js.map +1 -1
  103. package/dist/runtime/napi.integration.test.js +113 -136
  104. package/dist/runtime/napi.integration.test.js.map +1 -1
  105. package/dist/runtime/query-adapter.d.ts.map +1 -1
  106. package/dist/runtime/query-adapter.js +22 -2
  107. package/dist/runtime/query-adapter.js.map +1 -1
  108. package/dist/runtime/query-adapter.test.js +81 -5
  109. package/dist/runtime/query-adapter.test.js.map +1 -1
  110. package/dist/runtime/row-transformer.js +2 -2
  111. package/dist/runtime/row-transformer.js.map +1 -1
  112. package/dist/runtime/row-transformer.test.js +9 -9
  113. package/dist/runtime/row-transformer.test.js.map +1 -1
  114. package/dist/runtime/schema-fetch.d.ts +103 -1
  115. package/dist/runtime/schema-fetch.d.ts.map +1 -1
  116. package/dist/runtime/schema-fetch.js +106 -0
  117. package/dist/runtime/schema-fetch.js.map +1 -1
  118. package/dist/runtime/sync-transport.d.ts +3 -1
  119. package/dist/runtime/sync-transport.d.ts.map +1 -1
  120. package/dist/runtime/sync-transport.js +34 -3
  121. package/dist/runtime/sync-transport.js.map +1 -1
  122. package/dist/runtime/sync-transport.test.js +53 -1
  123. package/dist/runtime/sync-transport.test.js.map +1 -1
  124. package/dist/runtime/value-converter.d.ts +9 -6
  125. package/dist/runtime/value-converter.d.ts.map +1 -1
  126. package/dist/runtime/value-converter.js +22 -9
  127. package/dist/runtime/value-converter.js.map +1 -1
  128. package/dist/runtime/value-converter.test.js +32 -26
  129. package/dist/runtime/value-converter.test.js.map +1 -1
  130. package/dist/schema-loader.d.ts +14 -0
  131. package/dist/schema-loader.d.ts.map +1 -0
  132. package/dist/schema-loader.js +219 -0
  133. package/dist/schema-loader.js.map +1 -0
  134. package/dist/schema-permissions.d.ts +8 -0
  135. package/dist/schema-permissions.d.ts.map +1 -0
  136. package/dist/schema-permissions.js +266 -0
  137. package/dist/schema-permissions.js.map +1 -0
  138. package/dist/schema-permissions.test.d.ts +2 -0
  139. package/dist/schema-permissions.test.d.ts.map +1 -0
  140. package/dist/schema-permissions.test.js +43 -0
  141. package/dist/schema-permissions.test.js.map +1 -0
  142. package/dist/schema.d.ts +11 -9
  143. package/dist/schema.d.ts.map +1 -1
  144. package/dist/svelte/context.svelte.test.js +50 -0
  145. package/dist/svelte/rune-patterns.svelte.test.js +301 -0
  146. package/dist/svelte/test-helpers.svelte.js +14 -0
  147. package/dist/svelte/use-all.svelte.d.ts.map +1 -1
  148. package/dist/svelte/use-all.svelte.js +7 -1
  149. package/dist/testing/fixtures/basic/schema.d.ts +11 -0
  150. package/dist/testing/fixtures/basic/schema.d.ts.map +1 -0
  151. package/dist/testing/fixtures/basic/schema.js +10 -0
  152. package/dist/testing/fixtures/basic/schema.js.map +1 -0
  153. package/dist/testing/index.d.ts +2 -1
  154. package/dist/testing/index.d.ts.map +1 -1
  155. package/dist/testing/index.js +2 -1
  156. package/dist/testing/index.js.map +1 -1
  157. package/dist/testing/index.test.js +109 -9
  158. package/dist/testing/index.test.js.map +1 -1
  159. package/dist/testing/local-jazz-server.d.ts +2 -0
  160. package/dist/testing/local-jazz-server.d.ts.map +1 -1
  161. package/dist/testing/local-jazz-server.js +21 -51
  162. package/dist/testing/local-jazz-server.js.map +1 -1
  163. package/dist/testing/policy-test-app.d.ts.map +1 -1
  164. package/dist/testing/policy-test-app.js +71 -3
  165. package/dist/testing/policy-test-app.js.map +1 -1
  166. package/dist/typed-app.d.ts +364 -0
  167. package/dist/typed-app.d.ts.map +1 -0
  168. package/dist/{testing/fixtures/basic/app.js → typed-app.js} +118 -30
  169. package/dist/typed-app.js.map +1 -0
  170. package/dist/vue/use-all.d.ts +2 -2
  171. package/dist/vue/use-all.d.ts.map +1 -1
  172. package/dist/vue/use-all.js +9 -3
  173. package/dist/vue/use-all.js.map +1 -1
  174. package/dist/vue/use-all.test.js +137 -0
  175. package/dist/vue/use-all.test.js.map +1 -1
  176. package/package.json +17 -14
  177. package/bin/native/jazz-tools-windows-x64.exe +0 -0
  178. package/dist/codegen/codegen.test.d.ts +0 -2
  179. package/dist/codegen/codegen.test.d.ts.map +0 -1
  180. package/dist/codegen/codegen.test.js +0 -1134
  181. package/dist/codegen/codegen.test.js.map +0 -1
  182. package/dist/codegen/index.d.ts +0 -18
  183. package/dist/codegen/index.d.ts.map +0 -1
  184. package/dist/codegen/index.js +0 -22
  185. package/dist/codegen/index.js.map +0 -1
  186. package/dist/codegen/query-builder-generator.d.ts +0 -26
  187. package/dist/codegen/query-builder-generator.d.ts.map +0 -1
  188. package/dist/codegen/query-builder-generator.js +0 -377
  189. package/dist/codegen/query-builder-generator.js.map +0 -1
  190. package/dist/codegen/type-generator.d.ts +0 -30
  191. package/dist/codegen/type-generator.d.ts.map +0 -1
  192. package/dist/codegen/type-generator.js +0 -368
  193. package/dist/codegen/type-generator.js.map +0 -1
  194. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts +0 -2
  195. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts.map +0 -1
  196. package/dist/runtime/napi.fjall.db.all.integration.test.js +0 -76
  197. package/dist/runtime/napi.fjall.db.all.integration.test.js.map +0 -1
  198. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts +0 -2
  199. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts.map +0 -1
  200. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js +0 -47
  201. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js.map +0 -1
  202. package/dist/runtime/napi.fjall.test-helpers.d.ts +0 -34
  203. package/dist/runtime/napi.fjall.test-helpers.d.ts.map +0 -1
  204. package/dist/runtime/napi.fjall.test-helpers.js +0 -172
  205. package/dist/runtime/napi.fjall.test-helpers.js.map +0 -1
  206. package/dist/sql-gen.d.ts +0 -5
  207. package/dist/sql-gen.d.ts.map +0 -1
  208. package/dist/sql-gen.js +0 -234
  209. package/dist/sql-gen.js.map +0 -1
  210. package/dist/sql-gen.test.d.ts +0 -2
  211. package/dist/sql-gen.test.d.ts.map +0 -1
  212. package/dist/sql-gen.test.js +0 -481
  213. package/dist/sql-gen.test.js.map +0 -1
  214. package/dist/svelte/context.test.d.ts +0 -2
  215. package/dist/svelte/context.test.d.ts.map +0 -1
  216. package/dist/svelte/context.test.js +0 -55
  217. package/dist/svelte/use-all.test.d.ts +0 -2
  218. package/dist/svelte/use-all.test.d.ts.map +0 -1
  219. package/dist/svelte/use-all.test.js +0 -147
  220. package/dist/testing/fixtures/basic/app.d.ts +0 -59
  221. package/dist/testing/fixtures/basic/app.d.ts.map +0 -1
  222. package/dist/testing/fixtures/basic/app.js.map +0 -1
  223. package/dist/testing/fixtures/basic/current.d.ts +0 -2
  224. package/dist/testing/fixtures/basic/current.d.ts.map +0 -1
  225. package/dist/testing/fixtures/basic/current.js +0 -6
  226. package/dist/testing/fixtures/basic/current.js.map +0 -1
@@ -0,0 +1,364 @@
1
+ import type { AnyTypedColumnBuilder, ColumnBuilderHasDefault, ColumnBuilderOptional, ColumnBuilderReferences, ColumnBuilderSqlType } from "./dsl.js";
2
+ import type { WasmSchema } from "./drivers/types.js";
3
+ import { type PermissionIntrospectionColumn, type ProvenanceMagicColumn } from "./magic-columns.js";
4
+ import type { QueryBuilder } from "./runtime/db.js";
5
+ import type { SqlType, TSTypeFromSqlType } from "./schema.js";
6
+ export type TableDefinition = Record<string, AnyTypedColumnBuilder>;
7
+ export interface TableIndex<TColumns extends TableDefinition = TableDefinition> {
8
+ readonly name: string;
9
+ readonly columns: readonly Extract<keyof TColumns, string>[];
10
+ }
11
+ export declare class DefinedTable<TColumns extends TableDefinition = TableDefinition> {
12
+ readonly columns: TColumns;
13
+ readonly indexes: readonly TableIndex[];
14
+ readonly __jazzTableDefinition: true;
15
+ constructor(columns: TColumns, indexes?: readonly TableIndex[]);
16
+ index<const TName extends string, const TColumnsForIndex extends readonly [
17
+ Extract<keyof TColumns, string>,
18
+ ...Extract<keyof TColumns, string>[]
19
+ ]>(name: TName, columns: TColumnsForIndex): DefinedTable<TColumns>;
20
+ }
21
+ export declare function defineTable<const TColumns extends TableDefinition>(columns: TColumns): DefinedTable<TColumns>;
22
+ type TableSource<TColumns extends TableDefinition = TableDefinition> = TColumns | DefinedTable<TColumns>;
23
+ type NormalizeTableDefinition<TTable extends TableSource> = TTable extends DefinedTable<infer TColumns> ? Simplify<TColumns> : TTable extends TableDefinition ? Simplify<TTable> : never;
24
+ export type SchemaDefinition = Record<string, TableSource<TableDefinition>>;
25
+ export type Simplify<T> = {
26
+ [K in keyof T]: T[K];
27
+ } & {};
28
+ export type CompactSchema<TSchema extends SchemaDefinition> = Simplify<{
29
+ [TTable in keyof TSchema]: NormalizeTableDefinition<TSchema[TTable]>;
30
+ }>;
31
+ declare const definedSchemaBrand: unique symbol;
32
+ export interface Schema<TSchema extends SchemaDefinition = SchemaDefinition> {
33
+ readonly [definedSchemaBrand]: CompactSchema<TSchema>;
34
+ }
35
+ export type DefinedSchema<TSchema extends SchemaDefinition = SchemaDefinition> = Schema<TSchema>;
36
+ type SchemaLike = SchemaDefinition | Schema<any>;
37
+ type SchemaColumns<TSchema extends SchemaDefinition> = CompactSchema<TSchema>;
38
+ type InvalidRefTargetEntries<TSchema extends SchemaDefinition> = {
39
+ [TTable in Extract<keyof SchemaColumns<TSchema>, string>]: {
40
+ [TColumn in Extract<keyof SchemaColumns<TSchema>[TTable], string>]: SchemaColumns<TSchema>[TTable][TColumn] extends infer TBuilder extends AnyTypedColumnBuilder ? ColumnBuilderSqlType<TBuilder> extends "UUID" | {
41
+ kind: "ARRAY";
42
+ element: "UUID";
43
+ } ? ColumnBuilderReferences<TBuilder> extends infer TRef ? TRef extends string ? TRef extends Extract<keyof SchemaColumns<TSchema>, string> ? never : {
44
+ table: TTable;
45
+ column: TColumn;
46
+ ref: TRef;
47
+ } : never : never : never : never;
48
+ }[Extract<keyof SchemaColumns<TSchema>[TTable], string>];
49
+ }[Extract<keyof SchemaColumns<TSchema>, string>];
50
+ type ValidateSchemaRefs<TSchema extends SchemaDefinition> = [
51
+ InvalidRefTargetEntries<TSchema>
52
+ ] extends [never] ? unknown : {
53
+ readonly __schemaRefValidationError__: "Schema refs must point at declared table names";
54
+ readonly __invalidRefTargets__: InvalidRefTargetEntries<TSchema>;
55
+ };
56
+ type NormalizedSchema<TSchema extends SchemaLike> = TSchema extends Schema<infer TDefinition> ? CompactSchema<TDefinition> : TSchema extends SchemaDefinition ? CompactSchema<TSchema> : never;
57
+ type TableName<TSchema extends SchemaLike> = Extract<keyof NormalizedSchema<TSchema>, string>;
58
+ type ColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Extract<keyof NormalizedSchema<TSchema>[TTable], string>;
59
+ type BuilderForColumn<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TColumn extends ColumnName<TSchema, TTable>> = NormalizedSchema<TSchema>[TTable][TColumn];
60
+ type ColumnValue<TBuilder extends AnyTypedColumnBuilder> = TSTypeFromSqlType<ColumnBuilderSqlType<TBuilder>>;
61
+ type ReturnedColumnValue<TBuilder extends AnyTypedColumnBuilder> = ColumnBuilderOptional<TBuilder> extends true ? ColumnValue<TBuilder> | null : ColumnValue<TBuilder>;
62
+ type InsertColumnValue<TBuilder extends AnyTypedColumnBuilder> = ColumnBuilderOptional<TBuilder> extends true ? ColumnValue<TBuilder> | null : ColumnValue<TBuilder>;
63
+ type OptionalColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
64
+ [TColumn in ColumnName<TSchema, TTable>]-?: ColumnBuilderOptional<BuilderForColumn<TSchema, TTable, TColumn>> extends true ? TColumn : never;
65
+ }[ColumnName<TSchema, TTable>];
66
+ type RequiredColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Exclude<ColumnName<TSchema, TTable>, OptionalColumnName<TSchema, TTable>>;
67
+ type DefaultedColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
68
+ [TColumn in ColumnName<TSchema, TTable>]-?: ColumnBuilderHasDefault<BuilderForColumn<TSchema, TTable, TColumn>> extends true ? TColumn : never;
69
+ }[ColumnName<TSchema, TTable>];
70
+ type OptionalInsertColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = OptionalColumnName<TSchema, TTable> | DefaultedColumnName<TSchema, TTable>;
71
+ type RequiredInsertColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Exclude<ColumnName<TSchema, TTable>, OptionalInsertColumnName<TSchema, TTable>>;
72
+ export type TableRow<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Simplify<{
73
+ id: string;
74
+ } & {
75
+ [TColumn in RequiredColumnName<TSchema, TTable>]: ColumnValue<BuilderForColumn<TSchema, TTable, TColumn>>;
76
+ } & {
77
+ [TColumn in OptionalColumnName<TSchema, TTable>]: ReturnedColumnValue<BuilderForColumn<TSchema, TTable, TColumn>>;
78
+ }>;
79
+ export type TableInit<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Simplify<{
80
+ [TColumn in RequiredInsertColumnName<TSchema, TTable>]: InsertColumnValue<BuilderForColumn<TSchema, TTable, TColumn>>;
81
+ } & {
82
+ [TColumn in OptionalInsertColumnName<TSchema, TTable>]?: InsertColumnValue<BuilderForColumn<TSchema, TTable, TColumn>>;
83
+ }>;
84
+ type MaybeNullableWhere<T, TOptional extends boolean> = TOptional extends true ? T | null : T;
85
+ type WhereEqNe<T, TOptional extends boolean, TExtra extends object = {}> = MaybeNullableWhere<T, TOptional> | ({
86
+ eq?: MaybeNullableWhere<T, TOptional>;
87
+ ne?: MaybeNullableWhere<T, TOptional>;
88
+ } & TExtra);
89
+ type NumberWhere<T extends number, TOptional extends boolean> = WhereEqNe<T, TOptional, {
90
+ gt?: T;
91
+ gte?: T;
92
+ lt?: T;
93
+ lte?: T;
94
+ }>;
95
+ type TimestampWhere<TOptional extends boolean> = WhereEqNe<Date | number, TOptional, {
96
+ gt?: Date | number;
97
+ gte?: Date | number;
98
+ lt?: Date | number;
99
+ lte?: Date | number;
100
+ }>;
101
+ type UuidWhere<TOptional extends boolean, TRef extends string | undefined> = TRef extends string ? WhereEqNe<string, TOptional, TOptional extends true ? {
102
+ isNull?: boolean;
103
+ } : {}> : WhereEqNe<string, TOptional, TOptional extends true ? {
104
+ in?: string[];
105
+ isNull?: boolean;
106
+ } : {
107
+ in?: string[];
108
+ }>;
109
+ type WhereInputForBuilder<TBuilder extends AnyTypedColumnBuilder> = ColumnBuilderSqlType<TBuilder> extends "TEXT" ? WhereEqNe<string, ColumnBuilderOptional<TBuilder>, {
110
+ contains?: string;
111
+ }> : ColumnBuilderSqlType<TBuilder> extends "BOOLEAN" ? boolean : ColumnBuilderSqlType<TBuilder> extends "INTEGER" | "REAL" ? NumberWhere<number, ColumnBuilderOptional<TBuilder>> : ColumnBuilderSqlType<TBuilder> extends "TIMESTAMP" ? TimestampWhere<ColumnBuilderOptional<TBuilder>> : ColumnBuilderSqlType<TBuilder> extends "UUID" ? UuidWhere<ColumnBuilderOptional<TBuilder>, ColumnBuilderReferences<TBuilder>> : ColumnBuilderSqlType<TBuilder> extends "BYTEA" ? WhereEqNe<Uint8Array, ColumnBuilderOptional<TBuilder>> : ColumnBuilderSqlType<TBuilder> extends {
112
+ kind: "JSON";
113
+ } ? WhereEqNe<ColumnValue<TBuilder>, ColumnBuilderOptional<TBuilder>, {
114
+ in?: ColumnValue<TBuilder>[];
115
+ }> : ColumnBuilderSqlType<TBuilder> extends {
116
+ kind: "ENUM";
117
+ variants: readonly (infer TVariant extends string)[];
118
+ } ? WhereEqNe<TVariant, ColumnBuilderOptional<TBuilder>, {
119
+ in?: TVariant[];
120
+ }> : ColumnBuilderSqlType<TBuilder> extends {
121
+ kind: "ARRAY";
122
+ element: infer TElementSql extends SqlType;
123
+ } ? WhereEqNe<ColumnValue<TBuilder>, ColumnBuilderOptional<TBuilder>, {
124
+ contains?: TSTypeFromSqlType<TElementSql>;
125
+ }> : never;
126
+ export type TableWhereInput<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Simplify<{
127
+ id?: string | {
128
+ eq?: string;
129
+ ne?: string;
130
+ in?: string[];
131
+ };
132
+ } & {
133
+ [TColumn in ColumnName<TSchema, TTable>]?: WhereInputForBuilder<BuilderForColumn<TSchema, TTable, TColumn>>;
134
+ } & {
135
+ [TColumn in PermissionIntrospectionColumn]?: boolean;
136
+ } & {
137
+ [TColumn in ProvenanceMagicColumn]?: string | Date | number | {
138
+ eq?: string | Date | number;
139
+ ne?: string | Date | number;
140
+ gt?: Date | number;
141
+ gte?: Date | number;
142
+ lt?: Date | number;
143
+ lte?: Date | number;
144
+ };
145
+ }>;
146
+ type BaseColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Extract<keyof TableRow<TSchema, TTable>, string>;
147
+ type DefaultSelection<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = BaseColumnName<TSchema, TTable>;
148
+ type StripRefSuffix<TColumn extends string> = TColumn extends `${infer TPrefix}_ids` ? TPrefix : TColumn extends `${infer TPrefix}Ids` ? TPrefix : TColumn extends `${infer TPrefix}_id` ? TPrefix : TColumn extends `${infer TPrefix}Id` ? TPrefix : TColumn;
149
+ type MaybePluralize<TName extends string> = TName extends `${string}s` ? TName : `${TName}s`;
150
+ type ForwardRelationName<TColumn extends string> = TColumn extends `${string}_ids` | `${string}Ids` ? MaybePluralize<StripRefSuffix<TColumn>> : StripRefSuffix<TColumn>;
151
+ type IsArrayRelation<TBuilder extends AnyTypedColumnBuilder> = ColumnBuilderSqlType<TBuilder> extends {
152
+ kind: "ARRAY";
153
+ element: "UUID";
154
+ } ? true : false;
155
+ type ForwardRelationEntry<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TColumn extends ColumnName<TSchema, TTable>> = ColumnBuilderReferences<BuilderForColumn<TSchema, TTable, TColumn>> extends infer TRef ? TRef extends TableName<TSchema> ? {
156
+ name: ForwardRelationName<TColumn>;
157
+ toTable: TRef;
158
+ isArray: IsArrayRelation<BuilderForColumn<TSchema, TTable, TColumn>>;
159
+ nullable: ColumnBuilderOptional<BuilderForColumn<TSchema, TTable, TColumn>>;
160
+ } : never : never;
161
+ type ForwardRelationEntries<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
162
+ [TColumn in ColumnName<TSchema, TTable>]: ForwardRelationEntry<TSchema, TTable, TColumn>;
163
+ }[ColumnName<TSchema, TTable>];
164
+ type ReverseRelationEntryUnion<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
165
+ [TSourceTable in TableName<TSchema>]: {
166
+ [TColumn in ColumnName<TSchema, TSourceTable>]: ColumnBuilderReferences<BuilderForColumn<TSchema, TSourceTable, TColumn>> extends TTable ? {
167
+ name: `${TSourceTable}Via${Capitalize<ForwardRelationName<TColumn>>}`;
168
+ toTable: TSourceTable;
169
+ isArray: true;
170
+ nullable: false;
171
+ } : never;
172
+ }[ColumnName<TSchema, TSourceTable>];
173
+ }[TableName<TSchema>];
174
+ type ForwardRelationMap<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
175
+ [TRelation in ForwardRelationEntries<TSchema, TTable> as TRelation["name"]]: Omit<TRelation, "name">;
176
+ };
177
+ type ReverseRelationMap<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
178
+ [TRelation in ReverseRelationEntryUnion<TSchema, TTable> as TRelation["name"]]: Omit<TRelation, "name">;
179
+ };
180
+ type RelationMap<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = ForwardRelationMap<TSchema, TTable> & ReverseRelationMap<TSchema, TTable>;
181
+ type RelationName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Extract<keyof RelationMap<TSchema, TTable>, string>;
182
+ type RelationInfo<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRelation extends RelationName<TSchema, TTable>> = Extract<ForwardRelationEntries<TSchema, TTable> | ReverseRelationEntryUnion<TSchema, TTable>, {
183
+ name: TRelation;
184
+ }>;
185
+ type RelationTargetTable<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRelation extends RelationName<TSchema, TTable>> = RelationInfo<TSchema, TTable, TRelation>["toTable"];
186
+ type RelationIsArray<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRelation extends RelationName<TSchema, TTable>> = RelationInfo<TSchema, TTable, TRelation>["isArray"];
187
+ type RelationNullable<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRelation extends RelationName<TSchema, TTable>> = RelationInfo<TSchema, TTable, TRelation>["nullable"];
188
+ type QueryBuilderShape<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRow = unknown> = QueryBuilder<TRow> & {
189
+ readonly _table: TTable;
190
+ readonly _initType: TableInit<TSchema, TTable>;
191
+ };
192
+ type PermissionIntrospectionColumns = {
193
+ $canRead: boolean | null;
194
+ $canEdit: boolean | null;
195
+ $canDelete: boolean | null;
196
+ };
197
+ type ProvenanceMagicColumns = {
198
+ $createdBy: string;
199
+ $createdAt: Date;
200
+ $updatedBy: string;
201
+ $updatedAt: Date;
202
+ };
203
+ export type TableSelectableColumn<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = BaseColumnName<TSchema, TTable> | PermissionIntrospectionColumn | ProvenanceMagicColumn | "*";
204
+ export type TableOrderableColumn<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = BaseColumnName<TSchema, TTable> | PermissionIntrospectionColumn | ProvenanceMagicColumn;
205
+ export type TableSelected<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TSelection extends TableSelectableColumn<TSchema, TTable> = BaseColumnName<TSchema, TTable>> = Simplify<("*" extends TSelection ? TableRow<TSchema, TTable> : Pick<TableRow<TSchema, TTable>, Extract<TSelection | "id", keyof TableRow<TSchema, TTable>>>) & Pick<PermissionIntrospectionColumns, Extract<TSelection, PermissionIntrospectionColumn>> & Pick<ProvenanceMagicColumns, Extract<TSelection, ProvenanceMagicColumn>>>;
206
+ type ApplyRelationCardinality<TValue, TIsArray extends boolean, TNullable extends boolean, TRequired extends boolean> = TIsArray extends true ? TNullable extends true ? TValue[] | null : TValue[] : TRequired extends true ? TNullable extends true ? TValue | null : TValue : TValue | null;
207
+ export type TableInclude<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = {
208
+ [TRelation in RelationName<TSchema, TTable>]?: true | TableInclude<TSchema, RelationTargetTable<TSchema, TTable, TRelation>> | QueryBuilderShape<TSchema, RelationTargetTable<TSchema, TTable, TRelation>, any>;
209
+ };
210
+ type IncludedRelationValue<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRelation extends RelationName<TSchema, TTable>, TRequired extends boolean, TSpec> = TSpec extends true ? ApplyRelationCardinality<TableRow<TSchema, RelationTargetTable<TSchema, TTable, TRelation>>, RelationIsArray<TSchema, TTable, TRelation>, RelationNullable<TSchema, TTable, TRelation>, TRequired> : TSpec extends QueryBuilderShape<TSchema, RelationTargetTable<TSchema, TTable, TRelation>, infer TQueryRow> ? ApplyRelationCardinality<TQueryRow, RelationIsArray<TSchema, TTable, TRelation>, RelationNullable<TSchema, TTable, TRelation>, TRequired> : TSpec extends TableInclude<TSchema, RelationTargetTable<TSchema, TTable, TRelation>> ? ApplyRelationCardinality<TableSelectedWithIncludes<TSchema, RelationTargetTable<TSchema, TTable, TRelation>, TSpec, DefaultSelection<TSchema, RelationTargetTable<TSchema, TTable, TRelation>>, TRequired>, RelationIsArray<TSchema, TTable, TRelation>, RelationNullable<TSchema, TTable, TRelation>, TRequired> : never;
211
+ type IncludedRelations<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TRequired extends boolean, TInclude extends TableInclude<TSchema, TTable>> = {
212
+ [TRelation in keyof TInclude & RelationName<TSchema, TTable>]-?: IncludedRelationValue<TSchema, TTable, TRelation, TRequired, NonNullable<TInclude[TRelation]>>;
213
+ };
214
+ export type TableSelectedWithIncludes<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TInclude extends TableInclude<TSchema, TTable> = {}, TSelection extends TableSelectableColumn<TSchema, TTable> = DefaultSelection<TSchema, TTable>, TRequired extends boolean = false> = Simplify<Omit<TableSelected<TSchema, TTable, TSelection>, Extract<keyof TInclude, keyof TableSelected<TSchema, TTable, TSelection>>> & IncludedRelations<TSchema, TTable, TRequired, TInclude>>;
215
+ export interface TableRelation<TTarget extends AnyTableMeta = AnyTableMeta, TIsArray extends boolean = boolean, TNullable extends boolean = boolean> {
216
+ readonly target: TTarget;
217
+ readonly isArray: TIsArray;
218
+ readonly nullable: TNullable;
219
+ }
220
+ export type TableRelationMap = Record<string, TableRelation>;
221
+ export interface TableMeta<TName extends string = string, TRow extends {
222
+ id: string;
223
+ } = {
224
+ id: string;
225
+ }, TInit extends object = Record<string, never>, TWhere extends object = Record<string, never>, TRelations extends TableRelationMap = {}> {
226
+ readonly name: TName;
227
+ readonly row: TRow;
228
+ readonly init: TInit;
229
+ readonly where: TWhere;
230
+ readonly relations: TRelations;
231
+ }
232
+ export type AnyTableMeta = TableMeta<string, {
233
+ id: string;
234
+ }, Record<string, unknown>, Record<string, unknown>, TableRelationMap>;
235
+ type TableNameFromMeta<TMeta extends AnyTableMeta> = TMeta["name"];
236
+ type TableRowFromMeta<TMeta extends AnyTableMeta> = TMeta["row"];
237
+ type TableInitFromMeta<TMeta extends AnyTableMeta> = TMeta["init"];
238
+ type TableWhereFromMeta<TMeta extends AnyTableMeta> = TMeta["where"];
239
+ type TableRelationsFromMeta<TMeta extends AnyTableMeta> = TMeta["relations"];
240
+ type RelationNameFromMeta<TMeta extends AnyTableMeta> = Extract<keyof TableRelationsFromMeta<TMeta>, string>;
241
+ type RelationFromMeta<TMeta extends AnyTableMeta, TRelation extends RelationNameFromMeta<TMeta>> = TableRelationsFromMeta<TMeta>[TRelation];
242
+ type RelationTargetFromMeta<TMeta extends AnyTableMeta, TRelation extends RelationNameFromMeta<TMeta>> = RelationFromMeta<TMeta, TRelation>["target"];
243
+ type RelationIsArrayFromMeta<TMeta extends AnyTableMeta, TRelation extends RelationNameFromMeta<TMeta>> = RelationFromMeta<TMeta, TRelation>["isArray"];
244
+ type RelationNullableFromMeta<TMeta extends AnyTableMeta, TRelation extends RelationNameFromMeta<TMeta>> = RelationFromMeta<TMeta, TRelation>["nullable"];
245
+ type BaseColumnNameFromMeta<TMeta extends AnyTableMeta> = Extract<keyof TableRowFromMeta<TMeta>, string>;
246
+ type TableSelectableFromMeta<TMeta extends AnyTableMeta> = BaseColumnNameFromMeta<TMeta> | PermissionIntrospectionColumn | ProvenanceMagicColumn | "*";
247
+ type TableOrderableFromMeta<TMeta extends AnyTableMeta> = BaseColumnNameFromMeta<TMeta> | PermissionIntrospectionColumn | ProvenanceMagicColumn;
248
+ type DefaultTableSelection<TMeta extends AnyTableMeta> = BaseColumnNameFromMeta<TMeta>;
249
+ export type SchemaRelations<TTable extends string, TSchema extends SchemaLike> = TTable extends TableName<TSchema> ? {
250
+ [TRelation in RelationName<TSchema, TTable>]: TableRelation<SchemaTable<RelationTargetTable<TSchema, TTable, TRelation>, TSchema>, RelationIsArray<TSchema, TTable, TRelation>, RelationNullable<TSchema, TTable, TRelation>>;
251
+ } : never;
252
+ export type SchemaTable<TTable extends string, TSchema extends SchemaLike> = TTable extends TableName<TSchema> ? TableMeta<TTable, TableRow<TSchema, TTable>, TableInit<TSchema, TTable>, TableWhereInput<TSchema, TTable>, SchemaRelations<TTable, TSchema>> : never;
253
+ type SchemaMeta<TTable extends string, TSchema extends SchemaLike> = SchemaTable<TTable, TSchema>;
254
+ type MetaQueryBuilderShape<TMeta extends AnyTableMeta, TRow = unknown> = QueryBuilder<TRow> & {
255
+ readonly _table: TableNameFromMeta<TMeta>;
256
+ readonly _initType: TableInitFromMeta<TMeta>;
257
+ };
258
+ type BuilderInclude<TMeta extends AnyTableMeta> = {
259
+ [TRelation in RelationNameFromMeta<TMeta>]?: true | BuilderInclude<RelationTargetFromMeta<TMeta, TRelation>> | MetaQueryBuilderShape<RelationTargetFromMeta<TMeta, TRelation>, any>;
260
+ };
261
+ type SelectedFromMeta<TMeta extends AnyTableMeta, TSelection extends TableSelectableFromMeta<TMeta> = DefaultTableSelection<TMeta>> = Simplify<("*" extends TSelection ? TableRowFromMeta<TMeta> : Pick<TableRowFromMeta<TMeta>, Extract<TSelection | "id", keyof TableRowFromMeta<TMeta>>>) & Pick<PermissionIntrospectionColumns, Extract<TSelection, PermissionIntrospectionColumn>> & Pick<ProvenanceMagicColumns, Extract<TSelection, ProvenanceMagicColumn>>>;
262
+ type IncludedRelationValueFromMeta<TMeta extends AnyTableMeta, TRelation extends RelationNameFromMeta<TMeta>, TRequired extends boolean, TSpec> = TSpec extends true ? ApplyRelationCardinality<TableRowFromMeta<RelationTargetFromMeta<TMeta, TRelation>>, RelationIsArrayFromMeta<TMeta, TRelation>, RelationNullableFromMeta<TMeta, TRelation>, TRequired> : TSpec extends MetaQueryBuilderShape<RelationTargetFromMeta<TMeta, TRelation>, infer TQueryRow> ? ApplyRelationCardinality<TQueryRow, RelationIsArrayFromMeta<TMeta, TRelation>, RelationNullableFromMeta<TMeta, TRelation>, TRequired> : TSpec extends BuilderInclude<RelationTargetFromMeta<TMeta, TRelation>> ? ApplyRelationCardinality<SelectedWithIncludesFromMeta<RelationTargetFromMeta<TMeta, TRelation>, TSpec, DefaultTableSelection<RelationTargetFromMeta<TMeta, TRelation>>, TRequired>, RelationIsArrayFromMeta<TMeta, TRelation>, RelationNullableFromMeta<TMeta, TRelation>, TRequired> : never;
263
+ type IncludedRelationsFromMeta<TMeta extends AnyTableMeta, TRequired extends boolean, TInclude extends BuilderInclude<TMeta>> = {
264
+ [TRelation in keyof TInclude & RelationNameFromMeta<TMeta>]-?: IncludedRelationValueFromMeta<TMeta, TRelation, TRequired, NonNullable<TInclude[TRelation]>>;
265
+ };
266
+ type SelectedWithIncludesFromMeta<TMeta extends AnyTableMeta, TInclude extends BuilderInclude<TMeta> = {}, TSelection extends TableSelectableFromMeta<TMeta> = DefaultTableSelection<TMeta>, TRequired extends boolean = false> = Simplify<Omit<SelectedFromMeta<TMeta, TSelection>, Extract<keyof TInclude, keyof SelectedFromMeta<TMeta, TSelection>>> & IncludedRelationsFromMeta<TMeta, TRequired, TInclude>>;
267
+ export declare class TypedTableQueryBuilder<TMeta extends AnyTableMeta, TInclude extends BuilderInclude<TMeta> = {}, TSelection extends TableSelectableFromMeta<TMeta> = DefaultTableSelection<TMeta>, TRequired extends boolean = false> implements QueryBuilder<SelectedWithIncludesFromMeta<TMeta, TInclude, TSelection, TRequired>> {
268
+ readonly _table: TableNameFromMeta<TMeta>;
269
+ readonly _schema: WasmSchema;
270
+ readonly _rowType: SelectedWithIncludesFromMeta<TMeta, TInclude, TSelection, TRequired>;
271
+ readonly _initType: TableInitFromMeta<TMeta>;
272
+ private _conditions;
273
+ private _includes;
274
+ private _requireIncludes;
275
+ private _selectColumns?;
276
+ private _orderBys;
277
+ private _limitVal?;
278
+ private _offsetVal?;
279
+ private _hops;
280
+ private _gatherVal?;
281
+ constructor(table: TableNameFromMeta<TMeta>, schema: WasmSchema);
282
+ where(conditions: TableWhereFromMeta<TMeta>): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
283
+ select<NewSelection extends TableSelectableFromMeta<TMeta>>(...columns: [NewSelection, ...NewSelection[]]): MetaQueryHandle<TMeta, TInclude, NewSelection, TRequired>;
284
+ include<NewInclude extends BuilderInclude<TMeta>>(relations: NewInclude): MetaQueryHandle<TMeta, TInclude & NewInclude, TSelection, TRequired>;
285
+ requireIncludes(): MetaQueryHandle<TMeta, TInclude, TSelection, true>;
286
+ orderBy(column: TableOrderableFromMeta<TMeta>, direction?: "asc" | "desc"): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
287
+ limit(n: number): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
288
+ offset(n: number): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
289
+ hopTo(relation: RelationNameFromMeta<TMeta>): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
290
+ gather(options: {
291
+ start: TableWhereFromMeta<TMeta>;
292
+ step: (ctx: {
293
+ current: string;
294
+ }) => QueryBuilder<unknown>;
295
+ maxDepth?: number;
296
+ }): MetaQueryHandle<TMeta, TInclude, TSelection, TRequired>;
297
+ _build(): string;
298
+ toJSON(): unknown;
299
+ private _clone;
300
+ }
301
+ interface MetaQueryHandle<TMeta extends AnyTableMeta, TInclude extends BuilderInclude<TMeta> = {}, TSelection extends TableSelectableFromMeta<TMeta> = DefaultTableSelection<TMeta>, TRequired extends boolean = false> extends TypedTableQueryBuilder<TMeta, TInclude, TSelection, TRequired> {
302
+ }
303
+ export interface Query<TTable extends string, TInclude extends BuilderInclude<SchemaMeta<TTable, TSchema>> = {}, TSelection extends TableSelectableFromMeta<SchemaMeta<TTable, TSchema>> = any, TSchema extends SchemaLike = SchemaLike> extends TypedTableQueryBuilder<SchemaMeta<TTable, TSchema>, TInclude, TSelection, false> {
304
+ where(conditions: TableWhereInput<TSchema, Extract<TTable, TableName<TSchema>>>): Query<TTable, TInclude, TSelection, TSchema>;
305
+ select<NewSelection extends TableSelectableFromMeta<SchemaMeta<TTable, TSchema>>>(...columns: [NewSelection, ...NewSelection[]]): Query<TTable, TInclude, NewSelection, TSchema>;
306
+ include<NewInclude extends BuilderInclude<SchemaMeta<TTable, TSchema>>>(relations: NewInclude): Query<TTable, TInclude & NewInclude, TSelection, TSchema>;
307
+ requireIncludes(): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
308
+ orderBy(column: TableOrderableFromMeta<SchemaMeta<TTable, TSchema>>, direction?: "asc" | "desc"): Query<TTable, TInclude, TSelection, TSchema>;
309
+ limit(n: number): Query<TTable, TInclude, TSelection, TSchema>;
310
+ offset(n: number): Query<TTable, TInclude, TSelection, TSchema>;
311
+ hopTo(relation: RelationNameFromMeta<SchemaMeta<TTable, TSchema>>): Query<TTable, TInclude, TSelection, TSchema>;
312
+ gather(options: {
313
+ start: TableWhereInput<TSchema, Extract<TTable, TableName<TSchema>>>;
314
+ step: (ctx: {
315
+ current: string;
316
+ }) => QueryBuilder<unknown>;
317
+ maxDepth?: number;
318
+ }): Query<TTable, TInclude, TSelection, TSchema>;
319
+ }
320
+ export interface RequiredQuery<TTable extends string, TInclude extends BuilderInclude<SchemaMeta<TTable, TSchema>> = {}, TSelection extends TableSelectableFromMeta<SchemaMeta<TTable, TSchema>> = any, TSchema extends SchemaLike = SchemaLike> extends TypedTableQueryBuilder<SchemaMeta<TTable, TSchema>, TInclude, TSelection, true> {
321
+ where(conditions: TableWhereInput<TSchema, Extract<TTable, TableName<TSchema>>>): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
322
+ select<NewSelection extends TableSelectableFromMeta<SchemaMeta<TTable, TSchema>>>(...columns: [NewSelection, ...NewSelection[]]): RequiredQuery<TTable, TInclude, NewSelection, TSchema>;
323
+ include<NewInclude extends BuilderInclude<SchemaMeta<TTable, TSchema>>>(relations: NewInclude): RequiredQuery<TTable, TInclude & NewInclude, TSelection, TSchema>;
324
+ requireIncludes(): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
325
+ orderBy(column: TableOrderableFromMeta<SchemaMeta<TTable, TSchema>>, direction?: "asc" | "desc"): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
326
+ limit(n: number): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
327
+ offset(n: number): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
328
+ hopTo(relation: RelationNameFromMeta<SchemaMeta<TTable, TSchema>>): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
329
+ gather(options: {
330
+ start: TableWhereInput<TSchema, Extract<TTable, TableName<TSchema>>>;
331
+ step: (ctx: {
332
+ current: string;
333
+ }) => QueryBuilder<unknown>;
334
+ maxDepth?: number;
335
+ }): RequiredQuery<TTable, TInclude, TSelection, TSchema>;
336
+ }
337
+ export interface Table<TTable extends string, TSchema extends SchemaLike> extends Query<TTable, {}, DefaultTableSelection<SchemaMeta<TTable, TSchema>>, TSchema> {
338
+ }
339
+ export type QueryHandle<TTable extends string, TSchema extends SchemaLike, TInclude extends BuilderInclude<SchemaMeta<TTable, TSchema>> = {}, TSelection extends TableSelectableFromMeta<SchemaMeta<TTable, TSchema>> = DefaultTableSelection<SchemaMeta<TTable, TSchema>>> = Query<TTable, TInclude, TSelection, TSchema>;
340
+ export type TableHandle<TTable extends string, TSchema extends SchemaLike> = Table<TTable, TSchema>;
341
+ export type App<TSchema extends SchemaLike> = Simplify<{
342
+ [TTable in TableName<TSchema>]: Table<TTable, TSchema>;
343
+ } & {
344
+ wasmSchema: WasmSchema;
345
+ }>;
346
+ export type TypedApp<TSchema extends SchemaLike> = App<TSchema>;
347
+ export type RowOf<TTable> = TTable extends {
348
+ readonly _rowType: infer TRow;
349
+ } ? TRow : never;
350
+ export type InsertOf<TTable> = TTable extends {
351
+ readonly _initType: infer TInit;
352
+ } ? TInit : never;
353
+ export type TableMetaOf<TTable> = TTable extends Table<infer TTableName, infer TSchema> ? SchemaMeta<Extract<TTableName, string>, Extract<TSchema, SchemaLike>> : TTable extends Query<infer TTableName, any, any, infer TSchema> ? SchemaMeta<Extract<TTableName, string>, Extract<TSchema, SchemaLike>> : TTable extends RequiredQuery<infer TTableName, any, any, infer TSchema> ? SchemaMeta<Extract<TTableName, string>, Extract<TSchema, SchemaLike>> : TTable extends TypedTableQueryBuilder<infer TMeta, any, any, any> ? TMeta : never;
354
+ export type WhereOf<TQuery> = TQuery extends {
355
+ where(input: infer TWhere): unknown;
356
+ } ? TWhere : never;
357
+ export declare function unwrapTableDefinition<const TColumns extends TableDefinition>(definition: TColumns | DefinedTable<TColumns>): TColumns;
358
+ export declare function defineSchema<const TSchema extends SchemaDefinition>(definition: TSchema & ValidateSchemaRefs<TSchema>): Schema<TSchema>;
359
+ export declare function defineApp<const TSchema extends Schema<any>>(definition: TSchema): App<TSchema>;
360
+ export declare function defineApp<const TSchema extends SchemaDefinition>(definition: TSchema & ValidateSchemaRefs<TSchema>): App<Schema<TSchema>>;
361
+ export declare const permissionIntrospectionColumns: ("$canRead" | "$canEdit" | "$canDelete")[];
362
+ export declare const provenanceMagicColumns: ("$createdBy" | "$createdAt" | "$updatedBy" | "$updatedAt")[];
363
+ export {};
364
+ //# sourceMappingURL=typed-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-app.d.ts","sourceRoot":"","sources":["../src/typed-app.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,54 @@
1
- export const wasmSchema = {
2
- todos: {
3
- columns: [
4
- {
5
- name: "title",
6
- column_type: {
7
- type: "Text",
8
- },
9
- nullable: false,
10
- },
1
+ import { schemaToWasm } from "./codegen/schema-reader.js";
2
+ import { PERMISSION_INTROSPECTION_COLUMNS, PROVENANCE_MAGIC_COLUMNS, assertUserColumnNameAllowed, } from "./magic-columns.js";
3
+ // Wrap table columns so we can hang chained modifiers like .index(...) off tables
4
+ // without changing the column-level schema representation the runtime uses today.
5
+ export class DefinedTable {
6
+ columns;
7
+ indexes;
8
+ __jazzTableDefinition = true;
9
+ constructor(columns, indexes = []) {
10
+ this.columns = columns;
11
+ this.indexes = indexes;
12
+ }
13
+ index(name, columns) {
14
+ const normalizedName = name.trim();
15
+ if (!normalizedName) {
16
+ throw new Error("table.index(...) requires a non-empty index name.");
17
+ }
18
+ const normalizedColumns = [...columns];
19
+ for (const column of normalizedColumns) {
20
+ if (!(column in this.columns)) {
21
+ throw new Error(`table.index(...) references unknown column "${column}".`);
22
+ }
23
+ }
24
+ return new DefinedTable(this.columns, [
25
+ ...this.indexes,
11
26
  {
12
- name: "done",
13
- column_type: {
14
- type: "Boolean",
15
- },
16
- nullable: false,
27
+ name: normalizedName,
28
+ columns: normalizedColumns,
17
29
  },
18
- ],
19
- },
20
- };
21
- export class TodoQueryBuilder {
22
- _table = "todos";
23
- _schema = wasmSchema;
30
+ ]);
31
+ }
32
+ }
33
+ export function defineTable(columns) {
34
+ return new DefinedTable(columns);
35
+ }
36
+ export class TypedTableQueryBuilder {
37
+ _table;
38
+ _schema;
24
39
  _conditions = [];
25
40
  _includes = {};
41
+ _requireIncludes = false;
42
+ _selectColumns;
26
43
  _orderBys = [];
27
44
  _limitVal;
28
45
  _offsetVal;
29
46
  _hops = [];
30
47
  _gatherVal;
48
+ constructor(table, schema) {
49
+ this._table = table;
50
+ this._schema = schema;
51
+ }
31
52
  where(conditions) {
32
53
  const clone = this._clone();
33
54
  for (const [key, value] of Object.entries(conditions)) {
@@ -46,6 +67,21 @@ export class TodoQueryBuilder {
46
67
  }
47
68
  return clone;
48
69
  }
70
+ select(...columns) {
71
+ const clone = this._clone();
72
+ clone._selectColumns = [...columns];
73
+ return clone;
74
+ }
75
+ include(relations) {
76
+ const clone = this._clone();
77
+ clone._includes = { ...this._includes, ...relations };
78
+ return clone;
79
+ }
80
+ requireIncludes() {
81
+ const clone = this._clone();
82
+ clone._requireIncludes = true;
83
+ return clone;
84
+ }
49
85
  orderBy(column, direction = "asc") {
50
86
  const clone = this._clone();
51
87
  clone._orderBys.push([column, direction]);
@@ -61,6 +97,11 @@ export class TodoQueryBuilder {
61
97
  clone._offsetVal = n;
62
98
  return clone;
63
99
  }
100
+ hopTo(relation) {
101
+ const clone = this._clone();
102
+ clone._hops.push(relation);
103
+ return clone;
104
+ }
64
105
  gather(options) {
65
106
  if (options.start === undefined) {
66
107
  throw new Error("gather(...) requires start where conditions.");
@@ -103,9 +144,6 @@ export class TodoQueryBuilder {
103
144
  throw new Error("gather(...) step must include exactly one where condition bound to current.");
104
145
  }
105
146
  const currentCondition = currentConditions[0];
106
- if (currentCondition === undefined) {
107
- throw new Error("gather(...) step must include exactly one where condition bound to current.");
108
- }
109
147
  const stepConditions = stepBuilt.conditions.filter((condition) => !(condition.op === "eq" && condition.value === currentToken));
110
148
  const withStart = this.where(options.start);
111
149
  const clone = withStart._clone();
@@ -124,6 +162,8 @@ export class TodoQueryBuilder {
124
162
  table: this._table,
125
163
  conditions: this._conditions,
126
164
  includes: this._includes,
165
+ __jazz_requireIncludes: this._requireIncludes || undefined,
166
+ select: this._selectColumns,
127
167
  orderBy: this._orderBys,
128
168
  limit: this._limitVal,
129
169
  offset: this._offsetVal,
@@ -131,10 +171,15 @@ export class TodoQueryBuilder {
131
171
  gather: this._gatherVal,
132
172
  });
133
173
  }
174
+ toJSON() {
175
+ return JSON.parse(this._build());
176
+ }
134
177
  _clone() {
135
- const clone = new TodoQueryBuilder();
178
+ const clone = new TypedTableQueryBuilder(this._table, this._schema);
136
179
  clone._conditions = [...this._conditions];
137
180
  clone._includes = { ...this._includes };
181
+ clone._requireIncludes = this._requireIncludes;
182
+ clone._selectColumns = this._selectColumns ? [...this._selectColumns] : undefined;
138
183
  clone._orderBys = [...this._orderBys];
139
184
  clone._limitVal = this._limitVal;
140
185
  clone._offsetVal = this._offsetVal;
@@ -149,8 +194,51 @@ export class TodoQueryBuilder {
149
194
  return clone;
150
195
  }
151
196
  }
152
- export const app = {
153
- todos: new TodoQueryBuilder(),
154
- wasmSchema,
155
- };
156
- //# sourceMappingURL=app.js.map
197
+ export function unwrapTableDefinition(definition) {
198
+ if (definition instanceof DefinedTable) {
199
+ return definition.columns;
200
+ }
201
+ if (typeof definition === "object" && definition !== null) {
202
+ const maybeDefinedTable = definition;
203
+ if (maybeDefinedTable.__jazzTableDefinition === true && maybeDefinedTable.columns) {
204
+ return maybeDefinedTable.columns;
205
+ }
206
+ }
207
+ return definition;
208
+ }
209
+ function definitionToColumns(definition) {
210
+ const columnsDefinition = unwrapTableDefinition(definition);
211
+ const columns = [];
212
+ for (const [columnName, builder] of Object.entries(columnsDefinition)) {
213
+ assertUserColumnNameAllowed(columnName);
214
+ columns.push(builder._build(columnName));
215
+ }
216
+ return columns;
217
+ }
218
+ function definitionToSchema(definition) {
219
+ return {
220
+ tables: Object.entries(definition).map(([tableName, tableDefinition]) => ({
221
+ name: tableName,
222
+ columns: definitionToColumns(tableDefinition),
223
+ })),
224
+ };
225
+ }
226
+ export function defineSchema(definition) {
227
+ return definition;
228
+ }
229
+ export function defineApp(definition) {
230
+ const normalizedDefinition = definition;
231
+ const schema = definitionToSchema(normalizedDefinition);
232
+ const wasmSchema = schemaToWasm(schema);
233
+ const tables = {};
234
+ for (const tableName of Object.keys(normalizedDefinition)) {
235
+ tables[tableName] = new TypedTableQueryBuilder(tableName, wasmSchema);
236
+ }
237
+ return {
238
+ ...tables,
239
+ wasmSchema,
240
+ };
241
+ }
242
+ export const permissionIntrospectionColumns = [...PERMISSION_INTROSPECTION_COLUMNS];
243
+ export const provenanceMagicColumns = [...PROVENANCE_MAGIC_COLUMNS];
244
+ //# sourceMappingURL=typed-app.js.map