@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.
- package/LICENSE +21 -0
- package/README.md +549 -2
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/lib/adapter.d.ts +550 -0
- package/dist/lib/adapter.d.ts.map +1 -0
- package/dist/lib/adapter.js +1 -0
- package/dist/lib/column.d.ts +193 -0
- package/dist/lib/column.d.ts.map +1 -0
- package/dist/lib/column.js +302 -0
- package/dist/lib/database/execution-context.d.ts +10 -0
- package/dist/lib/database/execution-context.d.ts.map +1 -0
- package/dist/lib/database/execution-context.js +1 -0
- package/dist/lib/database/helpers.d.ts +26 -0
- package/dist/lib/database/helpers.d.ts.map +1 -0
- package/dist/lib/database/helpers.js +116 -0
- package/dist/lib/database/query-execution.d.ts +7 -0
- package/dist/lib/database/query-execution.d.ts.map +1 -0
- package/dist/lib/database/query-execution.js +401 -0
- package/dist/lib/database/relations.d.ts +4 -0
- package/dist/lib/database/relations.d.ts.map +1 -0
- package/dist/lib/database/relations.js +207 -0
- package/dist/lib/database/write-lifecycle.d.ts +13 -0
- package/dist/lib/database/write-lifecycle.d.ts.map +1 -0
- package/dist/lib/database/write-lifecycle.js +279 -0
- package/dist/lib/database.d.ts +264 -0
- package/dist/lib/database.d.ts.map +1 -0
- package/dist/lib/database.js +319 -0
- package/dist/lib/errors.d.ts +59 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +76 -0
- package/dist/lib/inflection.d.ts +3 -0
- package/dist/lib/inflection.d.ts.map +1 -0
- package/dist/lib/inflection.js +56 -0
- package/dist/lib/migrations/filename.d.ts +12 -0
- package/dist/lib/migrations/filename.d.ts.map +1 -0
- package/dist/lib/migrations/filename.js +20 -0
- package/dist/lib/migrations/helpers.d.ts +11 -0
- package/dist/lib/migrations/helpers.d.ts.map +1 -0
- package/dist/lib/migrations/helpers.js +77 -0
- package/dist/lib/migrations/journal-store.d.ts +15 -0
- package/dist/lib/migrations/journal-store.d.ts.map +1 -0
- package/dist/lib/migrations/journal-store.js +83 -0
- package/dist/lib/migrations/registry.d.ts +27 -0
- package/dist/lib/migrations/registry.d.ts.map +1 -0
- package/dist/lib/migrations/registry.js +51 -0
- package/dist/lib/migrations/runner.d.ts +20 -0
- package/dist/lib/migrations/runner.d.ts.map +1 -0
- package/dist/lib/migrations/runner.js +273 -0
- package/dist/lib/migrations/schema-api.d.ts +7 -0
- package/dist/lib/migrations/schema-api.d.ts.map +1 -0
- package/dist/lib/migrations/schema-api.js +326 -0
- package/dist/lib/migrations-node.d.ts +17 -0
- package/dist/lib/migrations-node.d.ts.map +1 -0
- package/dist/lib/migrations-node.js +65 -0
- package/dist/lib/migrations.d.ts +292 -0
- package/dist/lib/migrations.d.ts.map +1 -0
- package/dist/lib/migrations.js +38 -0
- package/dist/lib/operators.d.ts +154 -0
- package/dist/lib/operators.d.ts.map +1 -0
- package/dist/lib/operators.js +218 -0
- package/dist/lib/query.d.ts +159 -0
- package/dist/lib/query.d.ts.map +1 -0
- package/dist/lib/query.js +401 -0
- package/dist/lib/references.d.ts +41 -0
- package/dist/lib/references.d.ts.map +1 -0
- package/dist/lib/references.js +33 -0
- package/dist/lib/sql-helpers.d.ts +50 -0
- package/dist/lib/sql-helpers.d.ts.map +1 -0
- package/dist/lib/sql-helpers.js +111 -0
- package/dist/lib/sql.d.ts +45 -0
- package/dist/lib/sql.d.ts.map +1 -0
- package/dist/lib/sql.js +65 -0
- package/dist/lib/table.d.ts +569 -0
- package/dist/lib/table.d.ts.map +1 -0
- package/dist/lib/table.js +519 -0
- package/dist/lib/types.d.ts +4 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/migrations/node.d.ts +2 -0
- package/dist/migrations/node.d.ts.map +1 -0
- package/dist/migrations/node.js +1 -0
- package/dist/migrations.d.ts +8 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +5 -0
- package/dist/operators.d.ts +3 -0
- package/dist/operators.d.ts.map +1 -0
- package/dist/operators.js +1 -0
- package/dist/sql-helpers.d.ts +3 -0
- package/dist/sql-helpers.d.ts.map +1 -0
- package/dist/sql-helpers.js +1 -0
- package/package.json +56 -7
- package/src/index.ts +198 -0
- package/src/lib/adapter.ts +653 -0
- package/src/lib/column.ts +384 -0
- package/src/lib/database/execution-context.ts +15 -0
- package/src/lib/database/helpers.ts +216 -0
- package/src/lib/database/query-execution.ts +638 -0
- package/src/lib/database/relations.ts +332 -0
- package/src/lib/database/write-lifecycle.ts +487 -0
- package/src/lib/database.ts +856 -0
- package/src/lib/errors.ts +119 -0
- package/src/lib/inflection.ts +69 -0
- package/src/lib/migrations/filename.ts +25 -0
- package/src/lib/migrations/helpers.ts +108 -0
- package/src/lib/migrations/journal-store.ts +122 -0
- package/src/lib/migrations/registry.ts +62 -0
- package/src/lib/migrations/runner.ts +374 -0
- package/src/lib/migrations/schema-api.ts +417 -0
- package/src/lib/migrations-node.ts +71 -0
- package/src/lib/migrations.ts +328 -0
- package/src/lib/operators.ts +436 -0
- package/src/lib/query.ts +958 -0
- package/src/lib/references.ts +78 -0
- package/src/lib/sql-helpers.ts +146 -0
- package/src/lib/sql.ts +84 -0
- package/src/lib/table.ts +1309 -0
- package/src/lib/types.ts +3 -0
- package/src/migrations/node.ts +1 -0
- package/src/migrations.ts +26 -0
- package/src/operators.ts +18 -0
- package/src/sql-helpers.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/lib/sql.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,EAAE,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CA2BrF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAQpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,YAAY,CAEzE"}
|
package/dist/lib/sql.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tagged-template helper for building parameterized SQL statements.
|
|
3
|
+
* @param strings Template string parts.
|
|
4
|
+
* @param values Interpolated values or nested {@link SqlStatement} values.
|
|
5
|
+
* @returns A normalized {@link SqlStatement}.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { sql } from 'remix/data-table'
|
|
9
|
+
*
|
|
10
|
+
* let email = 'user@example.com'
|
|
11
|
+
* let statement = sql`select * from users where email = ${email}`
|
|
12
|
+
* // => { text: 'select * from users where email = ?', values: ['user@example.com'] }
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function sql(strings, ...values) {
|
|
16
|
+
let text = '';
|
|
17
|
+
let parameters = [];
|
|
18
|
+
let index = 0;
|
|
19
|
+
while (index < strings.length) {
|
|
20
|
+
text += strings[index];
|
|
21
|
+
if (index < values.length) {
|
|
22
|
+
let value = values[index];
|
|
23
|
+
if (isSqlStatement(value)) {
|
|
24
|
+
text += value.text;
|
|
25
|
+
parameters.push(...value.values);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
text += '?';
|
|
29
|
+
parameters.push(value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
index += 1;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
text,
|
|
36
|
+
values: parameters,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns `true` when a value matches the {@link SqlStatement} shape.
|
|
41
|
+
* @param value Value to inspect.
|
|
42
|
+
* @returns Whether the value is a {@link SqlStatement} object.
|
|
43
|
+
*/
|
|
44
|
+
export function isSqlStatement(value) {
|
|
45
|
+
if (typeof value !== 'object' || value === null) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
let statement = value;
|
|
49
|
+
return typeof statement.text === 'string' && Array.isArray(statement.values);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates a SQL statement from raw text and values.
|
|
53
|
+
* @param text SQL text containing placeholders expected by the target adapter.
|
|
54
|
+
* @param values Placeholder values.
|
|
55
|
+
* @returns A normalized SQL statement.
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { rawSql } from 'remix/data-table'
|
|
59
|
+
*
|
|
60
|
+
* let statement = rawSql('select * from users where id = ?', [1])
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function rawSql(text, values = []) {
|
|
64
|
+
return { text, values };
|
|
65
|
+
}
|
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
import type { ColumnDefinition } from './adapter.ts';
|
|
2
|
+
import { ColumnBuilder } from './column.ts';
|
|
3
|
+
import type { ColumnInput as ColumnBuilderInput, ColumnOutput } from './column.ts';
|
|
4
|
+
import type { Predicate, WhereInput } from './operators.ts';
|
|
5
|
+
import { columnMetadataKey, tableMetadataKey } from './references.ts';
|
|
6
|
+
import type { ColumnInput, ColumnReferenceLike, TableMetadataLike } from './references.ts';
|
|
7
|
+
import type { Pretty } from './types.ts';
|
|
8
|
+
/**
|
|
9
|
+
* Symbol key used to store non-enumerable table metadata.
|
|
10
|
+
*/
|
|
11
|
+
export { columnMetadataKey, tableMetadataKey } from './references.ts';
|
|
12
|
+
/**
|
|
13
|
+
* Column builder map used when declaring a table.
|
|
14
|
+
*/
|
|
15
|
+
export type TableColumnsDefinition = Record<string, ColumnBuilder<any>>;
|
|
16
|
+
/**
|
|
17
|
+
* Validation lifecycle operations.
|
|
18
|
+
*/
|
|
19
|
+
export type TableValidationOperation = 'create' | 'update';
|
|
20
|
+
/**
|
|
21
|
+
* Write lifecycle operations.
|
|
22
|
+
*/
|
|
23
|
+
export type TableWriteOperation = TableValidationOperation;
|
|
24
|
+
/**
|
|
25
|
+
* All lifecycle operations exposed by table hooks.
|
|
26
|
+
*/
|
|
27
|
+
export type TableLifecycleOperation = TableWriteOperation | 'delete' | 'read';
|
|
28
|
+
/**
|
|
29
|
+
* Single validation issue reported by table hooks.
|
|
30
|
+
*/
|
|
31
|
+
export type ValidationIssue = {
|
|
32
|
+
message: string;
|
|
33
|
+
path?: Array<string | number>;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Validation failure returned from table hooks.
|
|
37
|
+
*/
|
|
38
|
+
export type ValidationFailure = {
|
|
39
|
+
issues: ReadonlyArray<ValidationIssue>;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Context passed to the `validate` hook.
|
|
43
|
+
*/
|
|
44
|
+
export type TableValidationContext<row extends Record<string, unknown>> = {
|
|
45
|
+
operation: TableValidationOperation;
|
|
46
|
+
tableName: string;
|
|
47
|
+
value: Partial<row>;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Result returned from the `validate` hook.
|
|
51
|
+
*/
|
|
52
|
+
export type TableValidationResult<row extends Record<string, unknown>> = {
|
|
53
|
+
value: Partial<row>;
|
|
54
|
+
} | ValidationFailure;
|
|
55
|
+
/**
|
|
56
|
+
* Validation hook that runs before writes.
|
|
57
|
+
*/
|
|
58
|
+
export type TableValidate<row extends Record<string, unknown>> = (context: TableValidationContext<row>) => TableValidationResult<row>;
|
|
59
|
+
/**
|
|
60
|
+
* Context passed to the `beforeWrite` hook.
|
|
61
|
+
*/
|
|
62
|
+
export type TableBeforeWriteContext<row extends Record<string, unknown>> = {
|
|
63
|
+
operation: TableWriteOperation;
|
|
64
|
+
tableName: string;
|
|
65
|
+
value: Partial<row>;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Result returned from the `beforeWrite` hook.
|
|
69
|
+
*/
|
|
70
|
+
export type TableBeforeWriteResult<row extends Record<string, unknown>> = {
|
|
71
|
+
value: Partial<row>;
|
|
72
|
+
} | ValidationFailure;
|
|
73
|
+
/**
|
|
74
|
+
* Hook invoked before a row write executes.
|
|
75
|
+
*/
|
|
76
|
+
export type TableBeforeWrite<row extends Record<string, unknown>> = (context: TableBeforeWriteContext<row>) => TableBeforeWriteResult<row>;
|
|
77
|
+
/**
|
|
78
|
+
* Context passed to the `afterWrite` hook.
|
|
79
|
+
*/
|
|
80
|
+
export type TableAfterWriteContext<row extends Record<string, unknown>> = {
|
|
81
|
+
operation: TableWriteOperation;
|
|
82
|
+
tableName: string;
|
|
83
|
+
values: ReadonlyArray<Partial<row>>;
|
|
84
|
+
affectedRows: number;
|
|
85
|
+
insertId?: unknown;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Hook invoked after a row write completes.
|
|
89
|
+
*/
|
|
90
|
+
export type TableAfterWrite<row extends Record<string, unknown>> = (context: TableAfterWriteContext<row>) => void;
|
|
91
|
+
/**
|
|
92
|
+
* Context passed to the `beforeDelete` hook.
|
|
93
|
+
*/
|
|
94
|
+
export type TableBeforeDeleteContext = {
|
|
95
|
+
tableName: string;
|
|
96
|
+
where: ReadonlyArray<Predicate<string>>;
|
|
97
|
+
orderBy: ReadonlyArray<OrderByClause>;
|
|
98
|
+
limit?: number;
|
|
99
|
+
offset?: number;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Result returned from the `beforeDelete` hook.
|
|
103
|
+
*/
|
|
104
|
+
export type TableBeforeDeleteResult = void | ValidationFailure;
|
|
105
|
+
/**
|
|
106
|
+
* Hook invoked before a delete operation executes.
|
|
107
|
+
*/
|
|
108
|
+
export type TableBeforeDelete = (context: TableBeforeDeleteContext) => TableBeforeDeleteResult;
|
|
109
|
+
/**
|
|
110
|
+
* Context passed to the `afterDelete` hook.
|
|
111
|
+
*/
|
|
112
|
+
export type TableAfterDeleteContext = {
|
|
113
|
+
tableName: string;
|
|
114
|
+
where: ReadonlyArray<Predicate<string>>;
|
|
115
|
+
orderBy: ReadonlyArray<OrderByClause>;
|
|
116
|
+
limit?: number;
|
|
117
|
+
offset?: number;
|
|
118
|
+
affectedRows: number;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Hook invoked after a delete operation completes.
|
|
122
|
+
*/
|
|
123
|
+
export type TableAfterDelete = (context: TableAfterDeleteContext) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Context passed to the `afterRead` hook.
|
|
126
|
+
*/
|
|
127
|
+
export type TableAfterReadContext<row extends Record<string, unknown>> = {
|
|
128
|
+
tableName: string;
|
|
129
|
+
/**
|
|
130
|
+
* The current row shape being returned. This may be a projection/partial row.
|
|
131
|
+
*/
|
|
132
|
+
value: Partial<row>;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Result returned from the `afterRead` hook.
|
|
136
|
+
*/
|
|
137
|
+
export type TableAfterReadResult<row extends Record<string, unknown>> = {
|
|
138
|
+
value: Partial<row>;
|
|
139
|
+
} | ValidationFailure;
|
|
140
|
+
/**
|
|
141
|
+
* Hook invoked after a row is read.
|
|
142
|
+
*/
|
|
143
|
+
export type TableAfterRead<row extends Record<string, unknown>> = (context: TableAfterReadContext<row>) => TableAfterReadResult<row>;
|
|
144
|
+
type ColumnNameFromColumns<columns extends TableColumnsDefinition> = keyof columns & string;
|
|
145
|
+
type DefaultPrimaryKey<columns extends TableColumnsDefinition> = 'id' extends ColumnNameFromColumns<columns> ? readonly ['id'] : readonly ColumnNameFromColumns<columns>[];
|
|
146
|
+
type NormalizePrimaryKey<columns extends TableColumnsDefinition, primaryKey extends ColumnNameFromColumns<columns> | readonly ColumnNameFromColumns<columns>[] | undefined> = primaryKey extends readonly (infer column extends ColumnNameFromColumns<columns>)[] ? readonly [...column[]] : primaryKey extends ColumnNameFromColumns<columns> ? readonly [primaryKey] : DefaultPrimaryKey<columns>;
|
|
147
|
+
/**
|
|
148
|
+
* Timestamp configuration accepted by {@link table}.
|
|
149
|
+
*/
|
|
150
|
+
export type TimestampOptions = boolean | {
|
|
151
|
+
createdAt?: string;
|
|
152
|
+
updatedAt?: string;
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Resolved timestamp column names for a table.
|
|
156
|
+
*/
|
|
157
|
+
export type TimestampConfig = {
|
|
158
|
+
createdAt: string;
|
|
159
|
+
updatedAt: string;
|
|
160
|
+
};
|
|
161
|
+
type TableMetadata<name extends string, columns extends TableColumnsDefinition, primaryKey extends readonly ColumnNameFromColumns<columns>[]> = {
|
|
162
|
+
name: name;
|
|
163
|
+
columns: columns;
|
|
164
|
+
primaryKey: primaryKey;
|
|
165
|
+
timestamps: TimestampConfig | null;
|
|
166
|
+
columnDefinitions: {
|
|
167
|
+
[column in keyof columns & string]: ColumnDefinition;
|
|
168
|
+
};
|
|
169
|
+
beforeWrite?: TableBeforeWrite<TableRowFromColumns<columns>>;
|
|
170
|
+
afterWrite?: TableAfterWrite<TableRowFromColumns<columns>>;
|
|
171
|
+
beforeDelete?: TableBeforeDelete;
|
|
172
|
+
afterDelete?: TableAfterDelete;
|
|
173
|
+
afterRead?: TableAfterRead<TableRowFromColumns<columns>>;
|
|
174
|
+
validate?: TableValidate<TableRowFromColumns<columns>>;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Typed reference to a table column.
|
|
178
|
+
*/
|
|
179
|
+
export type ColumnReference<tableName extends string, columnName extends string> = ColumnReferenceLike<`${tableName}.${columnName}`> & {
|
|
180
|
+
[columnMetadataKey]: {
|
|
181
|
+
tableName: tableName;
|
|
182
|
+
columnName: columnName;
|
|
183
|
+
qualifiedName: `${tableName}.${columnName}`;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Any column reference.
|
|
188
|
+
*/
|
|
189
|
+
export type AnyColumn = ColumnReference<string, string>;
|
|
190
|
+
/**
|
|
191
|
+
* Column reference narrowed by a qualified column name string.
|
|
192
|
+
*/
|
|
193
|
+
export type ColumnReferenceForQualifiedName<qualifiedName extends string> = AnyColumn & {
|
|
194
|
+
[columnMetadataKey]: {
|
|
195
|
+
qualifiedName: qualifiedName;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
type TableColumnReferences<name extends string, columns extends TableColumnsDefinition> = {
|
|
199
|
+
[column in keyof columns & string]: ColumnReference<name, column>;
|
|
200
|
+
};
|
|
201
|
+
type TableRowFromColumns<columns extends TableColumnsDefinition> = Pretty<{
|
|
202
|
+
[column in keyof columns & string]: ColumnOutput<columns[column]>;
|
|
203
|
+
}>;
|
|
204
|
+
/**
|
|
205
|
+
* Fully-typed table object returned by {@link table}.
|
|
206
|
+
*/
|
|
207
|
+
export type Table<name extends string, columns extends TableColumnsDefinition, primaryKey extends readonly ColumnNameFromColumns<columns>[]> = TableMetadataLike<name, columns, primaryKey, TimestampConfig | null> & {
|
|
208
|
+
[tableMetadataKey]: TableMetadata<name, columns, primaryKey>;
|
|
209
|
+
} & TableColumnReferences<name, columns>;
|
|
210
|
+
/**
|
|
211
|
+
* Table-like object with erased concrete column types.
|
|
212
|
+
*/
|
|
213
|
+
export type AnyTable = TableMetadataLike<string, TableColumnsDefinition, readonly string[], TimestampConfig | null> & {
|
|
214
|
+
[tableMetadataKey]: {
|
|
215
|
+
name: string;
|
|
216
|
+
columns: TableColumnsDefinition;
|
|
217
|
+
primaryKey: readonly string[];
|
|
218
|
+
timestamps: TimestampConfig | null;
|
|
219
|
+
columnDefinitions: Record<string, ColumnDefinition>;
|
|
220
|
+
beforeWrite?: unknown;
|
|
221
|
+
afterWrite?: unknown;
|
|
222
|
+
beforeDelete?: unknown;
|
|
223
|
+
afterDelete?: unknown;
|
|
224
|
+
afterRead?: unknown;
|
|
225
|
+
validate?: TableValidate<Record<string, unknown>>;
|
|
226
|
+
};
|
|
227
|
+
} & Record<string, unknown>;
|
|
228
|
+
/**
|
|
229
|
+
* Name of a concrete table.
|
|
230
|
+
*/
|
|
231
|
+
export type TableName<table extends AnyTable> = table[typeof tableMetadataKey]['name'];
|
|
232
|
+
/**
|
|
233
|
+
* Column builder map for a concrete table.
|
|
234
|
+
*/
|
|
235
|
+
export type TableColumns<table extends AnyTable> = table[typeof tableMetadataKey]['columns'];
|
|
236
|
+
/**
|
|
237
|
+
* Primary-key column list for a concrete table.
|
|
238
|
+
*/
|
|
239
|
+
export type TablePrimaryKey<table extends AnyTable> = table[typeof tableMetadataKey]['primaryKey'];
|
|
240
|
+
export type TableTimestamps<table extends AnyTable> = table[typeof tableMetadataKey]['timestamps'];
|
|
241
|
+
/**
|
|
242
|
+
* Row shape produced by a concrete table.
|
|
243
|
+
*/
|
|
244
|
+
export type TableRow<table extends AnyTable> = TableRowFromColumns<TableColumns<table>>;
|
|
245
|
+
/**
|
|
246
|
+
* Row shape with loaded relations merged in.
|
|
247
|
+
*/
|
|
248
|
+
export type TableRowWith<table extends AnyTable, loaded extends Record<string, unknown> = {}> = Pretty<TableRow<table> & loaded>;
|
|
249
|
+
/**
|
|
250
|
+
* Unqualified column names for a concrete table.
|
|
251
|
+
*/
|
|
252
|
+
export type TableColumnName<table extends AnyTable> = keyof TableColumns<table> & string;
|
|
253
|
+
export type QualifiedTableColumnName<table extends AnyTable> = `${TableName<table>}.${TableColumnName<table>}`;
|
|
254
|
+
/**
|
|
255
|
+
* Column input accepted for a concrete table.
|
|
256
|
+
*/
|
|
257
|
+
export type TableColumnInput<table extends AnyTable> = ColumnInput<TableColumnName<table> | QualifiedTableColumnName<table>>;
|
|
258
|
+
/**
|
|
259
|
+
* Plain metadata snapshot of a table.
|
|
260
|
+
*/
|
|
261
|
+
export type TableReference<table extends AnyTable = AnyTable> = {
|
|
262
|
+
kind: 'table';
|
|
263
|
+
name: TableName<table>;
|
|
264
|
+
columns: TableColumns<table>;
|
|
265
|
+
primaryKey: TablePrimaryKey<table>;
|
|
266
|
+
timestamps: TableTimestamps<table>;
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Creates a plain table reference snapshot from a table instance.
|
|
270
|
+
* @param table Source table instance.
|
|
271
|
+
* @returns Table metadata snapshot.
|
|
272
|
+
*/
|
|
273
|
+
export declare function getTableReference<table extends AnyTable>(table: table): TableReference<table>;
|
|
274
|
+
/**
|
|
275
|
+
* Returns a table's SQL name.
|
|
276
|
+
* @param table Source table instance.
|
|
277
|
+
* @returns Table SQL name.
|
|
278
|
+
*/
|
|
279
|
+
export declare function getTableName<table extends AnyTable>(table: table): TableName<table>;
|
|
280
|
+
/**
|
|
281
|
+
* Returns a table's column builder map.
|
|
282
|
+
* @param table Source table instance.
|
|
283
|
+
* @returns Table column builder map.
|
|
284
|
+
*/
|
|
285
|
+
export declare function getTableColumns<table extends AnyTable>(table: table): TableColumns<table>;
|
|
286
|
+
/**
|
|
287
|
+
* Returns a table's resolved physical column definitions.
|
|
288
|
+
* @param table Source table instance.
|
|
289
|
+
* @returns Column definition map.
|
|
290
|
+
*/
|
|
291
|
+
export declare function getTableColumnDefinitions<table extends AnyTable>(table: table): {
|
|
292
|
+
[column in keyof TableColumns<table> & string]: ColumnDefinition;
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Returns a table's optional write validator.
|
|
296
|
+
* @param table Source table instance.
|
|
297
|
+
* @returns Validation function or `undefined`.
|
|
298
|
+
*/
|
|
299
|
+
export declare function getTableValidator<table extends AnyTable>(table: table): TableValidate<TableRow<table>> | undefined;
|
|
300
|
+
/**
|
|
301
|
+
* Returns a table's optional before-write lifecycle callback.
|
|
302
|
+
* @param table Source table instance.
|
|
303
|
+
* @returns Before-write callback or `undefined`.
|
|
304
|
+
*/
|
|
305
|
+
export declare function getTableBeforeWrite<table extends AnyTable>(table: table): TableBeforeWrite<TableRow<table>> | undefined;
|
|
306
|
+
/**
|
|
307
|
+
* Returns a table's optional after-write lifecycle callback.
|
|
308
|
+
* @param table Source table instance.
|
|
309
|
+
* @returns After-write callback or `undefined`.
|
|
310
|
+
*/
|
|
311
|
+
export declare function getTableAfterWrite<table extends AnyTable>(table: table): TableAfterWrite<TableRow<table>> | undefined;
|
|
312
|
+
/**
|
|
313
|
+
* Returns a table's optional before-delete lifecycle callback.
|
|
314
|
+
* @param table Source table instance.
|
|
315
|
+
* @returns Before-delete callback or `undefined`.
|
|
316
|
+
*/
|
|
317
|
+
export declare function getTableBeforeDelete<table extends AnyTable>(table: table): TableBeforeDelete | undefined;
|
|
318
|
+
/**
|
|
319
|
+
* Returns a table's optional after-delete lifecycle callback.
|
|
320
|
+
* @param table Source table instance.
|
|
321
|
+
* @returns After-delete callback or `undefined`.
|
|
322
|
+
*/
|
|
323
|
+
export declare function getTableAfterDelete<table extends AnyTable>(table: table): TableAfterDelete | undefined;
|
|
324
|
+
/**
|
|
325
|
+
* Returns a table's optional after-read lifecycle callback.
|
|
326
|
+
* The callback receives the current read shape, which may be a projected partial row.
|
|
327
|
+
* @param table Source table instance.
|
|
328
|
+
* @returns After-read callback or `undefined`.
|
|
329
|
+
*/
|
|
330
|
+
export declare function getTableAfterRead<table extends AnyTable>(table: table): TableAfterRead<TableRow<table>> | undefined;
|
|
331
|
+
/**
|
|
332
|
+
* Returns a table's primary key columns.
|
|
333
|
+
* @param table Source table instance.
|
|
334
|
+
* @returns Primary key columns.
|
|
335
|
+
*/
|
|
336
|
+
export declare function getTablePrimaryKey<table extends AnyTable>(table: table): TablePrimaryKey<table>;
|
|
337
|
+
/**
|
|
338
|
+
* Returns a table's resolved timestamp configuration.
|
|
339
|
+
* @param table Source table instance.
|
|
340
|
+
* @returns Timestamp configuration or `null`.
|
|
341
|
+
*/
|
|
342
|
+
export declare function getTableTimestamps<table extends AnyTable>(table: table): TableTimestamps<table>;
|
|
343
|
+
/**
|
|
344
|
+
* Sort direction accepted by `orderBy`.
|
|
345
|
+
*/
|
|
346
|
+
export type OrderDirection = 'asc' | 'desc';
|
|
347
|
+
/**
|
|
348
|
+
* Normalized `orderBy` clause.
|
|
349
|
+
*/
|
|
350
|
+
export type OrderByClause = {
|
|
351
|
+
column: string;
|
|
352
|
+
direction: OrderDirection;
|
|
353
|
+
};
|
|
354
|
+
/**
|
|
355
|
+
* Cardinality of a relation.
|
|
356
|
+
*/
|
|
357
|
+
export type RelationCardinality = 'one' | 'many';
|
|
358
|
+
/**
|
|
359
|
+
* Supported relation kinds.
|
|
360
|
+
*/
|
|
361
|
+
export type RelationKind = 'hasMany' | 'hasOne' | 'belongsTo' | 'hasManyThrough';
|
|
362
|
+
export type RelationResult<relation extends AnyRelation> = relation extends Relation<any, infer target, infer cardinality, infer loaded> ? cardinality extends 'many' ? Array<TableRowWith<target, loaded>> : TableRowWith<target, loaded> | null : never;
|
|
363
|
+
/**
|
|
364
|
+
* Named relation map for a source table.
|
|
365
|
+
*/
|
|
366
|
+
export type RelationMapForTable<table extends AnyTable> = Record<string, Relation<table, AnyTable, RelationCardinality, any>>;
|
|
367
|
+
export type LoadedRelationMap<relations extends RelationMapForTable<any>> = Pretty<{
|
|
368
|
+
[name in keyof relations]: RelationResult<relations[name]>;
|
|
369
|
+
}>;
|
|
370
|
+
/**
|
|
371
|
+
* Column or column list used to join relations.
|
|
372
|
+
*/
|
|
373
|
+
export type KeySelector<table extends AnyTable> = (keyof TableRow<table> & string) | readonly (keyof TableRow<table> & string)[];
|
|
374
|
+
/**
|
|
375
|
+
* Options for defining a {@link hasMany} relation.
|
|
376
|
+
*/
|
|
377
|
+
export type HasManyOptions<source extends AnyTable, target extends AnyTable> = {
|
|
378
|
+
foreignKey?: KeySelector<target>;
|
|
379
|
+
targetKey?: KeySelector<source>;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* Options for defining a {@link hasOne} relation.
|
|
383
|
+
*/
|
|
384
|
+
export type HasOneOptions<source extends AnyTable, target extends AnyTable> = {
|
|
385
|
+
foreignKey?: KeySelector<target>;
|
|
386
|
+
targetKey?: KeySelector<source>;
|
|
387
|
+
};
|
|
388
|
+
/**
|
|
389
|
+
* Options for defining a {@link belongsTo} relation.
|
|
390
|
+
*/
|
|
391
|
+
export type BelongsToOptions<source extends AnyTable, target extends AnyTable> = {
|
|
392
|
+
foreignKey?: KeySelector<source>;
|
|
393
|
+
targetKey?: KeySelector<target>;
|
|
394
|
+
};
|
|
395
|
+
/**
|
|
396
|
+
* Options for defining a {@link hasManyThrough} relation.
|
|
397
|
+
*/
|
|
398
|
+
export type HasManyThroughOptions<source extends AnyTable, target extends AnyTable> = {
|
|
399
|
+
through: Relation<source, AnyTable, RelationCardinality, any>;
|
|
400
|
+
throughForeignKey?: KeySelector<target>;
|
|
401
|
+
throughTargetKey?: string | string[];
|
|
402
|
+
};
|
|
403
|
+
export type RelationModifiers<target extends AnyTable> = {
|
|
404
|
+
where: Predicate[];
|
|
405
|
+
orderBy: OrderByClause[];
|
|
406
|
+
limit?: number;
|
|
407
|
+
offset?: number;
|
|
408
|
+
with: RelationMapForTable<target>;
|
|
409
|
+
};
|
|
410
|
+
export type ThroughRelationMetadata = {
|
|
411
|
+
relation: AnyRelation;
|
|
412
|
+
throughSourceKey: string[];
|
|
413
|
+
throughTargetKey: string[];
|
|
414
|
+
};
|
|
415
|
+
/**
|
|
416
|
+
* Relation descriptor used by query loading.
|
|
417
|
+
*/
|
|
418
|
+
export type Relation<source extends AnyTable, target extends AnyTable, cardinality extends RelationCardinality, loaded extends Record<string, unknown> = {}> = {
|
|
419
|
+
kind: 'relation';
|
|
420
|
+
relationKind: RelationKind;
|
|
421
|
+
sourceTable: source;
|
|
422
|
+
targetTable: target;
|
|
423
|
+
cardinality: cardinality;
|
|
424
|
+
sourceKey: string[];
|
|
425
|
+
targetKey: string[];
|
|
426
|
+
through?: ThroughRelationMetadata;
|
|
427
|
+
modifiers: RelationModifiers<target>;
|
|
428
|
+
where(input: WhereInput<TableColumnName<target> | QualifiedTableColumnName<target>>): Relation<source, target, cardinality, loaded>;
|
|
429
|
+
orderBy(column: TableColumnInput<target>, direction?: OrderDirection): Relation<source, target, cardinality, loaded>;
|
|
430
|
+
limit(value: number): Relation<source, target, cardinality, loaded>;
|
|
431
|
+
offset(value: number): Relation<source, target, cardinality, loaded>;
|
|
432
|
+
with<relations extends RelationMapForTable<target>>(relations: relations): Relation<source, target, cardinality, loaded & LoadedRelationMap<relations>>;
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Relation descriptor with erased table types.
|
|
436
|
+
*/
|
|
437
|
+
export type AnyRelation = Relation<AnyTable, AnyTable, RelationCardinality, any>;
|
|
438
|
+
export type CreateTableOptions<name extends string, columns extends TableColumnsDefinition, primaryKey extends ColumnNameFromColumns<columns> | readonly ColumnNameFromColumns<columns>[] | undefined> = {
|
|
439
|
+
name: name;
|
|
440
|
+
columns: columns;
|
|
441
|
+
primaryKey?: primaryKey;
|
|
442
|
+
timestamps?: TimestampOptions;
|
|
443
|
+
beforeWrite?: TableBeforeWrite<TableRowFromColumns<columns>>;
|
|
444
|
+
afterWrite?: TableAfterWrite<TableRowFromColumns<columns>>;
|
|
445
|
+
beforeDelete?: TableBeforeDelete;
|
|
446
|
+
afterDelete?: TableAfterDelete;
|
|
447
|
+
afterRead?: TableAfterRead<TableRowFromColumns<columns>>;
|
|
448
|
+
validate?: TableValidate<TableRowFromColumns<columns>>;
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* Creates a lifecycle/validation failure result with one or more issues.
|
|
452
|
+
* @param message A single issue message.
|
|
453
|
+
* @param path Optional issue path.
|
|
454
|
+
* @returns A {@link ValidationFailure} result object for `validate` and lifecycle callbacks.
|
|
455
|
+
* @example
|
|
456
|
+
* ```ts
|
|
457
|
+
* import { column as c, fail, table } from 'remix/data-table'
|
|
458
|
+
*
|
|
459
|
+
* let users = table({
|
|
460
|
+
* name: 'users',
|
|
461
|
+
* columns: {
|
|
462
|
+
* id: c.integer(),
|
|
463
|
+
* email: c.varchar(255),
|
|
464
|
+
* },
|
|
465
|
+
* validate({ value }) {
|
|
466
|
+
* if (!value.email) {
|
|
467
|
+
* // Fail with a single issue message and optional path
|
|
468
|
+
* return fail('Email is required', ['email'])
|
|
469
|
+
*
|
|
470
|
+
* // Or fail with multiple issues at once
|
|
471
|
+
* return fail([
|
|
472
|
+
* { message: 'Id is required', path: ['id'] },
|
|
473
|
+
* { message: 'Email is required', path: ['email'] },
|
|
474
|
+
* ])
|
|
475
|
+
* }
|
|
476
|
+
*
|
|
477
|
+
* return { value }
|
|
478
|
+
* },
|
|
479
|
+
* })
|
|
480
|
+
* ```
|
|
481
|
+
*/
|
|
482
|
+
export declare function fail(message: string, path?: Array<string | number>): ValidationFailure;
|
|
483
|
+
/**
|
|
484
|
+
* @param issues An array of issues.
|
|
485
|
+
*/
|
|
486
|
+
export declare function fail(issues: ReadonlyArray<ValidationIssue>): ValidationFailure;
|
|
487
|
+
/**
|
|
488
|
+
* Creates a table object with symbol-backed metadata and direct column references.
|
|
489
|
+
* @param options Table declaration options.
|
|
490
|
+
* @returns A frozen table object.
|
|
491
|
+
* @example
|
|
492
|
+
* ```ts
|
|
493
|
+
* import { column as c, table } from 'remix/data-table'
|
|
494
|
+
*
|
|
495
|
+
* let users = table({
|
|
496
|
+
* name: 'users',
|
|
497
|
+
* columns: {
|
|
498
|
+
* id: c.integer(),
|
|
499
|
+
* email: c.varchar(255),
|
|
500
|
+
* },
|
|
501
|
+
* primaryKey: 'id',
|
|
502
|
+
* })
|
|
503
|
+
* ```
|
|
504
|
+
*/
|
|
505
|
+
export declare function table<name extends string, columns extends TableColumnsDefinition, primaryKey extends ColumnNameFromColumns<columns> | readonly ColumnNameFromColumns<columns>[] | undefined = undefined>(options: CreateTableOptions<name, columns, primaryKey>): Table<name, columns, NormalizePrimaryKey<columns, primaryKey>>;
|
|
506
|
+
/**
|
|
507
|
+
* Defines a one-to-many relation from `source` to `target`.
|
|
508
|
+
* @param source Source table.
|
|
509
|
+
* @param target Target table.
|
|
510
|
+
* @param relationOptions Relation key configuration.
|
|
511
|
+
* @returns A relation descriptor.
|
|
512
|
+
*/
|
|
513
|
+
export declare function hasMany<source extends AnyTable, target extends AnyTable>(source: source, target: target, relationOptions?: HasManyOptions<source, target>): Relation<source, target, 'many'>;
|
|
514
|
+
/**
|
|
515
|
+
* Defines a one-to-one relation from `source` to `target` where the foreign key lives on `target`.
|
|
516
|
+
* @param source Source table.
|
|
517
|
+
* @param target Target table.
|
|
518
|
+
* @param relationOptions Relation key configuration.
|
|
519
|
+
* @returns A relation descriptor.
|
|
520
|
+
*/
|
|
521
|
+
export declare function hasOne<source extends AnyTable, target extends AnyTable>(source: source, target: target, relationOptions?: HasOneOptions<source, target>): Relation<source, target, 'one'>;
|
|
522
|
+
/**
|
|
523
|
+
* Defines a one-to-one relation from `source` to `target`.
|
|
524
|
+
* @param source Source table.
|
|
525
|
+
* @param target Target table.
|
|
526
|
+
* @param relationOptions Relation key configuration.
|
|
527
|
+
* @returns A relation descriptor.
|
|
528
|
+
*/
|
|
529
|
+
export declare function belongsTo<source extends AnyTable, target extends AnyTable>(source: source, target: target, relationOptions?: BelongsToOptions<source, target>): Relation<source, target, 'one'>;
|
|
530
|
+
/**
|
|
531
|
+
* Defines a one-to-many relation from `source` to `target` through an intermediate relation.
|
|
532
|
+
* @param source Source table.
|
|
533
|
+
* @param target Target table.
|
|
534
|
+
* @param relationOptions Through relation configuration.
|
|
535
|
+
* @returns A relation descriptor.
|
|
536
|
+
*/
|
|
537
|
+
export declare function hasManyThrough<source extends AnyTable, target extends AnyTable>(source: source, target: target, relationOptions: HasManyThroughOptions<source, target>): Relation<source, target, 'many'>;
|
|
538
|
+
/**
|
|
539
|
+
* Convenience helper for standard snake_case timestamp columns.
|
|
540
|
+
* @returns Column-builder map for `created_at`/`updated_at`.
|
|
541
|
+
*/
|
|
542
|
+
export declare function timestamps(): Record<'created_at' | 'updated_at', ColumnBuilder<Date | string | number>>;
|
|
543
|
+
/**
|
|
544
|
+
* Primary-key input accepted by `find()`, `update()`, and similar helpers.
|
|
545
|
+
*/
|
|
546
|
+
export type PrimaryKeyInput<table extends AnyTable> = TablePrimaryKey<table> extends readonly [infer column extends string] ? column extends keyof TableColumns<table> & string ? ColumnBuilderInput<TableColumns<table>[column]> : never : Pretty<{
|
|
547
|
+
[column in TablePrimaryKey<table>[number] & keyof TableColumns<table> & string]: ColumnBuilderInput<TableColumns<table>[column]>;
|
|
548
|
+
}>;
|
|
549
|
+
/**
|
|
550
|
+
* Normalizes a primary-key input into an object keyed by primary-key columns.
|
|
551
|
+
* @param table Source table.
|
|
552
|
+
* @param value Primary-key input value.
|
|
553
|
+
* @returns Primary-key object.
|
|
554
|
+
*/
|
|
555
|
+
export declare function getPrimaryKeyObject<table extends AnyTable>(table: table, value: PrimaryKeyInput<table>): Partial<TableRow<table>>;
|
|
556
|
+
/**
|
|
557
|
+
* Builds a stable key for a row tuple.
|
|
558
|
+
* @param row Source row.
|
|
559
|
+
* @param columns Columns included in the tuple.
|
|
560
|
+
* @returns Stable tuple key.
|
|
561
|
+
*/
|
|
562
|
+
export declare function getCompositeKey(row: Record<string, unknown>, columns: readonly string[]): string;
|
|
563
|
+
/**
|
|
564
|
+
* Serializes values into stable string representations for key generation.
|
|
565
|
+
* @param value Value to serialize.
|
|
566
|
+
* @returns Stable serialized value.
|
|
567
|
+
*/
|
|
568
|
+
export declare function stableSerialize(value: unknown): string;
|
|
569
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/lib/table.ts"],"names":[],"mappings":"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"}
|