@zmdb/sql 1.0.0-beta.1
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 +674 -0
- package/README.md +35 -0
- package/dist/aggregations/index.d.ts +30 -0
- package/dist/aggregations/index.d.ts.map +1 -0
- package/dist/aggregations/index.js +52 -0
- package/dist/aggregations/index.js.map +1 -0
- package/dist/clauses.d.ts +112 -0
- package/dist/clauses.d.ts.map +1 -0
- package/dist/clauses.js +267 -0
- package/dist/clauses.js.map +1 -0
- package/dist/comments/index.d.ts +26 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +28 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/compiled-query.d.ts +12 -0
- package/dist/compiled-query.d.ts.map +1 -0
- package/dist/compiled-query.js +2 -0
- package/dist/compiled-query.js.map +1 -0
- package/dist/dialects/index.d.ts +19 -0
- package/dist/dialects/index.d.ts.map +1 -0
- package/dist/dialects/index.js +43 -0
- package/dist/dialects/index.js.map +1 -0
- package/dist/dialects/protocol.d.ts +230 -0
- package/dist/dialects/protocol.d.ts.map +1 -0
- package/dist/dialects/protocol.js +230 -0
- package/dist/dialects/protocol.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/expressions/index.d.ts +50 -0
- package/dist/expressions/index.d.ts.map +1 -0
- package/dist/expressions/index.js +77 -0
- package/dist/expressions/index.js.map +1 -0
- package/dist/extensions/index.d.ts +85 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +120 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/fts/index.d.ts +28 -0
- package/dist/fts/index.d.ts.map +1 -0
- package/dist/fts/index.js +110 -0
- package/dist/fts/index.js.map +1 -0
- package/dist/index.d.ts +128 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +364 -0
- package/dist/index.js.map +1 -0
- package/dist/introspect/types.d.ts +58 -0
- package/dist/introspect/types.d.ts.map +1 -0
- package/dist/introspect/types.js +2 -0
- package/dist/introspect/types.js.map +1 -0
- package/dist/joins/index.d.ts +20 -0
- package/dist/joins/index.d.ts.map +1 -0
- package/dist/joins/index.js +24 -0
- package/dist/joins/index.js.map +1 -0
- package/dist/migrations/types.d.ts +100 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +2 -0
- package/dist/migrations/types.js.map +1 -0
- package/dist/quoting.d.ts +40 -0
- package/dist/quoting.d.ts.map +1 -0
- package/dist/quoting.js +98 -0
- package/dist/quoting.js.map +1 -0
- package/dist/schema-objects/extensions.d.ts +5 -0
- package/dist/schema-objects/extensions.d.ts.map +1 -0
- package/dist/schema-objects/extensions.js +9 -0
- package/dist/schema-objects/extensions.js.map +1 -0
- package/dist/schema-objects/index.d.ts +25 -0
- package/dist/schema-objects/index.d.ts.map +1 -0
- package/dist/schema-objects/index.js +86 -0
- package/dist/schema-objects/index.js.map +1 -0
- package/dist/schema-objects/types.d.ts +62 -0
- package/dist/schema-objects/types.d.ts.map +1 -0
- package/dist/schema-objects/types.js +2 -0
- package/dist/schema-objects/types.js.map +1 -0
- package/dist/set-ops/index.d.ts +16 -0
- package/dist/set-ops/index.d.ts.map +1 -0
- package/dist/set-ops/index.js +41 -0
- package/dist/set-ops/index.js.map +1 -0
- package/package.json +70 -0
- package/src/aggregations/index.ts +127 -0
- package/src/clauses.ts +387 -0
- package/src/comments/index.ts +49 -0
- package/src/compiled-query.ts +12 -0
- package/src/dialects/index.ts +103 -0
- package/src/dialects/protocol.ts +478 -0
- package/src/errors.ts +18 -0
- package/src/expressions/index.ts +127 -0
- package/src/extensions/index.ts +235 -0
- package/src/fts/index.ts +157 -0
- package/src/index.ts +685 -0
- package/src/introspect/types.ts +60 -0
- package/src/joins/index.ts +69 -0
- package/src/migrations/types.ts +93 -0
- package/src/quoting.ts +111 -0
- package/src/schema-objects/extensions.ts +12 -0
- package/src/schema-objects/index.ts +125 -0
- package/src/schema-objects/types.ts +73 -0
- package/src/set-ops/index.ts +48 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DatabaseCapabilities, ResolvedDialectTraits, ReturningStatement, SqlDialect } from './protocol.js';
|
|
2
|
+
export { defineSqlDialect, DIALECT_SQL_TYPES, extendSqlDialect, isSqlDialect } from './protocol.js';
|
|
3
|
+
export type { AppliedMigration, DatabaseCapabilities, DialectCompiler, DialectOutbox, DialectReturningColumn, DialectReturningContext, DialectReturningSql, DialectSqlType, DialectTypeMap, DialectUpsertConflict, DialectUpsertContext, DialectUpsertReferences, IntrospectionDriver, Introspector, IntrospectOptions, MigrationConnection, MigrationDialect, MigrationDriver, MigrationExecutionDriver, MigrationPlan, MigrationTableOptions, PaginationTail, PlaceholderStyle, ResolvedDialectTraits, ReturningCapability, ReturningStatement, ReturningStyle, SchemaObjectOperation, SqlDialect, SqlDialectDefinition, SqlDialectExtension, } from './protocol.js';
|
|
4
|
+
/**
|
|
5
|
+
* The generic compiler accepts one resolved, immutable dialect object.
|
|
6
|
+
*
|
|
7
|
+
* Official database names, selection and inheritance live in their database
|
|
8
|
+
* packages. A third-party dialect therefore reaches this package through the
|
|
9
|
+
* same structural contract without registration or a generic-package edit.
|
|
10
|
+
*/
|
|
11
|
+
export type DialectTarget<Name extends string = string> = SqlDialect<Name>;
|
|
12
|
+
export type DialectFeature = 'materializedView' | 'rowLevelSecurity' | 'sequences' | 'schemas' | 'partialIndex' | 'generatedColumns' | 'transactionalDdl' | 'foreignKeys';
|
|
13
|
+
export declare function dialectName(dialect: DialectTarget): string;
|
|
14
|
+
export declare function dialectFamily(dialect: DialectTarget): string;
|
|
15
|
+
export declare function dialectTraits(dialect: DialectTarget): ResolvedDialectTraits;
|
|
16
|
+
export declare function dialectCapabilities(dialect: DialectTarget): DatabaseCapabilities;
|
|
17
|
+
export declare function dialectSupportsReturning(dialect: DialectTarget, statement: ReturningStatement): boolean;
|
|
18
|
+
export declare function requireDialectFeature(dialect: DialectTarget, feature: DialectFeature, errorFeature: string): void;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialects/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEjH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACpG,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,WAAW,GACX,SAAS,GACT,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,CAAC;AAElB,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,qBAAqB,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,oBAAoB,CAEhF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAEvG;AAuBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIjH"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { UnsupportedFeatureError } from '../errors.js';
|
|
2
|
+
export { defineSqlDialect, DIALECT_SQL_TYPES, extendSqlDialect, isSqlDialect } from './protocol.js';
|
|
3
|
+
export function dialectName(dialect) {
|
|
4
|
+
return dialect.name;
|
|
5
|
+
}
|
|
6
|
+
export function dialectFamily(dialect) {
|
|
7
|
+
return dialect.family;
|
|
8
|
+
}
|
|
9
|
+
export function dialectTraits(dialect) {
|
|
10
|
+
return dialect.traits;
|
|
11
|
+
}
|
|
12
|
+
export function dialectCapabilities(dialect) {
|
|
13
|
+
return dialect.capabilities;
|
|
14
|
+
}
|
|
15
|
+
export function dialectSupportsReturning(dialect, statement) {
|
|
16
|
+
return dialect.capabilities.returning[statement];
|
|
17
|
+
}
|
|
18
|
+
function supportsFeature(dialect, feature) {
|
|
19
|
+
switch (feature) {
|
|
20
|
+
case 'rowLevelSecurity':
|
|
21
|
+
return dialect.capabilities.rowLevelSecurity;
|
|
22
|
+
case 'sequences':
|
|
23
|
+
return dialect.capabilities.sequences;
|
|
24
|
+
case 'schemas':
|
|
25
|
+
return dialect.capabilities.schemas;
|
|
26
|
+
case 'partialIndex':
|
|
27
|
+
return dialect.capabilities.partialIndexes;
|
|
28
|
+
case 'generatedColumns':
|
|
29
|
+
return dialect.capabilities.generatedColumns;
|
|
30
|
+
case 'transactionalDdl':
|
|
31
|
+
return dialect.capabilities.transactionalDdl;
|
|
32
|
+
case 'foreignKeys':
|
|
33
|
+
return dialect.capabilities.foreignKeys;
|
|
34
|
+
case 'materializedView':
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function requireDialectFeature(dialect, feature, errorFeature) {
|
|
39
|
+
if (!supportsFeature(dialect, feature)) {
|
|
40
|
+
throw new UnsupportedFeatureError(errorFeature, dialect.name);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dialects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAsDpG,MAAM,UAAU,WAAW,CAAC,OAAsB;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,OAAO,OAAO,CAAC,YAAY,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAsB,EAAE,SAA6B;IAC5F,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,OAAmB,EAAE,OAAuB;IACnE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,kBAAkB;YACrB,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC/C,KAAK,WAAW;YACd,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;QACtC,KAAK,cAAc;YACjB,OAAO,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;QAC7C,KAAK,kBAAkB;YACrB,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC/C,KAAK,aAAa;YAChB,OAAO,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;QAC1C,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAsB,EAAE,OAAuB,EAAE,YAAoB;IACzG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,uBAAuB,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { CompiledQuery } from '../compiled-query.js';
|
|
2
|
+
import type { CatalogSchemaSnapshot } from '../introspect/types.js';
|
|
3
|
+
import type { ChangeOp, ColumnSnapshot, SchemaSnapshot } from '../migrations/types.js';
|
|
4
|
+
import type { ExtensionDef, GeneratedColumn, IndexDef, RlsPolicy, RoutineDef, SequenceDef, ViewDef } from '../schema-objects/types.js';
|
|
5
|
+
export type PlaceholderStyle = 'numbered' | 'positional' | 'named';
|
|
6
|
+
export type ReturningStatement = 'insert' | 'upsert' | 'update' | 'delete';
|
|
7
|
+
export type ReturningStyle = 'suffix' | 'output' | 'none';
|
|
8
|
+
export type ReturningCapability = Readonly<Record<ReturningStatement, ReturningStyle>>;
|
|
9
|
+
export type DialectReturningColumn = string | {
|
|
10
|
+
readonly column: string;
|
|
11
|
+
readonly alias: string;
|
|
12
|
+
};
|
|
13
|
+
export interface DialectReturningSql {
|
|
14
|
+
readonly inline: string;
|
|
15
|
+
readonly suffix: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DialectReturningContext {
|
|
18
|
+
readonly dialect: SqlDialect;
|
|
19
|
+
readonly statement: ReturningStatement;
|
|
20
|
+
readonly row: 'new' | 'old';
|
|
21
|
+
readonly columns: readonly DialectReturningColumn[];
|
|
22
|
+
}
|
|
23
|
+
export interface DialectUpsertConflict {
|
|
24
|
+
readonly action: 'update' | 'ignore';
|
|
25
|
+
readonly target?: readonly string[] | undefined;
|
|
26
|
+
readonly updateFields?: readonly string[] | Readonly<Record<string, unknown>> | undefined;
|
|
27
|
+
}
|
|
28
|
+
export interface DialectUpsertReferences {
|
|
29
|
+
readonly current: string;
|
|
30
|
+
readonly proposed: string;
|
|
31
|
+
}
|
|
32
|
+
export interface DialectUpsertContext {
|
|
33
|
+
readonly dialect: SqlDialect;
|
|
34
|
+
readonly table: string;
|
|
35
|
+
readonly columns: readonly string[];
|
|
36
|
+
readonly placeholders: readonly string[];
|
|
37
|
+
readonly conflict: DialectUpsertConflict;
|
|
38
|
+
readonly returning: DialectReturningSql;
|
|
39
|
+
readonly renderUpdateValue: (column: string, value: unknown, references: DialectUpsertReferences) => string;
|
|
40
|
+
readonly isProposedValue: (value: unknown) => boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface DialectCompiler {
|
|
43
|
+
returning(context: DialectReturningContext): DialectReturningSql;
|
|
44
|
+
upsert(context: DialectUpsertContext): string;
|
|
45
|
+
}
|
|
46
|
+
export interface DialectOutbox {
|
|
47
|
+
readonly createTable: string;
|
|
48
|
+
readonly pendingIndex: 'filtered' | 'full';
|
|
49
|
+
readonly epochLiteral: string;
|
|
50
|
+
readonly createdAtDefault: string;
|
|
51
|
+
boundedTextType(length: number): string;
|
|
52
|
+
}
|
|
53
|
+
export interface DatabaseCapabilities {
|
|
54
|
+
readonly returning: Readonly<Record<ReturningStatement, boolean>>;
|
|
55
|
+
readonly transactionalDdl: boolean;
|
|
56
|
+
readonly schemas: boolean;
|
|
57
|
+
readonly sequences: boolean;
|
|
58
|
+
readonly generatedColumns: boolean;
|
|
59
|
+
readonly partialIndexes: boolean;
|
|
60
|
+
readonly foreignKeys: boolean;
|
|
61
|
+
readonly rowLevelSecurity: boolean;
|
|
62
|
+
readonly streaming: boolean;
|
|
63
|
+
readonly cancellation: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare const DIALECT_SQL_TYPES: readonly ['serial', 'integer', 'bigint', 'numeric', 'text', 'varchar', 'boolean', 'timestamp', 'json', 'jsonEnum'];
|
|
66
|
+
export type DialectSqlType = (typeof DIALECT_SQL_TYPES)[number];
|
|
67
|
+
export type DialectTypeMap = Readonly<Record<DialectSqlType, string>>;
|
|
68
|
+
export interface PaginationTail {
|
|
69
|
+
readonly limit?: number;
|
|
70
|
+
readonly offset?: number;
|
|
71
|
+
readonly ordered: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface ResolvedDialectTraits {
|
|
74
|
+
readonly placeholder: PlaceholderStyle;
|
|
75
|
+
readonly quote: readonly [open: string, close: string];
|
|
76
|
+
readonly paginate: (tail: PaginationTail) => string;
|
|
77
|
+
readonly paginationRequiresOrder: boolean;
|
|
78
|
+
readonly rowValueIn: boolean;
|
|
79
|
+
readonly returning: ReturningCapability;
|
|
80
|
+
readonly upsert: 'onConflict' | 'onDuplicateKey' | 'merge' | 'none';
|
|
81
|
+
readonly fts: 'tsvector' | 'match' | 'matchPlain' | 'companionTable' | 'none';
|
|
82
|
+
readonly concat: 'operator' | 'function';
|
|
83
|
+
readonly booleanNot: 'not' | 'bitwise';
|
|
84
|
+
readonly types: DialectTypeMap;
|
|
85
|
+
readonly paramLimit: number;
|
|
86
|
+
readonly retryableCodes: readonly string[];
|
|
87
|
+
readonly acceptsOperator: (operator: string) => boolean;
|
|
88
|
+
readonly functions: boolean;
|
|
89
|
+
readonly procedures: boolean;
|
|
90
|
+
readonly tableFunctions: boolean;
|
|
91
|
+
readonly vectorDistance: boolean;
|
|
92
|
+
readonly spatialPredicates: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface IntrospectionDriver {
|
|
95
|
+
execute(query: CompiledQuery): Promise<readonly Record<string, unknown>[]>;
|
|
96
|
+
}
|
|
97
|
+
export interface IntrospectOptions {
|
|
98
|
+
readonly schemas?: readonly string[];
|
|
99
|
+
readonly include?: readonly string[];
|
|
100
|
+
readonly exclude?: readonly string[];
|
|
101
|
+
}
|
|
102
|
+
export interface Introspector<Name extends string = string> {
|
|
103
|
+
readonly name: Name;
|
|
104
|
+
snapshot(driver: IntrospectionDriver, options?: IntrospectOptions): Promise<CatalogSchemaSnapshot>;
|
|
105
|
+
normalizeForDrift(snapshot: SchemaSnapshot, role: 'live' | 'declared'): SchemaSnapshot;
|
|
106
|
+
}
|
|
107
|
+
export type SchemaObjectOperation = {
|
|
108
|
+
readonly kind: 'create_index';
|
|
109
|
+
readonly definition: IndexDef;
|
|
110
|
+
} | {
|
|
111
|
+
readonly kind: 'check_constraint';
|
|
112
|
+
readonly table: string;
|
|
113
|
+
readonly name: string;
|
|
114
|
+
readonly expression: string;
|
|
115
|
+
} | {
|
|
116
|
+
readonly kind: 'create_view';
|
|
117
|
+
readonly definition: ViewDef;
|
|
118
|
+
} | {
|
|
119
|
+
readonly kind: 'drop_view';
|
|
120
|
+
readonly name: string;
|
|
121
|
+
readonly materialized?: boolean;
|
|
122
|
+
} | {
|
|
123
|
+
readonly kind: 'create_sequence';
|
|
124
|
+
readonly definition: SequenceDef;
|
|
125
|
+
} | {
|
|
126
|
+
readonly kind: 'generated_column';
|
|
127
|
+
readonly definition: GeneratedColumn;
|
|
128
|
+
} | {
|
|
129
|
+
readonly kind: 'create_schema';
|
|
130
|
+
readonly name: string;
|
|
131
|
+
} | {
|
|
132
|
+
readonly kind: 'enable_rls';
|
|
133
|
+
readonly table: string;
|
|
134
|
+
} | {
|
|
135
|
+
readonly kind: 'create_policy';
|
|
136
|
+
readonly definition: RlsPolicy;
|
|
137
|
+
} | {
|
|
138
|
+
readonly kind: 'create_extension';
|
|
139
|
+
readonly definition: ExtensionDef;
|
|
140
|
+
} | {
|
|
141
|
+
readonly kind: 'create_routine';
|
|
142
|
+
readonly definition: RoutineDef;
|
|
143
|
+
} | {
|
|
144
|
+
readonly kind: 'drop_routine';
|
|
145
|
+
readonly definition: RoutineDef;
|
|
146
|
+
} | {
|
|
147
|
+
readonly kind: 'replace_routine';
|
|
148
|
+
readonly previous?: RoutineDef;
|
|
149
|
+
readonly next: RoutineDef;
|
|
150
|
+
};
|
|
151
|
+
export interface MigrationPlan {
|
|
152
|
+
readonly before: SchemaSnapshot;
|
|
153
|
+
readonly after: SchemaSnapshot;
|
|
154
|
+
readonly operations: readonly ChangeOp[];
|
|
155
|
+
}
|
|
156
|
+
export interface MigrationTableOptions {
|
|
157
|
+
readonly table?: string;
|
|
158
|
+
readonly schema?: string;
|
|
159
|
+
}
|
|
160
|
+
export interface AppliedMigration {
|
|
161
|
+
readonly version: number;
|
|
162
|
+
readonly name: string;
|
|
163
|
+
/** `null` identifies a ledger row written before checksums were introduced. */
|
|
164
|
+
readonly checksum: string | null;
|
|
165
|
+
}
|
|
166
|
+
export interface MigrationExecutionDriver<Name extends string = string> {
|
|
167
|
+
readonly dialect: SqlDialect<Name>;
|
|
168
|
+
execute(query: CompiledQuery): Promise<readonly Record<string, unknown>[]>;
|
|
169
|
+
}
|
|
170
|
+
export interface MigrationDriver<Name extends string = string> extends MigrationExecutionDriver<Name> {
|
|
171
|
+
transaction?<Result>(run: (driver: MigrationExecutionDriver<Name>) => Promise<Result>): Promise<Result>;
|
|
172
|
+
}
|
|
173
|
+
export interface MigrationConnection<Name extends string = string> {
|
|
174
|
+
readonly name: Name;
|
|
175
|
+
readonly transactionalDdl: boolean;
|
|
176
|
+
exec(sql: string): Promise<void> | void;
|
|
177
|
+
appliedVersions(): Promise<readonly number[]> | readonly number[];
|
|
178
|
+
appliedMigrations?(): Promise<readonly AppliedMigration[]> | readonly AppliedMigration[];
|
|
179
|
+
recordApplied(version: number, name: string, checksum?: string): Promise<void> | void;
|
|
180
|
+
recordReverted(version: number): Promise<void> | void;
|
|
181
|
+
ensureVersionTable(): Promise<void> | void;
|
|
182
|
+
checksum?(sql: string): Promise<string> | string;
|
|
183
|
+
transaction?<Result>(run: (connection?: MigrationConnection<Name>) => Promise<Result>): Promise<Result>;
|
|
184
|
+
}
|
|
185
|
+
export interface MigrationDialect<Name extends string = string> {
|
|
186
|
+
readonly name: Name;
|
|
187
|
+
/** Whether CREATE TABLE owns foreign keys or they are emitted as later ALTER statements. */
|
|
188
|
+
readonly foreignKeyMode: 'inline' | 'deferred';
|
|
189
|
+
/** Whether this dialect can execute the browser-safe embedded migration format. */
|
|
190
|
+
readonly embedded: boolean;
|
|
191
|
+
validateSnapshot(snapshot: SchemaSnapshot): void;
|
|
192
|
+
validatePlan(plan: MigrationPlan): void;
|
|
193
|
+
ddlType(column: ColumnSnapshot): string;
|
|
194
|
+
emitUp(operation: ChangeOp): string;
|
|
195
|
+
emitDown(operation: ChangeOp): string;
|
|
196
|
+
emitSchemaObject(operation: SchemaObjectOperation): readonly string[];
|
|
197
|
+
connection(driver: MigrationDriver<Name>, options?: MigrationTableOptions): MigrationConnection<Name>;
|
|
198
|
+
}
|
|
199
|
+
export interface SqlDialect<Name extends string = string> {
|
|
200
|
+
readonly name: Name;
|
|
201
|
+
readonly family: string;
|
|
202
|
+
readonly telemetrySystem: string;
|
|
203
|
+
readonly traits: ResolvedDialectTraits;
|
|
204
|
+
readonly capabilities: DatabaseCapabilities;
|
|
205
|
+
readonly migrations: MigrationDialect<Name>;
|
|
206
|
+
readonly introspector: Introspector<Name>;
|
|
207
|
+
readonly compiler?: DialectCompiler;
|
|
208
|
+
readonly outbox?: DialectOutbox;
|
|
209
|
+
}
|
|
210
|
+
export interface SqlDialectDefinition<Name extends string> extends SqlDialect<Name> {
|
|
211
|
+
}
|
|
212
|
+
export interface SqlDialectExtension<Name extends string> {
|
|
213
|
+
readonly name: Name;
|
|
214
|
+
readonly telemetrySystem?: string;
|
|
215
|
+
readonly traits?: Omit<Partial<ResolvedDialectTraits>, 'returning' | 'types'> & {
|
|
216
|
+
readonly returning?: Partial<ResolvedDialectTraits['returning']>;
|
|
217
|
+
readonly types?: Partial<ResolvedDialectTraits['types']>;
|
|
218
|
+
};
|
|
219
|
+
readonly capabilities?: Partial<DatabaseCapabilities> & {
|
|
220
|
+
readonly returning?: Partial<DatabaseCapabilities['returning']>;
|
|
221
|
+
};
|
|
222
|
+
readonly migrations: MigrationDialect<Name>;
|
|
223
|
+
readonly introspector: Introspector<Name>;
|
|
224
|
+
readonly compiler?: DialectCompiler;
|
|
225
|
+
readonly outbox?: DialectOutbox;
|
|
226
|
+
}
|
|
227
|
+
export declare function defineSqlDialect<Name extends string>(definition: SqlDialectDefinition<Name>): SqlDialect<Name>;
|
|
228
|
+
export declare function extendSqlDialect<Parent extends string, Name extends string>(parent: SqlDialect<Parent>, extension: SqlDialectExtension<Name>): SqlDialect<Name>;
|
|
229
|
+
export declare function isSqlDialect(value: unknown): value is SqlDialect;
|
|
230
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/dialects/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
export const DIALECT_SQL_TYPES = [
|
|
2
|
+
'serial',
|
|
3
|
+
'integer',
|
|
4
|
+
'bigint',
|
|
5
|
+
'numeric',
|
|
6
|
+
'text',
|
|
7
|
+
'varchar',
|
|
8
|
+
'boolean',
|
|
9
|
+
'timestamp',
|
|
10
|
+
'json',
|
|
11
|
+
'jsonEnum',
|
|
12
|
+
];
|
|
13
|
+
function deepFreeze(value) {
|
|
14
|
+
if (value === null || typeof value !== 'object')
|
|
15
|
+
return value;
|
|
16
|
+
for (const key of Reflect.ownKeys(value))
|
|
17
|
+
deepFreeze(Reflect.get(value, key));
|
|
18
|
+
return Object.freeze(value);
|
|
19
|
+
}
|
|
20
|
+
function exactKeys(label, value, expected) {
|
|
21
|
+
const actual = Object.keys(value).toSorted();
|
|
22
|
+
const wanted = [...expected].toSorted();
|
|
23
|
+
if (actual.length !== wanted.length || actual.some((name, index) => name !== wanted[index])) {
|
|
24
|
+
throw new TypeError(`${label} keys are ${actual.join(', ')}; expected ${wanted.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function requiredFunction(value, key, label) {
|
|
28
|
+
if (typeof Reflect.get(value, key) !== 'function') {
|
|
29
|
+
throw new TypeError(`${label}.${key} must be a function`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function assertSqlDialect(dialect) {
|
|
33
|
+
if (dialect.name.trim().length === 0)
|
|
34
|
+
throw new TypeError('dialect name must not be empty');
|
|
35
|
+
if (dialect.family.trim().length === 0)
|
|
36
|
+
throw new TypeError(`${dialect.name} dialect family must not be empty`);
|
|
37
|
+
if (dialect.telemetrySystem.trim().length === 0) {
|
|
38
|
+
throw new TypeError(`${dialect.name} dialect telemetry system must not be empty`);
|
|
39
|
+
}
|
|
40
|
+
exactKeys('dialect trait', dialect.traits, [
|
|
41
|
+
'placeholder',
|
|
42
|
+
'quote',
|
|
43
|
+
'paginate',
|
|
44
|
+
'paginationRequiresOrder',
|
|
45
|
+
'rowValueIn',
|
|
46
|
+
'returning',
|
|
47
|
+
'upsert',
|
|
48
|
+
'fts',
|
|
49
|
+
'concat',
|
|
50
|
+
'booleanNot',
|
|
51
|
+
'types',
|
|
52
|
+
'paramLimit',
|
|
53
|
+
'retryableCodes',
|
|
54
|
+
'acceptsOperator',
|
|
55
|
+
'functions',
|
|
56
|
+
'procedures',
|
|
57
|
+
'tableFunctions',
|
|
58
|
+
'vectorDistance',
|
|
59
|
+
'spatialPredicates',
|
|
60
|
+
]);
|
|
61
|
+
exactKeys('SQL type', dialect.traits.types, DIALECT_SQL_TYPES);
|
|
62
|
+
exactKeys('returning trait', dialect.traits.returning, ['insert', 'upsert', 'update', 'delete']);
|
|
63
|
+
exactKeys('database capability', dialect.capabilities, [
|
|
64
|
+
'returning',
|
|
65
|
+
'transactionalDdl',
|
|
66
|
+
'schemas',
|
|
67
|
+
'sequences',
|
|
68
|
+
'generatedColumns',
|
|
69
|
+
'partialIndexes',
|
|
70
|
+
'foreignKeys',
|
|
71
|
+
'rowLevelSecurity',
|
|
72
|
+
'streaming',
|
|
73
|
+
'cancellation',
|
|
74
|
+
]);
|
|
75
|
+
exactKeys('returning capability', dialect.capabilities.returning, ['insert', 'upsert', 'update', 'delete']);
|
|
76
|
+
if (dialect.traits.quote.length !== 2 || dialect.traits.quote.some(part => typeof part !== 'string')) {
|
|
77
|
+
throw new TypeError(`${dialect.name} dialect quote must contain two strings`);
|
|
78
|
+
}
|
|
79
|
+
if (!Number.isSafeInteger(dialect.traits.paramLimit) || dialect.traits.paramLimit <= 0) {
|
|
80
|
+
throw new TypeError(`${dialect.name} dialect paramLimit must be a positive safe integer`);
|
|
81
|
+
}
|
|
82
|
+
if (dialect.traits.retryableCodes.some(code => typeof code !== 'string')) {
|
|
83
|
+
throw new TypeError(`${dialect.name} dialect retryableCodes must contain strings`);
|
|
84
|
+
}
|
|
85
|
+
for (const key of ['paginate', 'acceptsOperator']) {
|
|
86
|
+
requiredFunction(dialect.traits, key, `${dialect.name} dialect traits`);
|
|
87
|
+
}
|
|
88
|
+
if (typeof dialect.traits.paginationRequiresOrder !== 'boolean') {
|
|
89
|
+
throw new TypeError(`${dialect.name} dialect trait paginationRequiresOrder must be boolean`);
|
|
90
|
+
}
|
|
91
|
+
if (typeof dialect.traits.rowValueIn !== 'boolean') {
|
|
92
|
+
throw new TypeError(`${dialect.name} dialect trait rowValueIn must be boolean`);
|
|
93
|
+
}
|
|
94
|
+
for (const key of ['functions', 'procedures', 'tableFunctions', 'vectorDistance', 'spatialPredicates']) {
|
|
95
|
+
if (typeof dialect.traits[key] !== 'boolean') {
|
|
96
|
+
throw new TypeError(`${dialect.name} dialect trait ${key} must be boolean`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const key of [
|
|
100
|
+
'transactionalDdl',
|
|
101
|
+
'schemas',
|
|
102
|
+
'sequences',
|
|
103
|
+
'generatedColumns',
|
|
104
|
+
'partialIndexes',
|
|
105
|
+
'foreignKeys',
|
|
106
|
+
'rowLevelSecurity',
|
|
107
|
+
'streaming',
|
|
108
|
+
'cancellation',
|
|
109
|
+
]) {
|
|
110
|
+
if (typeof dialect.capabilities[key] !== 'boolean') {
|
|
111
|
+
throw new TypeError(`${dialect.name} capability ${key} must be boolean`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
for (const statement of ['insert', 'upsert', 'update', 'delete']) {
|
|
115
|
+
const supported = dialect.traits.returning[statement] !== 'none';
|
|
116
|
+
if (typeof dialect.capabilities.returning[statement] !== 'boolean') {
|
|
117
|
+
throw new TypeError(`${dialect.name} RETURNING capability ${statement} must be boolean`);
|
|
118
|
+
}
|
|
119
|
+
if (dialect.capabilities.returning[statement] !== supported) {
|
|
120
|
+
throw new TypeError(`${dialect.name} has inconsistent RETURNING evidence for ${statement}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (dialect.migrations.name !== dialect.name) {
|
|
124
|
+
throw new TypeError(`${dialect.name} carries migrations for ${dialect.migrations.name}`);
|
|
125
|
+
}
|
|
126
|
+
if (dialect.introspector.name !== dialect.name) {
|
|
127
|
+
throw new TypeError(`${dialect.name} carries an introspector for ${dialect.introspector.name}`);
|
|
128
|
+
}
|
|
129
|
+
for (const key of [
|
|
130
|
+
'validateSnapshot',
|
|
131
|
+
'validatePlan',
|
|
132
|
+
'ddlType',
|
|
133
|
+
'emitUp',
|
|
134
|
+
'emitDown',
|
|
135
|
+
'emitSchemaObject',
|
|
136
|
+
'connection',
|
|
137
|
+
]) {
|
|
138
|
+
requiredFunction(dialect.migrations, key, `${dialect.name} migrations`);
|
|
139
|
+
}
|
|
140
|
+
for (const key of ['snapshot', 'normalizeForDrift']) {
|
|
141
|
+
requiredFunction(dialect.introspector, key, `${dialect.name} introspector`);
|
|
142
|
+
}
|
|
143
|
+
const compilerRequired = Object.values(dialect.traits.returning).includes('output') || dialect.traits.upsert === 'merge';
|
|
144
|
+
if (compilerRequired && dialect.compiler === undefined) {
|
|
145
|
+
throw new TypeError(`${dialect.name} requires a compiler strategy for its returning or upsert traits`);
|
|
146
|
+
}
|
|
147
|
+
if (dialect.compiler !== undefined) {
|
|
148
|
+
for (const key of ['returning', 'upsert']) {
|
|
149
|
+
requiredFunction(dialect.compiler, key, `${dialect.name} compiler`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (dialect.outbox !== undefined) {
|
|
153
|
+
exactKeys(`${dialect.name} outbox`, dialect.outbox, [
|
|
154
|
+
'createTable',
|
|
155
|
+
'pendingIndex',
|
|
156
|
+
'epochLiteral',
|
|
157
|
+
'createdAtDefault',
|
|
158
|
+
'boundedTextType',
|
|
159
|
+
]);
|
|
160
|
+
if (dialect.outbox.pendingIndex !== 'filtered' && dialect.outbox.pendingIndex !== 'full') {
|
|
161
|
+
throw new TypeError(`${dialect.name} outbox pendingIndex must be filtered or full`);
|
|
162
|
+
}
|
|
163
|
+
for (const key of ['createTable', 'epochLiteral', 'createdAtDefault']) {
|
|
164
|
+
if (typeof dialect.outbox[key] !== 'string' || dialect.outbox[key].length === 0) {
|
|
165
|
+
throw new TypeError(`${dialect.name} outbox ${key} must be a non-empty string`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
requiredFunction(dialect.outbox, 'boundedTextType', `${dialect.name} outbox`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export function defineSqlDialect(definition) {
|
|
172
|
+
assertSqlDialect(definition);
|
|
173
|
+
return deepFreeze(definition);
|
|
174
|
+
}
|
|
175
|
+
export function extendSqlDialect(parent, extension) {
|
|
176
|
+
const traitOverrides = extension.traits;
|
|
177
|
+
const capabilityOverrides = extension.capabilities;
|
|
178
|
+
const quote = traitOverrides?.quote ?? parent.traits.quote;
|
|
179
|
+
const traits = {
|
|
180
|
+
...parent.traits,
|
|
181
|
+
...traitOverrides,
|
|
182
|
+
quote: Object.freeze([quote[0], quote[1]]),
|
|
183
|
+
returning: Object.freeze({
|
|
184
|
+
...parent.traits.returning,
|
|
185
|
+
...traitOverrides?.returning,
|
|
186
|
+
}),
|
|
187
|
+
types: Object.freeze({
|
|
188
|
+
...parent.traits.types,
|
|
189
|
+
...traitOverrides?.types,
|
|
190
|
+
}),
|
|
191
|
+
retryableCodes: Object.freeze([...(traitOverrides?.retryableCodes ?? parent.traits.retryableCodes)]),
|
|
192
|
+
};
|
|
193
|
+
const capabilities = {
|
|
194
|
+
...parent.capabilities,
|
|
195
|
+
...capabilityOverrides,
|
|
196
|
+
returning: Object.freeze({
|
|
197
|
+
...parent.capabilities.returning,
|
|
198
|
+
...capabilityOverrides?.returning,
|
|
199
|
+
}),
|
|
200
|
+
};
|
|
201
|
+
return defineSqlDialect({
|
|
202
|
+
name: extension.name,
|
|
203
|
+
family: parent.family,
|
|
204
|
+
telemetrySystem: extension.telemetrySystem ?? parent.telemetrySystem,
|
|
205
|
+
traits,
|
|
206
|
+
capabilities,
|
|
207
|
+
migrations: extension.migrations,
|
|
208
|
+
introspector: extension.introspector,
|
|
209
|
+
...((extension.compiler ?? parent.compiler) === undefined
|
|
210
|
+
? {}
|
|
211
|
+
: { compiler: extension.compiler ?? parent.compiler }),
|
|
212
|
+
...((extension.outbox ?? parent.outbox) === undefined ? {} : { outbox: extension.outbox ?? parent.outbox }),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
export function isSqlDialect(value) {
|
|
216
|
+
if (value === null || typeof value !== 'object')
|
|
217
|
+
return false;
|
|
218
|
+
return (typeof Reflect.get(value, 'name') === 'string' &&
|
|
219
|
+
typeof Reflect.get(value, 'family') === 'string' &&
|
|
220
|
+
typeof Reflect.get(value, 'telemetrySystem') === 'string' &&
|
|
221
|
+
Reflect.get(value, 'traits') !== null &&
|
|
222
|
+
typeof Reflect.get(value, 'traits') === 'object' &&
|
|
223
|
+
Reflect.get(value, 'capabilities') !== null &&
|
|
224
|
+
typeof Reflect.get(value, 'capabilities') === 'object' &&
|
|
225
|
+
Reflect.get(value, 'migrations') !== null &&
|
|
226
|
+
typeof Reflect.get(value, 'migrations') === 'object' &&
|
|
227
|
+
Reflect.get(value, 'introspector') !== null &&
|
|
228
|
+
typeof Reflect.get(value, 'introspector') === 'object');
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/dialects/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class QueryCompilerError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class UnsupportedFeatureError extends Error {
|
|
5
|
+
readonly feature: string;
|
|
6
|
+
readonly dialect: string;
|
|
7
|
+
constructor(feature: string, dialect: string, message?: string);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,SAAwD,EAK5G;CACF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class QueryCompilerError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'QueryCompilerError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class UnsupportedFeatureError extends Error {
|
|
8
|
+
feature;
|
|
9
|
+
dialect;
|
|
10
|
+
constructor(feature, dialect, message = `${feature} is not supported on dialect "${dialect}"`) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'UnsupportedFeatureError';
|
|
13
|
+
this.feature = feature;
|
|
14
|
+
this.dialect = dialect;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,OAAO,CAAS;IAChB,OAAO,CAAS;IAEzB,YAAY,OAAe,EAAE,OAAe,EAAE,OAAO,GAAG,GAAG,OAAO,iCAAiC,OAAO,GAAG;QAC3G,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|