@remix-run/data-table 0.0.0 → 0.2.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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +549 -2
  3. package/dist/index.d.ts +15 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +7 -0
  6. package/dist/lib/adapter.d.ts +550 -0
  7. package/dist/lib/adapter.d.ts.map +1 -0
  8. package/dist/lib/adapter.js +1 -0
  9. package/dist/lib/column.d.ts +193 -0
  10. package/dist/lib/column.d.ts.map +1 -0
  11. package/dist/lib/column.js +302 -0
  12. package/dist/lib/database/execution-context.d.ts +10 -0
  13. package/dist/lib/database/execution-context.d.ts.map +1 -0
  14. package/dist/lib/database/execution-context.js +1 -0
  15. package/dist/lib/database/helpers.d.ts +26 -0
  16. package/dist/lib/database/helpers.d.ts.map +1 -0
  17. package/dist/lib/database/helpers.js +116 -0
  18. package/dist/lib/database/query-execution.d.ts +7 -0
  19. package/dist/lib/database/query-execution.d.ts.map +1 -0
  20. package/dist/lib/database/query-execution.js +401 -0
  21. package/dist/lib/database/relations.d.ts +4 -0
  22. package/dist/lib/database/relations.d.ts.map +1 -0
  23. package/dist/lib/database/relations.js +207 -0
  24. package/dist/lib/database/write-lifecycle.d.ts +13 -0
  25. package/dist/lib/database/write-lifecycle.d.ts.map +1 -0
  26. package/dist/lib/database/write-lifecycle.js +279 -0
  27. package/dist/lib/database.d.ts +264 -0
  28. package/dist/lib/database.d.ts.map +1 -0
  29. package/dist/lib/database.js +319 -0
  30. package/dist/lib/errors.d.ts +59 -0
  31. package/dist/lib/errors.d.ts.map +1 -0
  32. package/dist/lib/errors.js +76 -0
  33. package/dist/lib/inflection.d.ts +3 -0
  34. package/dist/lib/inflection.d.ts.map +1 -0
  35. package/dist/lib/inflection.js +56 -0
  36. package/dist/lib/migrations/filename.d.ts +12 -0
  37. package/dist/lib/migrations/filename.d.ts.map +1 -0
  38. package/dist/lib/migrations/filename.js +20 -0
  39. package/dist/lib/migrations/helpers.d.ts +11 -0
  40. package/dist/lib/migrations/helpers.d.ts.map +1 -0
  41. package/dist/lib/migrations/helpers.js +77 -0
  42. package/dist/lib/migrations/journal-store.d.ts +15 -0
  43. package/dist/lib/migrations/journal-store.d.ts.map +1 -0
  44. package/dist/lib/migrations/journal-store.js +83 -0
  45. package/dist/lib/migrations/registry.d.ts +27 -0
  46. package/dist/lib/migrations/registry.d.ts.map +1 -0
  47. package/dist/lib/migrations/registry.js +51 -0
  48. package/dist/lib/migrations/runner.d.ts +20 -0
  49. package/dist/lib/migrations/runner.d.ts.map +1 -0
  50. package/dist/lib/migrations/runner.js +273 -0
  51. package/dist/lib/migrations/schema-api.d.ts +7 -0
  52. package/dist/lib/migrations/schema-api.d.ts.map +1 -0
  53. package/dist/lib/migrations/schema-api.js +326 -0
  54. package/dist/lib/migrations-node.d.ts +17 -0
  55. package/dist/lib/migrations-node.d.ts.map +1 -0
  56. package/dist/lib/migrations-node.js +65 -0
  57. package/dist/lib/migrations.d.ts +292 -0
  58. package/dist/lib/migrations.d.ts.map +1 -0
  59. package/dist/lib/migrations.js +38 -0
  60. package/dist/lib/operators.d.ts +154 -0
  61. package/dist/lib/operators.d.ts.map +1 -0
  62. package/dist/lib/operators.js +218 -0
  63. package/dist/lib/query.d.ts +159 -0
  64. package/dist/lib/query.d.ts.map +1 -0
  65. package/dist/lib/query.js +401 -0
  66. package/dist/lib/references.d.ts +41 -0
  67. package/dist/lib/references.d.ts.map +1 -0
  68. package/dist/lib/references.js +33 -0
  69. package/dist/lib/sql-helpers.d.ts +50 -0
  70. package/dist/lib/sql-helpers.d.ts.map +1 -0
  71. package/dist/lib/sql-helpers.js +111 -0
  72. package/dist/lib/sql.d.ts +45 -0
  73. package/dist/lib/sql.d.ts.map +1 -0
  74. package/dist/lib/sql.js +65 -0
  75. package/dist/lib/table.d.ts +569 -0
  76. package/dist/lib/table.d.ts.map +1 -0
  77. package/dist/lib/table.js +519 -0
  78. package/dist/lib/types.d.ts +4 -0
  79. package/dist/lib/types.d.ts.map +1 -0
  80. package/dist/lib/types.js +1 -0
  81. package/dist/migrations/node.d.ts +2 -0
  82. package/dist/migrations/node.d.ts.map +1 -0
  83. package/dist/migrations/node.js +1 -0
  84. package/dist/migrations.d.ts +8 -0
  85. package/dist/migrations.d.ts.map +1 -0
  86. package/dist/migrations.js +5 -0
  87. package/dist/operators.d.ts +3 -0
  88. package/dist/operators.d.ts.map +1 -0
  89. package/dist/operators.js +1 -0
  90. package/dist/sql-helpers.d.ts +3 -0
  91. package/dist/sql-helpers.d.ts.map +1 -0
  92. package/dist/sql-helpers.js +1 -0
  93. package/package.json +56 -7
  94. package/src/index.ts +198 -0
  95. package/src/lib/adapter.ts +653 -0
  96. package/src/lib/column.ts +384 -0
  97. package/src/lib/database/execution-context.ts +15 -0
  98. package/src/lib/database/helpers.ts +216 -0
  99. package/src/lib/database/query-execution.ts +638 -0
  100. package/src/lib/database/relations.ts +332 -0
  101. package/src/lib/database/write-lifecycle.ts +487 -0
  102. package/src/lib/database.ts +856 -0
  103. package/src/lib/errors.ts +119 -0
  104. package/src/lib/inflection.ts +69 -0
  105. package/src/lib/migrations/filename.ts +25 -0
  106. package/src/lib/migrations/helpers.ts +108 -0
  107. package/src/lib/migrations/journal-store.ts +122 -0
  108. package/src/lib/migrations/registry.ts +62 -0
  109. package/src/lib/migrations/runner.ts +374 -0
  110. package/src/lib/migrations/schema-api.ts +417 -0
  111. package/src/lib/migrations-node.ts +71 -0
  112. package/src/lib/migrations.ts +328 -0
  113. package/src/lib/operators.ts +436 -0
  114. package/src/lib/query.ts +958 -0
  115. package/src/lib/references.ts +78 -0
  116. package/src/lib/sql-helpers.ts +146 -0
  117. package/src/lib/sql.ts +84 -0
  118. package/src/lib/table.ts +1309 -0
  119. package/src/lib/types.ts +3 -0
  120. package/src/migrations/node.ts +1 -0
  121. package/src/migrations.ts +26 -0
  122. package/src/operators.ts +18 -0
  123. package/src/sql-helpers.ts +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Creates a migration descriptor with normalized defaults.
3
+ * @param input Migration handlers and transaction mode.
4
+ * @returns A normalized migration object.
5
+ * @example
6
+ * ```ts
7
+ * import { createMigration, column as c } from 'remix/data-table/migrations'
8
+ * import { table } from 'remix/data-table'
9
+ *
10
+ * let users = table({
11
+ * name: 'users',
12
+ * columns: {
13
+ * id: c.integer().primaryKey().autoIncrement(),
14
+ * email: c.varchar(255).notNull().unique(),
15
+ * },
16
+ * })
17
+ *
18
+ * export default createMigration({
19
+ * async up({ db, schema }) {
20
+ * await schema.createTable(users)
21
+ *
22
+ * if (db.adapter.dialect === 'sqlite') {
23
+ * await db.exec('pragma foreign_keys = on')
24
+ * }
25
+ * },
26
+ * async down({ schema }) {
27
+ * await schema.dropTable('users', { ifExists: true })
28
+ * },
29
+ * })
30
+ * ```
31
+ */
32
+ export function createMigration(input) {
33
+ return {
34
+ up: input.up,
35
+ down: input.down,
36
+ transaction: input.transaction ?? 'auto',
37
+ };
38
+ }
@@ -0,0 +1,154 @@
1
+ import type { ColumnInput, ColumnReferenceLike, NormalizeColumnInput } from './references.ts';
2
+ /**
3
+ * Comparison operators supported by `comparison` predicates.
4
+ */
5
+ export type ComparisonOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'like' | 'ilike';
6
+ type QualifiedColumnReference = `${string}.${string}`;
7
+ type PredicateColumn<input extends string | ColumnReferenceLike> = NormalizeColumnInput<input> & string;
8
+ /**
9
+ * Normalized predicate representation consumed by adapters.
10
+ */
11
+ export type Predicate<column extends string = string> = {
12
+ type: 'comparison';
13
+ operator: ComparisonOperator;
14
+ column: column;
15
+ value: unknown;
16
+ valueType: 'value';
17
+ } | {
18
+ type: 'comparison';
19
+ operator: Exclude<ComparisonOperator, 'in' | 'notIn'>;
20
+ column: column;
21
+ value: column;
22
+ valueType: 'column';
23
+ } | {
24
+ type: 'between';
25
+ column: column;
26
+ lower: unknown;
27
+ upper: unknown;
28
+ } | {
29
+ type: 'null';
30
+ operator: 'isNull' | 'notNull';
31
+ column: column;
32
+ } | {
33
+ type: 'logical';
34
+ operator: 'and' | 'or';
35
+ predicates: Predicate<column>[];
36
+ };
37
+ /**
38
+ * Object shorthand accepted in `where` clauses.
39
+ */
40
+ export type WhereObject<column extends string = string> = Partial<Record<column, unknown>>;
41
+ /**
42
+ * User-facing where input accepted by `query.where()` and relation modifiers.
43
+ */
44
+ export type WhereInput<column extends string = string> = Predicate<column> | WhereObject<column>;
45
+ /**
46
+ * Builds an equality predicate.
47
+ */
48
+ export declare function eq<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
49
+ export declare function eq<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
50
+ /**
51
+ * Builds an inequality predicate.
52
+ */
53
+ export declare function ne<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
54
+ export declare function ne<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
55
+ /**
56
+ * Builds a greater-than predicate.
57
+ */
58
+ export declare function gt<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
59
+ export declare function gt<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
60
+ /**
61
+ * Builds a greater-than-or-equal predicate.
62
+ */
63
+ export declare function gte<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
64
+ export declare function gte<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
65
+ /**
66
+ * Builds a less-than predicate.
67
+ */
68
+ export declare function lt<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
69
+ export declare function lt<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
70
+ /**
71
+ * Builds a less-than-or-equal predicate.
72
+ */
73
+ export declare function lte<left extends ColumnInput<QualifiedColumnReference>, right extends ColumnInput<QualifiedColumnReference>>(column: left, value: right & (right extends `${string}@${string}` ? never : right)): Predicate<PredicateColumn<left> | PredicateColumn<right>>;
74
+ export declare function lte<column extends string | ColumnReferenceLike>(column: column, value: unknown): Predicate<PredicateColumn<column>>;
75
+ /**
76
+ * Builds an `IN` predicate.
77
+ * @param column Column to compare.
78
+ * @param values Candidate values.
79
+ * @returns An `in` comparison predicate.
80
+ */
81
+ export declare function inList<column extends string | ColumnReferenceLike>(column: column, values: readonly unknown[]): Predicate<PredicateColumn<column>>;
82
+ /**
83
+ * Builds a `NOT IN` predicate.
84
+ * @param column Column to compare.
85
+ * @param values Candidate values.
86
+ * @returns A `notIn` comparison predicate.
87
+ */
88
+ export declare function notInList<column extends string | ColumnReferenceLike>(column: column, values: readonly unknown[]): Predicate<PredicateColumn<column>>;
89
+ /**
90
+ * Builds a case-sensitive SQL `LIKE` predicate.
91
+ * @param column Column to compare.
92
+ * @param value Match pattern.
93
+ * @returns A `like` comparison predicate.
94
+ */
95
+ export declare function like<column extends string | ColumnReferenceLike>(column: column, value: string): Predicate<PredicateColumn<column>>;
96
+ /**
97
+ * Builds a case-insensitive SQL `LIKE` predicate.
98
+ * @param column Column to compare.
99
+ * @param value Match pattern.
100
+ * @returns An `ilike` comparison predicate.
101
+ */
102
+ export declare function ilike<column extends string | ColumnReferenceLike>(column: column, value: string): Predicate<PredicateColumn<column>>;
103
+ /**
104
+ * Builds a `BETWEEN` predicate.
105
+ * @param column Column to compare.
106
+ * @param lower Lower bound value.
107
+ * @param upper Upper bound value.
108
+ * @returns A `between` predicate.
109
+ */
110
+ export declare function between<column extends string | ColumnReferenceLike>(column: column, lower: unknown, upper: unknown): Predicate<PredicateColumn<column>>;
111
+ /**
112
+ * Builds an `IS NULL` predicate.
113
+ * @param column Column to compare.
114
+ * @returns An `isNull` predicate.
115
+ */
116
+ export declare function isNull<column extends string | ColumnReferenceLike>(column: column): Predicate<PredicateColumn<column>>;
117
+ /**
118
+ * Builds an `IS NOT NULL` predicate.
119
+ * @param column Column to compare.
120
+ * @returns A `notNull` predicate.
121
+ */
122
+ export declare function notNull<column extends string | ColumnReferenceLike>(column: column): Predicate<PredicateColumn<column>>;
123
+ /**
124
+ * Combines predicates with logical `AND`.
125
+ * @param predicates Child predicates.
126
+ * @returns A logical `and` predicate.
127
+ */
128
+ export declare function and<column extends string>(...predicates: Predicate<column>[]): Predicate<column>;
129
+ /**
130
+ * Combines predicates with logical `OR`.
131
+ * @param predicates Child predicates.
132
+ * @returns A logical `or` predicate.
133
+ */
134
+ export declare function or<column extends string>(...predicates: Predicate<column>[]): Predicate<column>;
135
+ /**
136
+ * Returns `true` when a value is a normalized predicate object.
137
+ * @param value Value to inspect.
138
+ * @returns Whether the value is a predicate.
139
+ */
140
+ export declare function isPredicate<column extends string = string>(value: unknown): value is Predicate<column>;
141
+ /**
142
+ * Normalizes object shorthand into a predicate tree.
143
+ * @param input Predicate object or shorthand where map.
144
+ * @returns A normalized predicate.
145
+ */
146
+ export declare function normalizeWhereInput<column extends string>(input: WhereInput<column>): Predicate<column>;
147
+ /**
148
+ * Collects referenced columns from a predicate tree.
149
+ * @param predicate Predicate to inspect.
150
+ * @returns Referenced column names.
151
+ */
152
+ export declare function getPredicateColumns(predicate: Predicate): string[];
153
+ export {};
154
+ //# sourceMappingURL=operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../src/lib/operators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE7F;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,OAAO,GACP,MAAM,GACN,OAAO,CAAA;AAEX,KAAK,wBAAwB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAErD,KAAK,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,mBAAmB,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAC5F,MAAM,CAAA;AAER;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAChD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;CACnB,GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE,IAAI,GAAG,OAAO,CAAC,CAAA;IACrD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,QAAQ,CAAA;CACpB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;CACf,GACD;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;CAChC,CAAA;AAEL;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE1F;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAEhG;;GAEG;AACH,wBAAgB,EAAE,CAChB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,EAAE,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC5D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;GAEG;AACH,wBAAgB,EAAE,CAChB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,EAAE,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC5D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;GAEG;AACH,wBAAgB,EAAE,CAChB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,EAAE,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC5D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;GAEG;AACH,wBAAgB,GAAG,CACjB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,GAAG,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC7D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;GAEG;AACH,wBAAgB,EAAE,CAChB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,EAAE,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC5D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;GAEG;AACH,wBAAgB,GAAG,CACjB,IAAI,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAClD,KAAK,SAAS,WAAW,CAAC,wBAAwB,CAAC,EAEnD,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,GACnE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,wBAAgB,GAAG,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC7D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAKrC;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAChE,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,OAAO,EAAE,GACzB,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAQpC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EACnE,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,OAAO,EAAE,GACzB,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAQpC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC9D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAQpC;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAC/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAQpC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EACjE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAOpC;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EAChE,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,mBAAmB,EACjE,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,MAAM,SAAS,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAGhG;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,MAAM,SAAS,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAG/F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACxD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAgB5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,EACvD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GACxB,SAAS,CAAC,MAAM,CAAC,CASnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAwBlE"}
@@ -0,0 +1,218 @@
1
+ import { isColumnReference, normalizeColumnInput } from "./references.js";
2
+ export function eq(column, value) {
3
+ return createComparisonPredicate('eq', column, value);
4
+ }
5
+ export function ne(column, value) {
6
+ return createComparisonPredicate('ne', column, value);
7
+ }
8
+ export function gt(column, value) {
9
+ return createComparisonPredicate('gt', column, value);
10
+ }
11
+ export function gte(column, value) {
12
+ return createComparisonPredicate('gte', column, value);
13
+ }
14
+ export function lt(column, value) {
15
+ return createComparisonPredicate('lt', column, value);
16
+ }
17
+ export function lte(column, value) {
18
+ return createComparisonPredicate('lte', column, value);
19
+ }
20
+ /**
21
+ * Builds an `IN` predicate.
22
+ * @param column Column to compare.
23
+ * @param values Candidate values.
24
+ * @returns An `in` comparison predicate.
25
+ */
26
+ export function inList(column, values) {
27
+ return {
28
+ type: 'comparison',
29
+ operator: 'in',
30
+ column: resolvePredicateColumn(column),
31
+ value: [...values],
32
+ valueType: 'value',
33
+ };
34
+ }
35
+ /**
36
+ * Builds a `NOT IN` predicate.
37
+ * @param column Column to compare.
38
+ * @param values Candidate values.
39
+ * @returns A `notIn` comparison predicate.
40
+ */
41
+ export function notInList(column, values) {
42
+ return {
43
+ type: 'comparison',
44
+ operator: 'notIn',
45
+ column: resolvePredicateColumn(column),
46
+ value: [...values],
47
+ valueType: 'value',
48
+ };
49
+ }
50
+ /**
51
+ * Builds a case-sensitive SQL `LIKE` predicate.
52
+ * @param column Column to compare.
53
+ * @param value Match pattern.
54
+ * @returns A `like` comparison predicate.
55
+ */
56
+ export function like(column, value) {
57
+ return {
58
+ type: 'comparison',
59
+ operator: 'like',
60
+ column: resolvePredicateColumn(column),
61
+ value,
62
+ valueType: 'value',
63
+ };
64
+ }
65
+ /**
66
+ * Builds a case-insensitive SQL `LIKE` predicate.
67
+ * @param column Column to compare.
68
+ * @param value Match pattern.
69
+ * @returns An `ilike` comparison predicate.
70
+ */
71
+ export function ilike(column, value) {
72
+ return {
73
+ type: 'comparison',
74
+ operator: 'ilike',
75
+ column: resolvePredicateColumn(column),
76
+ value,
77
+ valueType: 'value',
78
+ };
79
+ }
80
+ /**
81
+ * Builds a `BETWEEN` predicate.
82
+ * @param column Column to compare.
83
+ * @param lower Lower bound value.
84
+ * @param upper Upper bound value.
85
+ * @returns A `between` predicate.
86
+ */
87
+ export function between(column, lower, upper) {
88
+ return {
89
+ type: 'between',
90
+ column: resolvePredicateColumn(column),
91
+ lower,
92
+ upper,
93
+ };
94
+ }
95
+ /**
96
+ * Builds an `IS NULL` predicate.
97
+ * @param column Column to compare.
98
+ * @returns An `isNull` predicate.
99
+ */
100
+ export function isNull(column) {
101
+ return { type: 'null', operator: 'isNull', column: resolvePredicateColumn(column) };
102
+ }
103
+ /**
104
+ * Builds an `IS NOT NULL` predicate.
105
+ * @param column Column to compare.
106
+ * @returns A `notNull` predicate.
107
+ */
108
+ export function notNull(column) {
109
+ return { type: 'null', operator: 'notNull', column: resolvePredicateColumn(column) };
110
+ }
111
+ /**
112
+ * Combines predicates with logical `AND`.
113
+ * @param predicates Child predicates.
114
+ * @returns A logical `and` predicate.
115
+ */
116
+ export function and(...predicates) {
117
+ let filtered = predicates.filter(Boolean);
118
+ return { type: 'logical', operator: 'and', predicates: filtered };
119
+ }
120
+ /**
121
+ * Combines predicates with logical `OR`.
122
+ * @param predicates Child predicates.
123
+ * @returns A logical `or` predicate.
124
+ */
125
+ export function or(...predicates) {
126
+ let filtered = predicates.filter(Boolean);
127
+ return { type: 'logical', operator: 'or', predicates: filtered };
128
+ }
129
+ /**
130
+ * Returns `true` when a value is a normalized predicate object.
131
+ * @param value Value to inspect.
132
+ * @returns Whether the value is a predicate.
133
+ */
134
+ export function isPredicate(value) {
135
+ if (typeof value !== 'object' || value === null) {
136
+ return false;
137
+ }
138
+ if (!('type' in value)) {
139
+ return false;
140
+ }
141
+ let input = value;
142
+ return (input.type === 'comparison' ||
143
+ input.type === 'between' ||
144
+ input.type === 'null' ||
145
+ input.type === 'logical');
146
+ }
147
+ /**
148
+ * Normalizes object shorthand into a predicate tree.
149
+ * @param input Predicate object or shorthand where map.
150
+ * @returns A normalized predicate.
151
+ */
152
+ export function normalizeWhereInput(input) {
153
+ if (isPredicate(input)) {
154
+ return input;
155
+ }
156
+ let keys = Object.keys(input);
157
+ let predicates = keys.map((column) => eq(column, input[column]));
158
+ return and(...predicates);
159
+ }
160
+ /**
161
+ * Collects referenced columns from a predicate tree.
162
+ * @param predicate Predicate to inspect.
163
+ * @returns Referenced column names.
164
+ */
165
+ export function getPredicateColumns(predicate) {
166
+ if (predicate.type === 'comparison') {
167
+ if (predicate.valueType === 'column') {
168
+ return [predicate.column, predicate.value];
169
+ }
170
+ return [predicate.column];
171
+ }
172
+ if (predicate.type === 'between') {
173
+ return [predicate.column];
174
+ }
175
+ if (predicate.type === 'null') {
176
+ return [predicate.column];
177
+ }
178
+ let columns = [];
179
+ for (let child of predicate.predicates) {
180
+ columns.push(...getPredicateColumns(child));
181
+ }
182
+ return columns;
183
+ }
184
+ function isQualifiedColumnReference(value) {
185
+ if (typeof value !== 'string') {
186
+ return false;
187
+ }
188
+ return /^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)+$/.test(value);
189
+ }
190
+ function resolvePredicateColumn(column) {
191
+ return normalizeColumnInput(column);
192
+ }
193
+ function resolveComparisonValue(value) {
194
+ if (isColumnReference(value)) {
195
+ return normalizeColumnInput(value);
196
+ }
197
+ return value;
198
+ }
199
+ function createComparisonPredicate(operator, column, value) {
200
+ let normalizedColumn = resolvePredicateColumn(column);
201
+ let normalizedValue = resolveComparisonValue(value);
202
+ if (isQualifiedColumnReference(normalizedColumn) && isQualifiedColumnReference(normalizedValue)) {
203
+ return {
204
+ type: 'comparison',
205
+ operator,
206
+ column: normalizedColumn,
207
+ value: normalizedValue,
208
+ valueType: 'column',
209
+ };
210
+ }
211
+ return {
212
+ type: 'comparison',
213
+ operator,
214
+ column: normalizedColumn,
215
+ value: normalizedValue,
216
+ valueType: 'value',
217
+ };
218
+ }
@@ -0,0 +1,159 @@
1
+ import type { JoinClause, JoinType, SelectColumn } from './adapter.ts';
2
+ import type { MergeColumnTypeMaps, PrimaryKeyInputForRow, QueryColumnInput, QueryColumnName, QueryColumnTypeMap, QueryColumnTypeMapFromRow, QueryColumns, QueryTableInput, RelationMapForSourceName, ReturningInput, SelectedAliasRow, WriteResult, WriteRowResult, WriteRowsResult } from './database.ts';
3
+ import type { Predicate, WhereInput } from './operators.ts';
4
+ import type { AnyRelation, AnyTable, LoadedRelationMap, OrderByClause } from './table.ts';
5
+ type QueryBindingState = 'bound' | 'unbound';
6
+ type InsertQueryOptions<row extends Record<string, unknown>> = {
7
+ returning?: ReturningInput<row>;
8
+ touch?: boolean;
9
+ };
10
+ type DeleteQueryOptions<row extends Record<string, unknown>> = {
11
+ returning?: ReturningInput<row>;
12
+ };
13
+ type UpsertQueryOptions<row extends Record<string, unknown>> = {
14
+ returning?: ReturningInput<row>;
15
+ touch?: boolean;
16
+ conflictTarget?: (keyof row & string)[];
17
+ update?: Partial<row>;
18
+ };
19
+ export type QueryState = {
20
+ select: '*' | SelectColumn[];
21
+ distinct: boolean;
22
+ joins: JoinClause[];
23
+ where: Predicate<string>[];
24
+ groupBy: string[];
25
+ having: Predicate<string>[];
26
+ orderBy: OrderByClause[];
27
+ limit?: number;
28
+ offset?: number;
29
+ with: Record<string, AnyRelation>;
30
+ };
31
+ type QueryPlanMap<row extends Record<string, unknown>, primaryKey extends readonly string[]> = {
32
+ all: {
33
+ kind: 'all';
34
+ };
35
+ first: {
36
+ kind: 'first';
37
+ };
38
+ find: {
39
+ kind: 'find';
40
+ value: PrimaryKeyInputForRow<row, primaryKey>;
41
+ };
42
+ count: {
43
+ kind: 'count';
44
+ };
45
+ exists: {
46
+ kind: 'exists';
47
+ };
48
+ insert: {
49
+ kind: 'insert';
50
+ values: Partial<row>;
51
+ options?: InsertQueryOptions<row>;
52
+ };
53
+ insertMany: {
54
+ kind: 'insertMany';
55
+ values: Partial<row>[];
56
+ options?: InsertQueryOptions<row>;
57
+ };
58
+ update: {
59
+ kind: 'update';
60
+ changes: Partial<row>;
61
+ options?: InsertQueryOptions<row>;
62
+ };
63
+ delete: {
64
+ kind: 'delete';
65
+ options?: DeleteQueryOptions<row>;
66
+ };
67
+ upsert: {
68
+ kind: 'upsert';
69
+ values: Partial<row>;
70
+ options?: UpsertQueryOptions<row>;
71
+ };
72
+ };
73
+ type QueryExecutionMode = keyof QueryPlanMap<Record<string, unknown>, readonly string[]>;
74
+ type QueryPhase<binding extends QueryBindingState = QueryBindingState, mode extends QueryExecutionMode = QueryExecutionMode> = {
75
+ binding: binding;
76
+ mode: mode;
77
+ };
78
+ export type BoundQueryPhase<mode extends QueryExecutionMode = QueryExecutionMode> = QueryPhase<'bound', mode>;
79
+ export type UnboundQueryPhase<mode extends QueryExecutionMode = QueryExecutionMode> = QueryPhase<'unbound', mode>;
80
+ type AnyQuerySource = QueryTableInput<string, Record<string, unknown>, readonly string[]>;
81
+ type QuerySourceTableName<source extends AnyQuerySource> = source extends QueryTableInput<infer tableName, any, any> ? tableName : never;
82
+ type QuerySourceRow<source extends AnyQuerySource> = source extends QueryTableInput<any, infer row, any> ? row : never;
83
+ type QuerySourcePrimaryKey<source extends AnyQuerySource> = source extends QueryTableInput<any, any, infer primaryKey> ? primaryKey : never;
84
+ type QuerySourceColumnTypes<source extends AnyQuerySource> = QueryColumnTypeMapFromRow<QuerySourceTableName<source>, QuerySourceRow<source>>;
85
+ type QueryPlan<row extends Record<string, unknown>, primaryKey extends readonly string[], mode extends QueryExecutionMode = QueryExecutionMode> = QueryPlanMap<row, primaryKey>[mode];
86
+ type QueryResultMap<row extends Record<string, unknown>, loaded extends Record<string, unknown>> = {
87
+ all: Array<row & loaded>;
88
+ first: (row & loaded) | null;
89
+ find: (row & loaded) | null;
90
+ count: number;
91
+ exists: boolean;
92
+ insert: WriteResult | WriteRowResult<row>;
93
+ insertMany: WriteResult | WriteRowsResult<row>;
94
+ update: WriteResult | WriteRowsResult<row>;
95
+ delete: WriteResult | WriteRowsResult<row>;
96
+ upsert: WriteResult | WriteRowResult<row>;
97
+ };
98
+ export type AnyQuery = Query<any, any, any, any, any>;
99
+ type QuerySource<input extends AnyQuery> = input extends Query<infer source, any, any, any, any> ? source : never;
100
+ type QueryColumnTypes<input extends AnyQuery> = input extends Query<any, infer columnTypes, any, any, any> ? columnTypes : never;
101
+ type QueryRow<input extends AnyQuery> = input extends Query<any, any, infer row, any, any> ? row : never;
102
+ type QueryLoaded<input extends AnyQuery> = input extends Query<any, any, any, infer loaded, any> ? loaded : never;
103
+ type QueryPhaseOf<input extends AnyQuery> = input extends Query<any, any, any, any, infer phase> ? phase : never;
104
+ type QueryBinding<input extends AnyQuery> = QueryPhaseOf<input>['binding'];
105
+ type QueryMode<input extends AnyQuery> = QueryPhaseOf<input>['mode'];
106
+ type QueryPhaseBinding<phase extends QueryPhase> = phase['binding'];
107
+ type QueryPhaseMode<phase extends QueryPhase> = phase['mode'];
108
+ type QueryAllPhase<phase extends QueryPhase> = QueryPhase<QueryPhaseBinding<phase>, 'all'>;
109
+ type QueryWith<input extends AnyQuery, phase extends QueryPhase> = Query<QuerySource<input>, QueryColumnTypes<input>, QueryRow<input>, QueryLoaded<input>, phase>;
110
+ type QueryTerminalResult<input extends AnyQuery, mode extends QueryExecutionMode, result> = QueryBinding<input> extends 'bound' ? Promise<result> : QueryWith<input, UnboundQueryPhase<mode>>;
111
+ export type QueryExecutionResult<input> = input extends AnyQuery ? QueryResultMap<QueryRow<input>, QueryLoaded<input>>[Extract<QueryMode<input>, QueryExecutionMode>] : never;
112
+ type QueryRuntime = {
113
+ exec<input extends AnyQuery>(input: input): Promise<QueryExecutionResult<input>>;
114
+ };
115
+ type QuerySnapshot<source extends AnyQuerySource = AnyQuerySource, row extends Record<string, unknown> = Record<string, unknown>, mode extends QueryExecutionMode = QueryExecutionMode> = {
116
+ table: source;
117
+ state: QueryState;
118
+ plan: QueryPlan<row, QuerySourcePrimaryKey<source>, mode>;
119
+ };
120
+ export declare const bindQueryRuntime: unique symbol;
121
+ export declare const querySnapshot: unique symbol;
122
+ declare const queryTypeBrand: unique symbol;
123
+ export declare class Query<source extends AnyQuerySource, columnTypes extends Record<string, unknown> = QuerySourceColumnTypes<source>, row extends Record<string, unknown> = QuerySourceRow<source>, loaded extends Record<string, unknown> = {}, phase extends QueryPhase = UnboundQueryPhase<'all'>> {
124
+ #private;
125
+ readonly [queryTypeBrand]: {
126
+ binding: QueryPhaseBinding<phase>;
127
+ mode: QueryPhaseMode<phase>;
128
+ };
129
+ constructor(table: source);
130
+ select<selection extends (keyof row & string)[]>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, ...columns: selection): Query<source, columnTypes, Pick<row, selection[number]>, loaded, QueryAllPhase<phase>>;
131
+ select<selection extends Record<string, QueryColumnInput<columnTypes>>>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, selection: selection): Query<source, columnTypes, SelectedAliasRow<columnTypes, selection>, loaded, QueryAllPhase<phase>>;
132
+ distinct(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, value?: boolean): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
133
+ where(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, input: WhereInput<QueryColumns<columnTypes>>): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
134
+ having(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, input: WhereInput<QueryColumns<columnTypes>>): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
135
+ join<target extends AnyTable>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, target: target, on: Predicate<QueryColumns<columnTypes> | QueryColumnName<target>>, type?: JoinType): Query<source, MergeColumnTypeMaps<columnTypes, QueryColumnTypeMap<target>>, row, loaded, QueryAllPhase<phase>>;
136
+ leftJoin<target extends AnyTable>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, target: target, on: Predicate<QueryColumns<columnTypes> | QueryColumnName<target>>): Query<source, MergeColumnTypeMaps<columnTypes, QueryColumnTypeMap<target>>, row, loaded, QueryAllPhase<phase>>;
137
+ rightJoin<target extends AnyTable>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, target: target, on: Predicate<QueryColumns<columnTypes> | QueryColumnName<target>>): Query<source, MergeColumnTypeMaps<columnTypes, QueryColumnTypeMap<target>>, row, loaded, QueryAllPhase<phase>>;
138
+ orderBy(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, column: QueryColumnInput<columnTypes>, direction?: 'asc' | 'desc'): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
139
+ groupBy(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, ...columns: QueryColumnInput<columnTypes>[]): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
140
+ limit(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, value: number): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
141
+ offset(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, value: number): Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>;
142
+ with<relations extends RelationMapForSourceName<QuerySourceTableName<source>>>(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, relations: relations): Query<source, columnTypes, row, loaded & LoadedRelationMap<relations>, QueryAllPhase<phase>>;
143
+ all(this: Query<source, columnTypes, row, loaded, BoundQueryPhase<'all'>>): Promise<Array<row & loaded>>;
144
+ first(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'first', (row & loaded) | null>;
145
+ find(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, value: PrimaryKeyInputForRow<row, QuerySourcePrimaryKey<source>>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'find', (row & loaded) | null>;
146
+ count(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'count', number>;
147
+ exists(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'exists', boolean>;
148
+ insert(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, values: Partial<row>, options?: InsertQueryOptions<row>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'insert', WriteResult | WriteRowResult<row>>;
149
+ insertMany(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, values: Partial<row>[], options?: InsertQueryOptions<row>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'insertMany', WriteResult | WriteRowsResult<row>>;
150
+ update(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, changes: Partial<row>, options?: InsertQueryOptions<row>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'update', WriteResult | WriteRowsResult<row>>;
151
+ delete(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, options?: DeleteQueryOptions<row>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'delete', WriteResult | WriteRowsResult<row>>;
152
+ upsert(this: Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, values: Partial<row>, options?: UpsertQueryOptions<row>): QueryTerminalResult<Query<source, columnTypes, row, loaded, QueryAllPhase<phase>>, 'upsert', WriteResult | WriteRowResult<row>>;
153
+ [querySnapshot](): QuerySnapshot<source, row, QueryPhaseMode<phase>>;
154
+ [bindQueryRuntime](runtime: QueryRuntime): Query<source, columnTypes, row, loaded, BoundQueryPhase<QueryPhaseMode<phase>>>;
155
+ }
156
+ export declare function query<tableName extends string, row extends Record<string, unknown>, primaryKey extends readonly (keyof row & string)[]>(table: QueryTableInput<tableName, row, primaryKey>): Query<QueryTableInput<tableName, row, primaryKey>, QueryColumnTypeMapFromRow<tableName, row>, row, {}, UnboundQueryPhase<'all'>>;
157
+ export declare function cloneQueryState(state: QueryState): QueryState;
158
+ export {};
159
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/lib/query.ts"],"names":[],"mappings":"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"}