@warlock.js/cascade 4.0.161 → 4.0.162

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 (29) hide show
  1. package/esm/context/database-data-source-context.d.ts +29 -0
  2. package/esm/context/database-data-source-context.d.ts.map +1 -0
  3. package/esm/context/database-data-source-context.js +28 -0
  4. package/esm/context/database-data-source-context.js.map +1 -0
  5. package/esm/context/database-transaction-context.d.ts +35 -0
  6. package/esm/context/database-transaction-context.d.ts.map +1 -0
  7. package/esm/context/database-transaction-context.js +40 -0
  8. package/esm/context/database-transaction-context.js.map +1 -0
  9. package/esm/contracts/database-driver.contract.d.ts +450 -0
  10. package/esm/contracts/database-driver.contract.d.ts.map +1 -0
  11. package/esm/contracts/database-id-generator.contract.d.ts +109 -0
  12. package/esm/contracts/database-id-generator.contract.d.ts.map +1 -0
  13. package/esm/contracts/database-remover.contract.d.ts +104 -0
  14. package/esm/contracts/database-remover.contract.d.ts.map +1 -0
  15. package/esm/contracts/database-restorer.contract.d.ts +143 -0
  16. package/esm/contracts/database-restorer.contract.d.ts.map +1 -0
  17. package/esm/contracts/database-writer.contract.d.ts +119 -0
  18. package/esm/contracts/database-writer.contract.d.ts.map +1 -0
  19. package/esm/contracts/driver-blueprint.contract.d.ts +49 -0
  20. package/esm/contracts/driver-blueprint.contract.d.ts.map +1 -0
  21. package/esm/contracts/index.d.ts +10 -0
  22. package/esm/contracts/index.d.ts.map +1 -0
  23. package/esm/contracts/migration-driver.contract.d.ts +522 -0
  24. package/esm/contracts/migration-driver.contract.d.ts.map +1 -0
  25. package/esm/contracts/query-builder.contract.d.ts +1609 -0
  26. package/esm/contracts/query-builder.contract.d.ts.map +1 -0
  27. package/esm/contracts/sync-adapter.contract.d.ts +58 -0
  28. package/esm/contracts/sync-adapter.contract.d.ts.map +1 -0
  29. package/package.json +4 -4
@@ -0,0 +1,522 @@
1
+ import type { DataSource } from "../data-source/data-source";
2
+ import type { MigrationDefaults } from "../types";
3
+ import type { DriverContract } from "./database-driver.contract";
4
+ import type { TableIndexInformation } from "./driver-blueprint.contract";
5
+ export type { TableIndexInformation };
6
+ /**
7
+ * Column data types supported across all database drivers.
8
+ */
9
+ export type ColumnType = "string" | "char" | "text" | "mediumText" | "longText" | "integer" | "smallInteger" | "tinyInteger" | "bigInteger" | "float" | "double" | "decimal" | "boolean" | "date" | "dateTime" | "timestamp" | "time" | "year" | "json" | "binary" | "uuid" | "ulid" | "ipAddress" | "macAddress" | "point" | "polygon" | "lineString" | "geometry" | "vector" | "enum" | "set" | "arrayInt" | "arrayBigInt" | "arrayFloat" | "arrayDecimal" | "arrayBoolean" | "arrayText" | "arrayDate" | "arrayTimestamp" | "arrayUuid";
10
+ /**
11
+ * Column definition used when adding or modifying columns.
12
+ */
13
+ export type ColumnDefinition = {
14
+ /** Column name */
15
+ name: string;
16
+ /** Column data type */
17
+ type: ColumnType;
18
+ /** Length for string/char types */
19
+ length?: number;
20
+ /** Precision for decimal types */
21
+ precision?: number;
22
+ /** Scale for decimal types */
23
+ scale?: number;
24
+ /** Whether the column allows NULL values */
25
+ nullable?: boolean;
26
+ /** Default value for the column (can be a primitive, SQL string, or {__type: 'CURRENT_TIMESTAMP'}) */
27
+ defaultValue?: unknown;
28
+ /** MySQL: ON UPDATE CURRENT_TIMESTAMP */
29
+ onUpdateCurrent?: boolean;
30
+ /** Whether this is a primary key */
31
+ primary?: boolean;
32
+ /** Whether this column auto-increments */
33
+ autoIncrement?: boolean;
34
+ /** Whether this column must be unsigned (numeric only) */
35
+ unsigned?: boolean;
36
+ /** Whether this column has a unique constraint */
37
+ unique?: boolean;
38
+ /** Column comment/description */
39
+ comment?: string;
40
+ /** Enum/set values */
41
+ values?: string[];
42
+ /** Vector dimensions (for vector type) */
43
+ dimensions?: number;
44
+ /** Whether defaultValue should be treated as raw SQL (true) or escaped literal (false) */
45
+ isRawDefault?: boolean;
46
+ /** Position this column after another column */
47
+ after?: string;
48
+ /** Position this column as the first column in the table */
49
+ first?: boolean;
50
+ /** Generated column configuration */
51
+ generated?: {
52
+ /** SQL expression to compute the value */
53
+ expression: string;
54
+ /** true = STORED (persisted), false = VIRTUAL (computed on read) */
55
+ stored: boolean;
56
+ };
57
+ /** Inline CHECK constraint on this column */
58
+ checkConstraint?: {
59
+ expression: string;
60
+ name: string;
61
+ };
62
+ };
63
+ /**
64
+ * Index definition for creating database indexes.
65
+ */
66
+ export type IndexDefinition = {
67
+ /** Index name (auto-generated if not provided) */
68
+ readonly name?: string;
69
+ /** Columns included in the index */
70
+ readonly columns: string[];
71
+ /** Whether this is a unique index */
72
+ readonly unique?: boolean;
73
+ /** Index type (driver-specific) */
74
+ readonly type?: string;
75
+ /** Partial index condition */
76
+ readonly where?: Record<string, unknown>;
77
+ /** Whether to create sparse index (MongoDB) */
78
+ readonly sparse?: boolean;
79
+ /** Sort direction for each column */
80
+ readonly directions?: Array<"asc" | "desc">;
81
+ /** Expression-based index (PostgreSQL) - e.g., ['lower(email)', 'upper(name)'] */
82
+ readonly expressions?: string[];
83
+ /** Covering index columns (PostgreSQL INCLUDE clause) */
84
+ readonly include?: string[];
85
+ /** Create index concurrently without blocking writes (PostgreSQL) */
86
+ readonly concurrently?: boolean;
87
+ };
88
+ /**
89
+ * Full-text search index options.
90
+ */
91
+ export type FullTextIndexOptions = {
92
+ /** Index name */
93
+ readonly name?: string;
94
+ /** Language for text analysis */
95
+ readonly language?: string;
96
+ /** Field weights for relevance scoring */
97
+ readonly weights?: Record<string, number>;
98
+ };
99
+ /**
100
+ * Geo-spatial index options.
101
+ */
102
+ export type GeoIndexOptions = {
103
+ /** Index name */
104
+ readonly name?: string;
105
+ /** Index type: "2dsphere" (default) or "2d" */
106
+ readonly type?: "2dsphere" | "2d";
107
+ /** Minimum bound for 2d index */
108
+ readonly min?: number;
109
+ /** Maximum bound for 2d index */
110
+ readonly max?: number;
111
+ };
112
+ /**
113
+ * Vector index options for AI/ML embeddings.
114
+ */
115
+ export type VectorIndexOptions = {
116
+ /** Vector dimensions (e.g., 1536 for OpenAI) */
117
+ readonly dimensions: number;
118
+ /** Similarity metric */
119
+ readonly similarity?: "cosine" | "euclidean" | "dotProduct";
120
+ /** Index name */
121
+ readonly name?: string;
122
+ /** Number of lists/clusters (IVF) */
123
+ readonly lists?: number;
124
+ };
125
+ /**
126
+ * Foreign key constraint definition (SQL only).
127
+ */
128
+ export type ForeignKeyDefinition = {
129
+ /** Constraint name */
130
+ readonly name?: string;
131
+ /** Local column name */
132
+ readonly column: string;
133
+ /** Referenced table */
134
+ readonly referencesTable: string;
135
+ /** Referenced column */
136
+ readonly referencesColumn: string;
137
+ /** Action on delete */
138
+ readonly onDelete?: "cascade" | "restrict" | "setNull" | "noAction";
139
+ /** Action on update */
140
+ readonly onUpdate?: "cascade" | "restrict" | "setNull" | "noAction";
141
+ };
142
+ /**
143
+ * Contract that all migration drivers must implement.
144
+ *
145
+ * Each database driver provides its own implementation that translates
146
+ * the abstract operations to native database commands.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const driver = new MongoMigrationDriver(dataSource);
151
+ * await driver.createIndex("users", { columns: ["email"], unique: true });
152
+ * ```
153
+ */
154
+ export interface MigrationDriverContract {
155
+ /**
156
+ * Create a new table or collection.
157
+ *
158
+ * @param table - Table/collection name
159
+ */
160
+ createTable(table: string): Promise<void>;
161
+ /**
162
+ * Create a new table or collection if it doesn't exist.
163
+ *
164
+ * @param table - Table/collection name
165
+ */
166
+ createTableIfNotExists(table: string): Promise<void>;
167
+ /**
168
+ * Drop an existing table or collection.
169
+ *
170
+ * @param table - Table/collection name
171
+ */
172
+ dropTable(table: string): Promise<void>;
173
+ /**
174
+ * Drop table if it exists (no error if missing).
175
+ *
176
+ * @param table - Table/collection name
177
+ */
178
+ dropTableIfExists(table: string): Promise<void>;
179
+ /**
180
+ * Rename a table or collection.
181
+ *
182
+ * @param from - Current table name
183
+ * @param to - New table name
184
+ */
185
+ renameTable(from: string, to: string): Promise<void>;
186
+ /**
187
+ * Truncate a table — remove all rows efficiently.
188
+ *
189
+ * @param table - Table name
190
+ */
191
+ truncateTable(table: string): Promise<void>;
192
+ /**
193
+ * Check if a table or collection exists.
194
+ *
195
+ * @param table - Table/collection name
196
+ * @returns True if table exists
197
+ */
198
+ tableExists(table: string): Promise<boolean>;
199
+ /**
200
+ * List all columns in a table.
201
+ *
202
+ * @param table - Table name
203
+ * @returns Array of column definitions
204
+ */
205
+ listColumns(table: string): Promise<ColumnDefinition[]>;
206
+ /**
207
+ * List all tables in the current database/connection.
208
+ *
209
+ * @returns Array of table names
210
+ */
211
+ listTables(): Promise<string[]>;
212
+ /**
213
+ * Ensure the migrations tracking table exists.
214
+ *
215
+ * Creates the table with appropriate columns if it doesn't exist:
216
+ * - `name` (string, unique) - Migration name
217
+ * - `batch` (integer) - Batch number
218
+ * - `executedAt` (timestamp) - When the migration was executed
219
+ * - `createdAt` (timestamp, optional) - Migration creation date
220
+ *
221
+ * @param tableName - Name of the migrations table (default: "_migrations")
222
+ */
223
+ ensureMigrationsTable(tableName: string): Promise<void>;
224
+ /**
225
+ * Add a column to an existing table.
226
+ *
227
+ * Note: This is a no-op for schema-less databases like MongoDB.
228
+ *
229
+ * @param table - Table name
230
+ * @param column - Column definition
231
+ */
232
+ addColumn(table: string, column: ColumnDefinition): Promise<void>;
233
+ /**
234
+ * Drop a column from an existing table.
235
+ *
236
+ * Note: For MongoDB, this optionally runs $unset on all documents.
237
+ *
238
+ * @param table - Table name
239
+ * @param column - Column name to drop
240
+ */
241
+ dropColumn(table: string, column: string): Promise<void>;
242
+ /**
243
+ * Drop multiple columns from an existing table.
244
+ *
245
+ * @param table - Table name
246
+ * @param columns - Column names to drop
247
+ */
248
+ dropColumns(table: string, columns: string[]): Promise<void>;
249
+ /**
250
+ * Rename a column.
251
+ *
252
+ * @param table - Table name
253
+ * @param from - Current column name
254
+ * @param to - New column name
255
+ */
256
+ renameColumn(table: string, from: string, to: string): Promise<void>;
257
+ /**
258
+ * Modify an existing column's definition.
259
+ *
260
+ * @param table - Table name
261
+ * @param column - New column definition (name must match existing)
262
+ */
263
+ modifyColumn(table: string, column: ColumnDefinition): Promise<void>;
264
+ /**
265
+ * Create standard timestamp columns (created_at, updated_at).
266
+ *
267
+ * Implementation varies by database driver:
268
+ * - PostgreSQL: Creates TIMESTAMPTZ columns with NOW() defaults
269
+ * - MongoDB: No-op or schema validation (application handles timestamps)
270
+ *
271
+ * @param table - Table name
272
+ */
273
+ createTimestampColumns(table: string): Promise<void>;
274
+ /**
275
+ * Create an index on one or more columns.
276
+ *
277
+ * @param table - Table name
278
+ * @param index - Index definition
279
+ */
280
+ createIndex(table: string, index: IndexDefinition): Promise<void>;
281
+ /**
282
+ * Drop an index by name or columns.
283
+ *
284
+ * @param table - Table name
285
+ * @param indexNameOrColumns - Index name (string) or columns array
286
+ */
287
+ dropIndex(table: string, indexNameOrColumns: string | string[]): Promise<void>;
288
+ /**
289
+ * Create a unique index/constraint.
290
+ *
291
+ * @param table - Table name
292
+ * @param columns - Columns to include
293
+ * @param name - Optional index name
294
+ */
295
+ createUniqueIndex(table: string, columns: string[], name?: string): Promise<void>;
296
+ /**
297
+ * Drop a unique index/constraint.
298
+ *
299
+ * @param table - Table name
300
+ * @param columns - Columns in the index (used to find it)
301
+ */
302
+ dropUniqueIndex(table: string, columns: string[]): Promise<void>;
303
+ /**
304
+ * Create a full-text search index.
305
+ *
306
+ * @param table - Table name
307
+ * @param columns - Columns to index
308
+ * @param options - Full-text options
309
+ */
310
+ createFullTextIndex(table: string, columns: string[], options?: FullTextIndexOptions): Promise<void>;
311
+ /**
312
+ * Drop a full-text search index.
313
+ *
314
+ * @param table - Table name
315
+ * @param name - Index name
316
+ */
317
+ dropFullTextIndex(table: string, name: string): Promise<void>;
318
+ /**
319
+ * Create a geo-spatial index.
320
+ *
321
+ * @param table - Table name
322
+ * @param column - Geo column
323
+ * @param options - Geo index options
324
+ */
325
+ createGeoIndex(table: string, column: string, options?: GeoIndexOptions): Promise<void>;
326
+ /**
327
+ * Drop a geo-spatial index.
328
+ *
329
+ * @param table - Table name
330
+ * @param column - Geo column (used to find index)
331
+ */
332
+ dropGeoIndex(table: string, column: string): Promise<void>;
333
+ /**
334
+ * Create a vector search index for AI embeddings.
335
+ *
336
+ * @param table - Table name
337
+ * @param column - Vector column
338
+ * @param options - Vector index options
339
+ */
340
+ createVectorIndex(table: string, column: string, options: VectorIndexOptions): Promise<void>;
341
+ /**
342
+ * Drop a vector search index.
343
+ *
344
+ * @param table - Table name
345
+ * @param column - Vector column
346
+ */
347
+ dropVectorIndex(table: string, column: string): Promise<void>;
348
+ /**
349
+ * Create a TTL (time-to-live) index for automatic document expiration.
350
+ *
351
+ * Note: Primarily for MongoDB. SQL databases may throw "not supported".
352
+ *
353
+ * @param table - Table name
354
+ * @param column - Date column to check for expiration
355
+ * @param expireAfterSeconds - Seconds after which documents expire
356
+ */
357
+ createTTLIndex(table: string, column: string, expireAfterSeconds: number): Promise<void>;
358
+ /**
359
+ * Drop a TTL index.
360
+ *
361
+ * @param table - Table name
362
+ * @param column - Column with TTL index
363
+ */
364
+ dropTTLIndex(table: string, column: string): Promise<void>;
365
+ /**
366
+ * List all indexes on a table.
367
+ *
368
+ * @param table - Table name
369
+ * @returns Array of index metadata
370
+ */
371
+ listIndexes(table: string): Promise<TableIndexInformation[]>;
372
+ /**
373
+ * Add a foreign key constraint.
374
+ *
375
+ * Note: No-op for MongoDB.
376
+ *
377
+ * @param table - Table name
378
+ * @param foreignKey - Foreign key definition
379
+ */
380
+ addForeignKey(table: string, foreignKey: ForeignKeyDefinition): Promise<void>;
381
+ /**
382
+ * Drop a foreign key constraint.
383
+ *
384
+ * @param table - Table name
385
+ * @param name - Constraint name
386
+ */
387
+ dropForeignKey(table: string, name: string): Promise<void>;
388
+ /**
389
+ * Add a primary key constraint.
390
+ *
391
+ * @param table - Table name
392
+ * @param columns - Primary key columns
393
+ */
394
+ addPrimaryKey(table: string, columns: string[]): Promise<void>;
395
+ /**
396
+ * Drop the primary key constraint.
397
+ *
398
+ * @param table - Table name
399
+ */
400
+ dropPrimaryKey(table: string): Promise<void>;
401
+ /**
402
+ * Add a CHECK constraint.
403
+ *
404
+ * Validates that all rows satisfy the given SQL expression.
405
+ *
406
+ * @param table - Table name
407
+ * @param name - Constraint name
408
+ * @param expression - SQL CHECK expression
409
+ */
410
+ addCheck(table: string, name: string, expression: string): Promise<void>;
411
+ /**
412
+ * Drop a CHECK constraint.
413
+ *
414
+ * @param table - Table name
415
+ * @param name - Constraint name
416
+ */
417
+ dropCheck(table: string, name: string): Promise<void>;
418
+ /**
419
+ * Set JSON schema validation rules on a collection.
420
+ *
421
+ * Note: Primarily for MongoDB. SQL databases ignore this.
422
+ *
423
+ * @param table - Collection name
424
+ * @param schema - JSON Schema object
425
+ */
426
+ setSchemaValidation(table: string, schema: object): Promise<void>;
427
+ /**
428
+ * Remove schema validation rules from a collection.
429
+ *
430
+ * @param table - Collection name
431
+ */
432
+ removeSchemaValidation(table: string): Promise<void>;
433
+ /**
434
+ * Begin a database transaction.
435
+ */
436
+ beginTransaction(): Promise<void>;
437
+ /**
438
+ * Commit the current transaction.
439
+ */
440
+ commit(): Promise<void>;
441
+ /**
442
+ * Rollback the current transaction.
443
+ */
444
+ rollback(): Promise<void>;
445
+ /**
446
+ * Whether the driver supports transactions.
447
+ */
448
+ supportsTransactions(): boolean;
449
+ /**
450
+ * Get the default transactional behavior for this driver.
451
+ *
452
+ * This determines whether migrations should be wrapped in transactions
453
+ * by default when no explicit configuration is provided.
454
+ *
455
+ * - **PostgreSQL**: Returns `true` (DDL operations are transactional)
456
+ * - **MongoDB**: Returns `false` (DDL operations cannot be transactional)
457
+ *
458
+ * Can be overridden by:
459
+ * 1. Migration-level `transactional` property
460
+ * 2. Config-level `migrations.transactional` option
461
+ *
462
+ * @returns true if migrations should be transactional by default
463
+ */
464
+ getDefaultTransactional(): boolean;
465
+ /**
466
+ * Get the default UUID generation expression for this driver.
467
+ *
468
+ * Used by `Migration.primaryUuid()` to set driver-appropriate defaults.
469
+ * SQL drivers return a native expression (e.g., `gen_random_uuid()`).
470
+ * NoSQL drivers return `undefined` (application-level UUID generation).
471
+ *
472
+ * @param migrationDefaults - Optional overrides from DataSource config
473
+ * @returns SQL expression string, or undefined for schema-less DBs
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * // PostgreSQL with default v4
478
+ * driver.getUuidDefault(); // "gen_random_uuid()"
479
+ *
480
+ * // PostgreSQL with v7 override
481
+ * driver.getUuidDefault({ uuidStrategy: "v7" }); // "uuid_generate_v7()"
482
+ *
483
+ * // PostgreSQL with raw expression escape hatch
484
+ * driver.getUuidDefault({ uuidExpression: "uuid_generate_v1mc()" });
485
+ * // "uuid_generate_v1mc()"
486
+ *
487
+ * // MongoDB
488
+ * driver.getUuidDefault(); // undefined
489
+ * ```
490
+ */
491
+ getUuidDefault(migrationDefaults?: MigrationDefaults): string | undefined;
492
+ /**
493
+ * Check if a database extension/plugin is available on the database server.
494
+ *
495
+ * @param extension - Name of the extension
496
+ * @returns true if available, or if the database doesn't require explicit extension installation
497
+ */
498
+ isExtensionAvailable(extension: string): Promise<boolean>;
499
+ /**
500
+ * Get the official documentation or installation URL for a database extension.
501
+ *
502
+ * @param extension - Extension name
503
+ * @returns URL string, or undefined to fall back to a generic search approach
504
+ */
505
+ getExtensionDocsUrl(extension: string): string | undefined;
506
+ /**
507
+ * Execute raw operations with direct driver access.
508
+ *
509
+ * @param callback - Callback receiving the native driver/connection
510
+ * @returns Result from callback
511
+ */
512
+ raw<T>(callback: (connection: unknown) => Promise<T>): Promise<T>;
513
+ /**
514
+ * Get database driver
515
+ */
516
+ driver: DriverContract;
517
+ }
518
+ /**
519
+ * Factory function type for creating migration drivers.
520
+ */
521
+ export type MigrationDriverFactory = (source: DataSource | DriverContract) => MigrationDriverContract;
522
+ //# sourceMappingURL=migration-driver.contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-driver.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/migration-driver.contract.ts"],"names":[],"mappings":"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"}