@zauso-ai/capstan-db 1.0.0-beta.6 → 1.0.0-beta.8

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.
@@ -0,0 +1,208 @@
1
+ const SQLITE_UUID_SQL = "(lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || " +
2
+ "substr(lower(hex(randomblob(2))), 2) || '-' || " +
3
+ "substr('89ab', abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))), 2) || '-' || " +
4
+ "lower(hex(randomblob(6))))";
5
+ export function providerMeta(provider) {
6
+ switch (provider) {
7
+ case "sqlite":
8
+ case "libsql":
9
+ return {
10
+ tableBuilder: "sqliteTable",
11
+ importModule: "drizzle-orm/sqlite-core",
12
+ nowDefaultSql: "(datetime('now'))",
13
+ };
14
+ case "postgres":
15
+ return {
16
+ tableBuilder: "pgTable",
17
+ importModule: "drizzle-orm/pg-core",
18
+ nowDefaultSql: "now()",
19
+ };
20
+ case "mysql":
21
+ return {
22
+ tableBuilder: "mysqlTable",
23
+ importModule: "drizzle-orm/mysql-core",
24
+ nowDefaultSql: "CURRENT_TIMESTAMP",
25
+ };
26
+ }
27
+ }
28
+ function sqliteColumnMapping(fieldType) {
29
+ switch (fieldType) {
30
+ case "string":
31
+ case "text":
32
+ case "date":
33
+ case "datetime":
34
+ return { builder: "text", import: "text", sqlType: "TEXT" };
35
+ case "integer":
36
+ return { builder: "integer", import: "integer", sqlType: "INTEGER" };
37
+ case "number":
38
+ return { builder: "real", import: "real", sqlType: "REAL" };
39
+ case "boolean":
40
+ return { builder: "integer", import: "integer", config: '{ mode: "boolean" }', sqlType: "INTEGER" };
41
+ case "json":
42
+ return { builder: "text", import: "text", config: '{ mode: "json" }', sqlType: "TEXT" };
43
+ case "vector":
44
+ return { builder: "text", import: "text", config: '{ mode: "json" }', sqlType: "TEXT" };
45
+ }
46
+ }
47
+ function pgColumnMapping(fieldType, dimensions) {
48
+ switch (fieldType) {
49
+ case "string":
50
+ return { builder: "varchar", import: "varchar", config: "{ length: 255 }", sqlType: "VARCHAR(255)" };
51
+ case "text":
52
+ return { builder: "text", import: "text", sqlType: "TEXT" };
53
+ case "date":
54
+ return { builder: "date", import: "date", sqlType: "DATE" };
55
+ case "datetime":
56
+ return { builder: "timestamp", import: "timestamp", sqlType: "TIMESTAMP" };
57
+ case "integer":
58
+ return { builder: "integer", import: "integer", sqlType: "INTEGER" };
59
+ case "number":
60
+ return { builder: "doublePrecision", import: "doublePrecision", sqlType: "DOUBLE PRECISION" };
61
+ case "boolean":
62
+ return { builder: "boolean", import: "boolean", sqlType: "BOOLEAN" };
63
+ case "json":
64
+ return { builder: "jsonb", import: "jsonb", sqlType: "JSONB" };
65
+ case "vector":
66
+ return {
67
+ builder: "vector",
68
+ import: "vector",
69
+ config: `{ dimensions: ${dimensions ?? 1536} }`,
70
+ sqlType: `vector(${dimensions ?? 1536})`,
71
+ };
72
+ }
73
+ }
74
+ function mysqlColumnMapping(fieldType) {
75
+ switch (fieldType) {
76
+ case "string":
77
+ return { builder: "varchar", import: "varchar", config: "{ length: 255 }", sqlType: "VARCHAR(255)" };
78
+ case "text":
79
+ return { builder: "text", import: "text", sqlType: "TEXT" };
80
+ case "date":
81
+ return { builder: "date", import: "date", sqlType: "DATE" };
82
+ case "datetime":
83
+ return { builder: "datetime", import: "datetime", sqlType: "DATETIME" };
84
+ case "integer":
85
+ return { builder: "int", import: "int", sqlType: "INT" };
86
+ case "number":
87
+ return { builder: "double", import: "double", sqlType: "DOUBLE" };
88
+ case "boolean":
89
+ return { builder: "boolean", import: "boolean", sqlType: "BOOLEAN" };
90
+ case "json":
91
+ return { builder: "json", import: "json", sqlType: "JSON" };
92
+ case "vector":
93
+ return { builder: "json", import: "json", sqlType: "JSON" };
94
+ }
95
+ }
96
+ export function columnMapping(fieldType, provider, dimensions) {
97
+ switch (provider) {
98
+ case "sqlite":
99
+ case "libsql":
100
+ return sqliteColumnMapping(fieldType);
101
+ case "postgres":
102
+ return pgColumnMapping(fieldType, dimensions);
103
+ case "mysql":
104
+ return mysqlColumnMapping(fieldType);
105
+ }
106
+ }
107
+ export function columnMappingForReference(targetField, provider) {
108
+ if (targetField.autoId) {
109
+ switch (provider) {
110
+ case "sqlite":
111
+ case "libsql":
112
+ return { builder: "text", import: "text", sqlType: "TEXT" };
113
+ case "postgres":
114
+ return { builder: "uuid", import: "uuid", sqlType: "UUID" };
115
+ case "mysql":
116
+ return { builder: "varchar", import: "varchar", config: "{ length: 36 }", sqlType: "VARCHAR(36)" };
117
+ }
118
+ }
119
+ return columnMapping(targetField.type, provider, targetField.dimensions);
120
+ }
121
+ export function sqlTypeForField(def, provider) {
122
+ if (def.autoId) {
123
+ switch (provider) {
124
+ case "sqlite":
125
+ case "libsql":
126
+ return "TEXT";
127
+ case "postgres":
128
+ return "UUID";
129
+ case "mysql":
130
+ return "VARCHAR(36)";
131
+ }
132
+ }
133
+ return columnMapping(def.type, provider, def.dimensions).sqlType;
134
+ }
135
+ export function sqlTypeForReference(targetField, provider) {
136
+ return columnMappingForReference(targetField, provider).sqlType;
137
+ }
138
+ export function autoIdSchemaExpr(columnName, provider) {
139
+ switch (provider) {
140
+ case "sqlite":
141
+ case "libsql":
142
+ return {
143
+ expr: `text("${columnName}").primaryKey().default(sql\`${SQLITE_UUID_SQL}\`)`,
144
+ imports: ["text"],
145
+ needsSql: true,
146
+ };
147
+ case "postgres":
148
+ return {
149
+ expr: `uuid("${columnName}").primaryKey().defaultRandom()`,
150
+ imports: ["uuid"],
151
+ needsSql: false,
152
+ };
153
+ case "mysql":
154
+ return {
155
+ expr: `varchar("${columnName}", { length: 36 }).primaryKey().default(sql\`(UUID())\`)`,
156
+ imports: ["varchar"],
157
+ needsSql: true,
158
+ };
159
+ }
160
+ }
161
+ export function autoIdSqlDefault(provider) {
162
+ switch (provider) {
163
+ case "sqlite":
164
+ case "libsql":
165
+ return `DEFAULT ${SQLITE_UUID_SQL}`;
166
+ case "postgres":
167
+ return "DEFAULT gen_random_uuid()";
168
+ case "mysql":
169
+ return "DEFAULT (UUID())";
170
+ }
171
+ }
172
+ function sqlStringLiteral(value) {
173
+ return `'${value.replace(/'/g, "''")}'`;
174
+ }
175
+ export function sqlDefaultClause(def, provider) {
176
+ if (def.autoId) {
177
+ return autoIdSqlDefault(provider);
178
+ }
179
+ if (def.updatedAt && def.default === undefined) {
180
+ return `DEFAULT ${providerMeta(provider).nowDefaultSql}`;
181
+ }
182
+ if (def.default === undefined)
183
+ return null;
184
+ if (def.default === "now") {
185
+ return `DEFAULT ${providerMeta(provider).nowDefaultSql}`;
186
+ }
187
+ if (typeof def.default === "string") {
188
+ return `DEFAULT ${sqlStringLiteral(def.default)}`;
189
+ }
190
+ if (typeof def.default === "boolean") {
191
+ switch (provider) {
192
+ case "postgres":
193
+ case "mysql":
194
+ return `DEFAULT ${def.default ? "true" : "false"}`;
195
+ case "sqlite":
196
+ case "libsql":
197
+ return `DEFAULT ${def.default ? "1" : "0"}`;
198
+ }
199
+ }
200
+ if (typeof def.default === "number") {
201
+ return `DEFAULT ${def.default}`;
202
+ }
203
+ if (typeof def.default === "object") {
204
+ return `DEFAULT ${sqlStringLiteral(JSON.stringify(def.default))}`;
205
+ }
206
+ return null;
207
+ }
208
+ //# sourceMappingURL=dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.js","sourceRoot":"","sources":["../src/dialect.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,17 @@ export { defineModel, field, relation } from "./model.js";
2
2
  export { generateDrizzleSchema } from "./schema.js";
3
3
  export { createDatabase } from "./client.js";
4
4
  export type { DatabaseInstance } from "./client.js";
5
- export { generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
6
- export type { MigrationDbClient, MigrationStatus } from "./migrate.js";
7
- export { generateCrudRoutes, pluralize } from "./crud.js";
8
- export type { CrudRouteFiles } from "./crud.js";
5
+ export { planMigration, generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
6
+ export type { MigrationDbClient, MigrationIssue, MigrationIssueCode, MigrationOptions, MigrationPlan, MigrationStatus } from "./migrate.js";
7
+ export { createDatabaseRuntime } from "./runtime.js";
8
+ export type { DatabaseRuntime, FindManyOptions, ModelRepository, QueryOrder, SqlMutationResult, SqlRuntimeAdapter } from "./runtime.js";
9
+ export { createCrudRepository, createCrudRuntime, generateCrudRoutes, pluralize } from "./crud.js";
10
+ export type { CrudQueryOptions, CrudRouteFiles, CrudRuntime } from "./crud.js";
9
11
  export { defineEmbedding, openaiEmbeddings } from "./embedding.js";
10
12
  export type { EmbeddingAdapter, EmbeddingConfig, OpenAIEmbeddingOptions } from "./embedding.js";
11
13
  export { cosineDistance, findNearest, hybridSearch } from "./search.js";
12
14
  export type { VectorItem, ScoredResult, HybridItem, HybridSearchOptions } from "./search.js";
15
+ export { prepareCreateData, prepareUpdateData } from "./write.js";
16
+ export type { PrepareWriteOptions } from "./write.js";
13
17
  export type { ModelDefinition, FieldDefinition, RelationDefinition, IndexDefinition, DatabaseConfig, DbProvider, ScalarType, } from "./types.js";
14
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7F,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5I,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxI,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  export { defineModel, field, relation } from "./model.js";
2
2
  export { generateDrizzleSchema } from "./schema.js";
3
3
  export { createDatabase } from "./client.js";
4
- export { generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
5
- export { generateCrudRoutes, pluralize } from "./crud.js";
4
+ export { planMigration, generateMigration, applyMigration, ensureTrackingTable, getAppliedMigrations, getMigrationStatus, applyTrackedMigrations, } from "./migrate.js";
5
+ export { createDatabaseRuntime } from "./runtime.js";
6
+ export { createCrudRepository, createCrudRuntime, generateCrudRoutes, pluralize } from "./crud.js";
6
7
  export { defineEmbedding, openaiEmbeddings } from "./embedding.js";
7
8
  export { cosineDistance, findNearest, hybridSearch } from "./search.js";
9
+ export { prepareCreateData, prepareUpdateData } from "./write.js";
8
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
package/dist/migrate.d.ts CHANGED
@@ -1,32 +1,30 @@
1
- import type { ModelDefinition, DbProvider } from "./types.js";
2
- /**
3
- * Generate SQL migration statements that transform `fromModels` into
4
- * `toModels`. This is a forward-only diff: it creates new tables, adds new
5
- * columns, and creates indexes. It does NOT handle column drops, renames, or
6
- * type changes (SQLite has limited ALTER TABLE support).
7
- *
8
- * @param fromModels - The previous set of model definitions (can be empty for
9
- * initial migration).
10
- * @param toModels - The target set of model definitions.
11
- * @returns An array of SQL statements to execute.
12
- */
13
- export declare function generateMigration(fromModels: ModelDefinition[], toModels: ModelDefinition[]): string[];
14
- /**
15
- * Execute an array of SQL migration statements against a database.
16
- *
17
- * The statements are run inside a transaction so that either all succeed or
18
- * none are applied.
19
- *
20
- * @param db - A Drizzle `BetterSQLite3Database` instance (or any object whose
21
- * `$client` property is a better-sqlite3 `Database`).
22
- * @param sql - The SQL statements to execute.
23
- */
1
+ import type { DbProvider, ModelDefinition } from "./types.js";
2
+ export type MigrationIssueCode = "DROP_TABLE" | "DROP_COLUMN" | "ALTER_COLUMN" | "DROP_INDEX" | "RENAME_COLUMN";
3
+ export interface MigrationIssue {
4
+ code: MigrationIssueCode;
5
+ message: string;
6
+ tableName: string;
7
+ fieldName?: string;
8
+ destructive: boolean;
9
+ }
10
+ export interface MigrationPlan {
11
+ provider: DbProvider;
12
+ statements: string[];
13
+ issues: MigrationIssue[];
14
+ safe: boolean;
15
+ }
16
+ export interface MigrationOptions {
17
+ provider?: DbProvider;
18
+ allowDestructive?: boolean;
19
+ strict?: boolean;
20
+ }
21
+ export declare function planMigration(fromModels: ModelDefinition[], toModels: ModelDefinition[], options?: DbProvider | MigrationOptions): MigrationPlan;
22
+ export declare function generateMigration(fromModels: ModelDefinition[], toModels: ModelDefinition[], options?: DbProvider | MigrationOptions): string[];
24
23
  export declare function applyMigration(db: {
25
24
  $client: {
26
25
  exec: (sql: string) => void;
27
26
  };
28
27
  }, sql: string[]): void;
29
- /** A database client that can execute and query SQL (SQLite via better-sqlite3). */
30
28
  export interface MigrationDbClient {
31
29
  exec: (sql: string) => void;
32
30
  prepare: (sql: string) => {
@@ -35,13 +33,7 @@ export interface MigrationDbClient {
35
33
  get: (...params: unknown[]) => unknown;
36
34
  };
37
35
  }
38
- /**
39
- * Ensure the `_capstan_migrations` tracking table exists.
40
- */
41
36
  export declare function ensureTrackingTable(client: MigrationDbClient, provider?: DbProvider): void;
42
- /**
43
- * Get the list of migration names that have already been applied.
44
- */
45
37
  export declare function getAppliedMigrations(client: MigrationDbClient): string[];
46
38
  export interface MigrationStatus {
47
39
  applied: Array<{
@@ -50,23 +42,7 @@ export interface MigrationStatus {
50
42
  }>;
51
43
  pending: string[];
52
44
  }
53
- /**
54
- * Return which migrations have been applied and which are pending.
55
- *
56
- * @param client - The underlying database client (e.g. better-sqlite3 `Database`).
57
- * @param allMigrationNames - Every migration file name, sorted chronologically.
58
- * @param provider - The database provider (defaults to `"sqlite"`).
59
- */
60
45
  export declare function getMigrationStatus(client: MigrationDbClient, allMigrationNames: string[], provider?: DbProvider): MigrationStatus;
61
- /**
62
- * Apply migration file SQL against a database, tracking each file in the
63
- * `_capstan_migrations` table. Only files not yet recorded are executed.
64
- *
65
- * @param client - The underlying database client.
66
- * @param migrations - Array of `{ name, sql }` objects (file name + raw SQL content).
67
- * @param provider - The database provider (defaults to `"sqlite"`).
68
- * @returns The list of migration names that were applied in this call.
69
- */
70
46
  export declare function applyTrackedMigrations(client: MigrationDbClient, migrations: Array<{
71
47
  name: string;
72
48
  sql: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgD,UAAU,EAAE,MAAM,YAAY,CAAC;AA0H5G;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM,EAAE,CA0DV;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAcpG;AAkCD,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QACxB,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QACvC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;KACxC,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,GAAE,UAAqB,GAAG,IAAI,CAEpG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAKxE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,QAAQ,GAAE,UAAqB,GAC9B,eAAe,CAajB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,QAAQ,GAAE,UAAqB,GAC9B,MAAM,EAAE,CAkCV"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAoC,eAAe,EAAE,MAAM,YAAY,CAAC;AAqIhG,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2FD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,UAAU,GAAG,gBAAgB,GACtC,aAAa,CA0If;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,UAAU,GAAG,gBAAgB,GACtC,MAAM,EAAE,CAYV;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAcpG;AA2BD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QACxB,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QACvC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;KACxC,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,GAAE,UAAqB,GAAG,IAAI,CAEpG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAKxE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,QAAQ,GAAE,UAAqB,GAC9B,eAAe,CAajB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,QAAQ,GAAE,UAAqB,GAC9B,MAAM,EAAE,CAkCV"}