@c9up/atlas 0.1.18 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +55 -14
  2. package/db.darwin-arm64.node +0 -0
  3. package/db.darwin-x64.node +0 -0
  4. package/db.linux-arm64-gnu.node +0 -0
  5. package/db.linux-x64-gnu.node +0 -0
  6. package/db.win32-x64-msvc.node +0 -0
  7. package/dist/AtlasProvider.d.ts +6 -0
  8. package/dist/AtlasProvider.d.ts.map +1 -1
  9. package/dist/AtlasProvider.js +2 -2
  10. package/dist/AtlasProvider.js.map +1 -1
  11. package/dist/BaseEntity.d.ts +171 -7
  12. package/dist/BaseEntity.d.ts.map +1 -1
  13. package/dist/BaseEntity.js +339 -31
  14. package/dist/BaseEntity.js.map +1 -1
  15. package/dist/BaseModel.d.ts +91 -0
  16. package/dist/BaseModel.d.ts.map +1 -0
  17. package/dist/BaseModel.js +193 -0
  18. package/dist/BaseModel.js.map +1 -0
  19. package/dist/BaseRepository.d.ts +77 -15
  20. package/dist/BaseRepository.d.ts.map +1 -1
  21. package/dist/BaseRepository.js +1423 -354
  22. package/dist/BaseRepository.js.map +1 -1
  23. package/dist/ModelQuery.d.ts +429 -11
  24. package/dist/ModelQuery.d.ts.map +1 -1
  25. package/dist/ModelQuery.js +1733 -145
  26. package/dist/ModelQuery.js.map +1 -1
  27. package/dist/Transaction.d.ts +17 -0
  28. package/dist/Transaction.d.ts.map +1 -1
  29. package/dist/Transaction.js +57 -5
  30. package/dist/Transaction.js.map +1 -1
  31. package/dist/adapters/NapiDbAdapter.d.ts +33 -4
  32. package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
  33. package/dist/adapters/NapiDbAdapter.js +101 -11
  34. package/dist/adapters/NapiDbAdapter.js.map +1 -1
  35. package/dist/console/migrationCommands.d.ts +48 -0
  36. package/dist/console/migrationCommands.d.ts.map +1 -0
  37. package/dist/console/migrationCommands.js +220 -0
  38. package/dist/console/migrationCommands.js.map +1 -0
  39. package/dist/decorators/entity.d.ts +37 -6
  40. package/dist/decorators/entity.d.ts.map +1 -1
  41. package/dist/decorators/entity.js +32 -2
  42. package/dist/decorators/entity.js.map +1 -1
  43. package/dist/events.d.ts +64 -0
  44. package/dist/events.d.ts.map +1 -0
  45. package/dist/events.js +82 -0
  46. package/dist/events.js.map +1 -0
  47. package/dist/index.d.ts +5 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/metadata-keys.d.ts +3 -2
  52. package/dist/metadata-keys.d.ts.map +1 -1
  53. package/dist/naming/NamingStrategy.d.ts +7 -0
  54. package/dist/naming/NamingStrategy.d.ts.map +1 -1
  55. package/dist/naming/NamingStrategy.js +16 -0
  56. package/dist/naming/NamingStrategy.js.map +1 -1
  57. package/dist/schema/Migration.d.ts +26 -3
  58. package/dist/schema/Migration.d.ts.map +1 -1
  59. package/dist/schema/Migration.js +33 -24
  60. package/dist/schema/Migration.js.map +1 -1
  61. package/dist/schema/MigrationRunner.d.ts +43 -32
  62. package/dist/schema/MigrationRunner.d.ts.map +1 -1
  63. package/dist/schema/MigrationRunner.js +211 -26
  64. package/dist/schema/MigrationRunner.js.map +1 -1
  65. package/dist/schema/Schema.d.ts +57 -0
  66. package/dist/schema/Schema.d.ts.map +1 -1
  67. package/dist/schema/Schema.js +138 -3
  68. package/dist/schema/Schema.js.map +1 -1
  69. package/dist/schema/SchemaCheck.d.ts.map +1 -1
  70. package/dist/schema/SchemaCheck.js +3 -1
  71. package/dist/schema/SchemaCheck.js.map +1 -1
  72. package/dist/schema/TableBuilder.d.ts +247 -8
  73. package/dist/schema/TableBuilder.d.ts.map +1 -1
  74. package/dist/schema/TableBuilder.js +607 -41
  75. package/dist/schema/TableBuilder.js.map +1 -1
  76. package/dist/schema/catalog.d.ts +47 -0
  77. package/dist/schema/catalog.d.ts.map +1 -0
  78. package/dist/schema/catalog.js +111 -0
  79. package/dist/schema/catalog.js.map +1 -0
  80. package/dist/schema/introspect.js.map +1 -1
  81. package/dist/schema/types.d.ts +150 -1
  82. package/dist/schema/types.d.ts.map +1 -1
  83. package/dist/schema/types.js +11 -0
  84. package/dist/schema/types.js.map +1 -1
  85. package/dist/services/db.d.ts +6 -0
  86. package/dist/services/db.d.ts.map +1 -1
  87. package/dist/services/db.js +17 -0
  88. package/dist/services/db.js.map +1 -1
  89. package/dist/testing/DatabaseCleanup.d.ts +7 -4
  90. package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
  91. package/dist/testing/DatabaseCleanup.js +21 -18
  92. package/dist/testing/DatabaseCleanup.js.map +1 -1
  93. package/dist/testing/Factory.d.ts +70 -5
  94. package/dist/testing/Factory.d.ts.map +1 -1
  95. package/dist/testing/Factory.js +209 -10
  96. package/dist/testing/Factory.js.map +1 -1
  97. package/index.darwin-arm64.node +0 -0
  98. package/index.darwin-x64.node +0 -0
  99. package/index.linux-arm64-gnu.node +0 -0
  100. package/index.linux-x64-gnu.node +0 -0
  101. package/index.win32-x64-msvc.node +0 -0
  102. package/package.json +4 -1
  103. package/scripts/guard-publish.mjs +15 -0
  104. package/src/AtlasProvider.ts +8 -1
  105. package/src/BaseEntity.ts +449 -40
  106. package/src/BaseModel.ts +324 -0
  107. package/src/BaseRepository.ts +1659 -371
  108. package/src/ModelQuery.ts +2290 -203
  109. package/src/Transaction.ts +68 -5
  110. package/src/adapters/NapiDbAdapter.ts +159 -10
  111. package/src/console/migrationCommands.ts +258 -0
  112. package/src/decorators/entity.ts +53 -6
  113. package/src/events.ts +112 -0
  114. package/src/index.ts +19 -0
  115. package/src/metadata-keys.ts +3 -2
  116. package/src/naming/NamingStrategy.ts +23 -0
  117. package/src/schema/Migration.ts +42 -3
  118. package/src/schema/MigrationRunner.ts +270 -27
  119. package/src/schema/Schema.ts +210 -3
  120. package/src/schema/SchemaCheck.ts +7 -2
  121. package/src/schema/TableBuilder.ts +735 -41
  122. package/src/schema/catalog.ts +166 -0
  123. package/src/schema/introspect.ts +3 -4
  124. package/src/schema/types.ts +137 -2
  125. package/src/services/db.ts +28 -0
  126. package/src/testing/DatabaseCleanup.ts +23 -22
  127. package/src/testing/Factory.ts +332 -15
@@ -38,36 +38,22 @@ export interface MigrationStatus {
38
38
  */
39
39
  export declare class MigrationRunner {
40
40
  #private;
41
- /**
42
- * @param db Underlying database adapter.
43
- * @param options.migrationsDir Directory containing migration files. Defaults to `database/migrations`.
44
- * @param options.dialect SQL dialect of the adapter. Defaults to `sqlite`.
45
- * @param options.tableName Custom name for the migrations tracking table.
46
- * Defaults to `"ream_migrations"`. Must match `/^[A-Za-z_][A-Za-z0-9_]*$/` —
47
- * throws `AtlasError("MIGRATION_INVALID_TABLE_NAME")` synchronously otherwise.
48
- *
49
- * Cleanup coupling: `DatabaseCleanup.truncateAll` (`src/testing/DatabaseCleanup.ts`)
50
- * skips tables whose name starts with `ream_` (via `LIKE 'ream\_%' ESCAPE '\'`).
51
- * The default `"ream_migrations"` is therefore auto-protected. Choosing a name
52
- * without the `ream_` prefix (e.g. `"schema_versions"`) opts the tracking table
53
- * out of that protection — `truncateAll` will wipe it alongside user tables,
54
- * forcing a re-`init()` and replay of every migration on next test run.
55
- *
56
- * Rename caveat: `init()` emits `CREATE TABLE IF NOT EXISTS <tableName>` —
57
- * it does NOT auto-migrate from a previous tracking table. A project that
58
- * has been running with `ream_migrations` and then changes `tableName` to
59
- * `schema_versions` will get a fresh empty `schema_versions` on next boot,
60
- * read zero applied migrations, and re-run every past migration (likely
61
- * crashing on `CREATE TABLE <user-table>` already-exists). To rename
62
- * safely, copy the history manually before switching:
63
- *
64
- * INSERT INTO schema_versions SELECT * FROM ream_migrations;
65
- * -- (then DROP TABLE ream_migrations once verified)
66
- */
67
41
  constructor(db: DatabaseAdapter, options?: {
68
42
  migrationsDir?: string;
69
43
  dialect?: AtlasDialect;
70
44
  tableName?: string;
45
+ /**
46
+ * Refuse `rollback`/`reset` when `NODE_ENV === 'production'` (Adonis
47
+ * Lucid `disableRollbacksInProduction`) — a guard against dropping
48
+ * production data by accident. Override per call with `{ force: true }`.
49
+ */
50
+ disableRollbacksInProduction?: boolean;
51
+ /**
52
+ * Skip the migration lock (Adonis Lucid `--disable-locks`). The lock is
53
+ * a `<tableName>_lock` table with an `is_locked` flag (Knex mechanism),
54
+ * so it prevents concurrent migrations on every dialect, SQLite too.
55
+ */
56
+ disableLocks?: boolean;
71
57
  });
72
58
  /** Ensure the ream_migrations tracking table exists. */
73
59
  init(): Promise<void>;
@@ -76,32 +62,57 @@ export declare class MigrationRunner {
76
62
  /** Run all pending migrations. */
77
63
  migrate(): Promise<string[]>;
78
64
  /** Rollback the last batch of migrations. */
79
- rollback(): Promise<string[]>;
65
+ rollback(options?: {
66
+ batch?: number;
67
+ force?: boolean;
68
+ }): Promise<string[]>;
80
69
  /**
81
70
  * Rollback + re-run a specific number of batches (or all if `steps` omitted).
82
71
  * `migrate:refresh` in Lucid parlance.
83
72
  *
84
73
  * @implements Story 32.11
85
74
  */
86
- refresh(): Promise<{
75
+ refresh(options?: {
76
+ force?: boolean;
77
+ }): Promise<{
87
78
  rolled: string[];
88
79
  executed: string[];
89
80
  }>;
90
81
  /**
91
- * Drop EVERY table the migrations created (via successive rollbacks) then
92
- * run every migration from scratch. `migrate:fresh` in Lucid parlance.
82
+ * Drop EVERY user table directly (no `down()`), then run every migration from
83
+ * scratch. `migrate:fresh` in Lucid parlance.
93
84
  *
94
- * Distinct from `refresh()` only in intent both end up with a fresh DB.
85
+ * Unlike {@link refresh} (which rolls back by calling each migration's
86
+ * `down()`), `fresh` wipes the tables outright — so it succeeds even when a
87
+ * `down()` is broken or missing, and it also clears orphan tables no migration
88
+ * tracks. This matches Lucid's `migration:fresh`. Views, types and domains are
89
+ * left intact: Lucid gates those behind opt-in flags (`--drop-views` /
90
+ * `--drop-types` / `--drop-domains`), so tables-only is its default.
91
+ *
92
+ * `rolled` is always empty — fresh drops rather than rolls back.
95
93
  */
96
94
  fresh(): Promise<{
97
95
  rolled: string[];
98
96
  executed: string[];
99
97
  }>;
98
+ /**
99
+ * Drop every user table — INCLUDING the migrations tracking table (Lucid's
100
+ * `db:wipe`). `fresh()` calls this and then re-migrates; a caller can use it
101
+ * directly to reset a database to empty.
102
+ *
103
+ * Inter-table foreign keys are handled per dialect: Postgres emits
104
+ * `DROP TABLE … CASCADE`; MySQL and SQLite suspend FK checks for the
105
+ * duration (they don't accept/respect CASCADE on `DROP TABLE`), restored
106
+ * even if a drop throws.
107
+ */
108
+ wipe(): Promise<void>;
100
109
  /**
101
110
  * Rollback every applied batch (alias for `migrate:reset`).
102
111
  * Returns the list of rolled-back migration names (in rollback order).
103
112
  */
104
- reset(): Promise<string[]>;
113
+ reset(options?: {
114
+ force?: boolean;
115
+ }): Promise<string[]>;
105
116
  /**
106
117
  * Dry-run: compute the SQL statements that would be emitted by a migrate
107
118
  * without executing them. Returns the full list of statements per pending
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AA2C/E,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,kEAAkE;IAClE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,qDAAqD;IACrD,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,eAAe;;IAM3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;gBAEF,EAAE,EAAE,eAAe,EACnB,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB;IAWF,wDAAwD;IAClD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+D3B,wCAAwC;IAClC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAyB1C,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmElC,6CAA6C;IACvC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA0FnC;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAMlE;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAIhE;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYhC;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CA2G/D"}
1
+ {"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AA4C/E,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,kEAAkE;IAClE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,qDAAqD;IACrD,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,eAAe;;gBAsC1B,EAAE,EAAE,eAAe,EACnB,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;WAIG;QACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC;;;;WAIG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB;IAqHF,wDAAwD;IAClD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+D3B,wCAAwC;IAClC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA6B1C,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA6ElC,6CAA6C;IACvC,QAAQ,CACb,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAC/C,OAAO,CAAC,MAAM,EAAE,CAAC;IAiJpB;;;;;OAKG;IACG,OAAO,CACZ,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAC/B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAMpD;;;;;;;;;;;;OAYG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAMhE;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;IACG,KAAK,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAajE;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CA2G/D"}
@@ -9,6 +9,7 @@ import { pathToFileURL } from "node:url";
9
9
  import { AtlasError } from "../errors.js";
10
10
  import { compileStatementNative } from "../query/native.js";
11
11
  import { assertPathInsideBase, assertSafeName, pathExists, } from "../utils/safePath.js";
12
+ import { listUserTables, withoutForeignKeys } from "./catalog.js";
12
13
  const DEFAULT_TABLE = "ream_migrations";
13
14
  const TABLE_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
14
15
  function validateTrackingTableName(name) {
@@ -46,7 +47,8 @@ export class MigrationRunner {
46
47
  * throws `AtlasError("MIGRATION_INVALID_TABLE_NAME")` synchronously otherwise.
47
48
  *
48
49
  * Cleanup coupling: `DatabaseCleanup.truncateAll` (`src/testing/DatabaseCleanup.ts`)
49
- * skips tables whose name starts with `ream_` (via `LIKE 'ream\_%' ESCAPE '\'`).
50
+ * skips tables whose name starts with `ream_` (filtered in JS by the shared
51
+ * catalog helper, `src/schema/catalog.ts`).
50
52
  * The default `"ream_migrations"` is therefore auto-protected. Choosing a name
51
53
  * without the `ream_` prefix (e.g. `"schema_versions"`) opts the tracking table
52
54
  * out of that protection — `truncateAll` will wipe it alongside user tables,
@@ -63,6 +65,9 @@ export class MigrationRunner {
63
65
  * INSERT INTO schema_versions SELECT * FROM ream_migrations;
64
66
  * -- (then DROP TABLE ream_migrations once verified)
65
67
  */
68
+ #disableRollbacksInProduction;
69
+ #disableLocks;
70
+ #lockTableName;
66
71
  constructor(db, options) {
67
72
  this.#db = db;
68
73
  this.#migrationsDir = options?.migrationsDir ?? "database/migrations";
@@ -71,6 +76,94 @@ export class MigrationRunner {
71
76
  options?.tableName === undefined
72
77
  ? DEFAULT_TABLE
73
78
  : validateTrackingTableName(options.tableName);
79
+ this.#disableRollbacksInProduction =
80
+ options?.disableRollbacksInProduction ?? false;
81
+ this.#disableLocks = options?.disableLocks ?? false;
82
+ this.#lockTableName = `${this.#tableName}_lock`;
83
+ }
84
+ /**
85
+ * Ensure the lock table exists and holds exactly one row. Mirrors the Knex /
86
+ * AdonisJS Lucid migration-lock mechanism: a `<tableName>_lock` table with an
87
+ * `is_locked` flag (NOT a Postgres advisory lock), so it works identically on
88
+ * every dialect, SQLite included.
89
+ */
90
+ async #ensureLockTable() {
91
+ await runStmt(this.#db, this.#dialect, {
92
+ kind: "createTable",
93
+ table: this.#lockTableName,
94
+ ifNotExists: true,
95
+ columns: [
96
+ {
97
+ name: "id",
98
+ kind: "integer",
99
+ autoIncrement: true,
100
+ nullable: false,
101
+ primary: true,
102
+ unique: false,
103
+ default: null,
104
+ references: null,
105
+ length: null,
106
+ precision: null,
107
+ scale: null,
108
+ },
109
+ {
110
+ name: "is_locked",
111
+ kind: "integer",
112
+ nullable: false,
113
+ primary: false,
114
+ unique: false,
115
+ default: null,
116
+ references: null,
117
+ length: null,
118
+ precision: null,
119
+ scale: null,
120
+ },
121
+ ],
122
+ indexes: [],
123
+ });
124
+ // The lock-table name derives from the validated tracking-table name, so
125
+ // it is a safe identifier — no injection surface in these raw statements.
126
+ const rows = await this.#db.query(`SELECT COUNT(*) AS c FROM ${this.#lockTableName}`);
127
+ if (Number(rows[0]?.c ?? 0) === 0) {
128
+ await this.#db.execute(`INSERT INTO ${this.#lockTableName} (is_locked) VALUES (0)`);
129
+ }
130
+ }
131
+ /**
132
+ * Acquire the migration lock so two processes cannot migrate concurrently
133
+ * (Adonis Lucid / Knex parity — a lock TABLE, not an advisory lock). Throws
134
+ * `E_MIGRATION_LOCKED` when the lock is already held.
135
+ */
136
+ async #acquireLock() {
137
+ if (this.#disableLocks)
138
+ return;
139
+ await this.#ensureLockTable();
140
+ const rows = await this.#db.query(`SELECT is_locked FROM ${this.#lockTableName}`);
141
+ const locked = rows[0]?.is_locked;
142
+ if (locked === 1 || locked === true || locked === "1") {
143
+ throw new AtlasError("E_MIGRATION_LOCKED", "Could not acquire the migration lock — another migration is already running.", {
144
+ hint: `Wait for it to finish, clear the ${this.#lockTableName} table if it is stuck, or pass disableLocks.`,
145
+ });
146
+ }
147
+ await this.#db.execute(`UPDATE ${this.#lockTableName} SET is_locked = 1`);
148
+ }
149
+ /** Release the migration lock (clears the `is_locked` flag). */
150
+ async #releaseLock() {
151
+ if (this.#disableLocks)
152
+ return;
153
+ await this.#db.execute(`UPDATE ${this.#lockTableName} SET is_locked = 0`);
154
+ }
155
+ /**
156
+ * Throw when rollbacks are disabled in production and this is a production
157
+ * run, unless the caller explicitly forces it.
158
+ */
159
+ #assertRollbackAllowed(force) {
160
+ if (this.#disableRollbacksInProduction &&
161
+ !force &&
162
+ process.env.NODE_ENV === "production") {
163
+ throw new AtlasError("E_ROLLBACK_DISABLED_IN_PRODUCTION", "Rollbacks are disabled in production. Pass { force: true } to override.", {
164
+ hint: "This guard exists to prevent dropping production data by accident.",
165
+ });
166
+ }
74
167
  }
75
168
  /** Ensure the ream_migrations tracking table exists. */
76
169
  async init() {
@@ -137,6 +230,10 @@ export class MigrationRunner {
137
230
  }
138
231
  /** Get the status of all migrations. */
139
232
  async status() {
233
+ // Ensure the tracking table exists first — on a never-migrated database
234
+ // status must report every migration as pending, not throw on a missing
235
+ // `ream_migrations` table (AdonisJS/Lucid `migration:status` parity).
236
+ await this.init();
140
237
  const applied = await queryStmt(this.#db, this.#dialect, {
141
238
  kind: "select",
142
239
  table: this.#tableName,
@@ -161,6 +258,15 @@ export class MigrationRunner {
161
258
  }
162
259
  /** Run all pending migrations. */
163
260
  async migrate() {
261
+ await this.#acquireLock();
262
+ try {
263
+ return await this.#migrateLocked();
264
+ }
265
+ finally {
266
+ await this.#releaseLock();
267
+ }
268
+ }
269
+ async #migrateLocked() {
164
270
  await this.init();
165
271
  const applied = await queryStmt(this.#db, this.#dialect, {
166
272
  kind: "select",
@@ -187,7 +293,8 @@ export class MigrationRunner {
187
293
  for (const name of pending) {
188
294
  this.#assertSafeName(name);
189
295
  const migration = await this.#loadMigration(name);
190
- const statements = await migration.getUpSQL();
296
+ const statements = await migration.getUpSQL(this.#db);
297
+ const deferred = migration.consumeDeferred();
191
298
  // Compile the ream_migrations INSERT so we can include it in the same
192
299
  // transaction as the migration's own DDL/DML — either everything
193
300
  // commits or nothing does.
@@ -203,27 +310,42 @@ export class MigrationRunner {
203
310
  if (insertSql === undefined) {
204
311
  throw new AtlasError("MIGRATION_COMPILE_EMPTY", `compileStatementNative returned no statements for migration insert of '${name}'`);
205
312
  }
206
- const batchStatements = [
207
- ...statements.map((sql) => ({ sql, params: [] })),
208
- { sql: insertSql, params: insertCompiled.params },
209
- ];
210
- await this.#runAtomic(batchStatements, name);
313
+ await this.#runStep(statements, deferred, { sql: insertSql, params: insertCompiled.params }, name);
211
314
  executed.push(name);
212
315
  }
213
316
  return executed;
214
317
  }
215
318
  /** Rollback the last batch of migrations. */
216
- async rollback() {
319
+ async rollback(options = {}) {
320
+ this.#assertRollbackAllowed(options.force ?? false);
321
+ await this.#acquireLock();
322
+ try {
323
+ return await this.#rollbackLocked(options);
324
+ }
325
+ finally {
326
+ await this.#releaseLock();
327
+ }
328
+ }
329
+ async #rollbackLocked(options) {
217
330
  await this.init();
218
- const batch = await this.#currentBatch();
219
- if (batch === 0) {
331
+ const current = await this.#currentBatch();
332
+ if (current === 0) {
333
+ return [];
334
+ }
335
+ // Default: roll back only the latest batch. With `batch: N`, roll back
336
+ // every migration applied AFTER batch N (Lucid's `--batch` — a target to
337
+ // return to, not a count). `batch: 0` rolls the whole history back.
338
+ const target = options.batch ?? current - 1;
339
+ if (target >= current) {
220
340
  return [];
221
341
  }
222
342
  const toRollback = await queryStmt(this.#db, this.#dialect, {
223
343
  kind: "select",
224
344
  table: this.#tableName,
225
345
  select: ["name"],
226
- wheres: [{ column: "batch", operator: "=", value: batch, type: "and" }],
346
+ wheres: [
347
+ { column: "batch", operator: ">", value: target, type: "and" },
348
+ ],
227
349
  // Reverse INSERTION order (auto-increment `id`), not name order — a
228
350
  // date- or hash-prefixed naming scheme would otherwise roll back in
229
351
  // the wrong sequence. `id DESC` is always the inverse of application.
@@ -240,7 +362,8 @@ export class MigrationRunner {
240
362
  for (const record of toRollback) {
241
363
  this.#assertSafeName(record.name);
242
364
  const migration = await this.#loadMigration(record.name);
243
- const statements = await migration.getDownSQL();
365
+ const statements = await migration.getDownSQL(this.#db);
366
+ const deferred = migration.consumeDeferred();
244
367
  const deleteCompiled = compileStatementNative({
245
368
  kind: "delete",
246
369
  table: this.#tableName,
@@ -252,11 +375,7 @@ export class MigrationRunner {
252
375
  if (deleteSql === undefined) {
253
376
  throw new AtlasError("MIGRATION_COMPILE_EMPTY", `compileStatementNative returned no statements for migration delete of '${record.name}'`);
254
377
  }
255
- const batchStatements = [
256
- ...statements.map((sql) => ({ sql, params: [] })),
257
- { sql: deleteSql, params: deleteCompiled.params },
258
- ];
259
- await this.#runAtomic(batchStatements, record.name);
378
+ await this.#runStep(statements, deferred, { sql: deleteSql, params: deleteCompiled.params }, record.name);
260
379
  rolled.push(record.name);
261
380
  }
262
381
  return rolled;
@@ -266,6 +385,31 @@ export class MigrationRunner {
266
385
  * it; otherwise fall back to sequential execute (best-effort). Adapters that
267
386
  * lack transaction support get a warning so integrators notice the risk.
268
387
  */
388
+ /**
389
+ * Run one migration step: its schema statements plus the bookkeeping record
390
+ * write (INSERT for migrate, DELETE for rollback).
391
+ *
392
+ * With no deferred callbacks this is the strong atomic path — schema + record
393
+ * commit together. With `this.defer()` callbacks, the schema runs atomically
394
+ * first, then the deferred callbacks, then the record write — so a failing
395
+ * deferred callback leaves the migration UN-recorded (re-runnable), at the
396
+ * cost of the schema no longer sharing a transaction with the record.
397
+ */
398
+ async #runStep(statements, deferred, recordStmt, migrationName) {
399
+ const schemaBatch = statements.map((sql) => ({
400
+ sql,
401
+ params: [],
402
+ }));
403
+ if (deferred.length === 0) {
404
+ await this.#runAtomic([...schemaBatch, recordStmt], migrationName);
405
+ return;
406
+ }
407
+ await this.#runAtomic(schemaBatch, migrationName);
408
+ for (const callback of deferred) {
409
+ await callback(this.#db);
410
+ }
411
+ await this.#db.execute(recordStmt.sql, recordStmt.params);
412
+ }
269
413
  async #runAtomic(batch, migrationName) {
270
414
  if (this.#db.runInTransaction) {
271
415
  await this.#db.runInTransaction(batch);
@@ -284,30 +428,71 @@ export class MigrationRunner {
284
428
  *
285
429
  * @implements Story 32.11
286
430
  */
287
- async refresh() {
288
- const rolled = await this.reset();
431
+ async refresh(options = {}) {
432
+ const rolled = await this.reset(options);
289
433
  const executed = await this.migrate();
290
434
  return { rolled, executed };
291
435
  }
292
436
  /**
293
- * Drop EVERY table the migrations created (via successive rollbacks) then
294
- * run every migration from scratch. `migrate:fresh` in Lucid parlance.
437
+ * Drop EVERY user table directly (no `down()`), then run every migration from
438
+ * scratch. `migrate:fresh` in Lucid parlance.
295
439
  *
296
- * Distinct from `refresh()` only in intent both end up with a fresh DB.
440
+ * Unlike {@link refresh} (which rolls back by calling each migration's
441
+ * `down()`), `fresh` wipes the tables outright — so it succeeds even when a
442
+ * `down()` is broken or missing, and it also clears orphan tables no migration
443
+ * tracks. This matches Lucid's `migration:fresh`. Views, types and domains are
444
+ * left intact: Lucid gates those behind opt-in flags (`--drop-views` /
445
+ * `--drop-types` / `--drop-domains`), so tables-only is its default.
446
+ *
447
+ * `rolled` is always empty — fresh drops rather than rolls back.
297
448
  */
298
449
  async fresh() {
299
- return this.refresh();
450
+ await this.#dropAllTables();
451
+ const executed = await this.migrate();
452
+ return { rolled: [], executed };
453
+ }
454
+ /**
455
+ * Drop every user table — INCLUDING the migrations tracking table (Lucid's
456
+ * `db:wipe`). `fresh()` calls this and then re-migrates; a caller can use it
457
+ * directly to reset a database to empty.
458
+ *
459
+ * Inter-table foreign keys are handled per dialect: Postgres emits
460
+ * `DROP TABLE … CASCADE`; MySQL and SQLite suspend FK checks for the
461
+ * duration (they don't accept/respect CASCADE on `DROP TABLE`), restored
462
+ * even if a drop throws.
463
+ */
464
+ async wipe() {
465
+ return this.#dropAllTables();
466
+ }
467
+ async #dropAllTables() {
468
+ // Include the tracking table: wipe/fresh reset to fully empty, and
469
+ // fresh() re-creates it via init() on the next migrate().
470
+ const tables = await listUserTables(this.#db, this.#dialect, {
471
+ includeFrameworkTables: true,
472
+ });
473
+ if (tables.length === 0)
474
+ return;
475
+ const isPg = this.#dialect === "postgres";
476
+ await withoutForeignKeys(this.#db, this.#dialect, async () => {
477
+ for (const table of tables) {
478
+ const compiled = compileStatementNative({ kind: "dropTable", table, ifExists: true, cascade: isPg }, this.#dialect);
479
+ for (const sql of compiled.statements) {
480
+ await this.#db.execute(sql, compiled.params);
481
+ }
482
+ }
483
+ });
300
484
  }
301
485
  /**
302
486
  * Rollback every applied batch (alias for `migrate:reset`).
303
487
  * Returns the list of rolled-back migration names (in rollback order).
304
488
  */
305
- async reset() {
489
+ async reset(options = {}) {
490
+ this.#assertRollbackAllowed(options.force ?? false);
306
491
  await this.init();
307
492
  const all = [];
308
493
  // Roll back batches one by one until nothing remains.
309
494
  while ((await this.#currentBatch()) > 0) {
310
- const rolled = await this.rollback();
495
+ const rolled = await this.rollback({ force: true });
311
496
  if (rolled.length === 0)
312
497
  break;
313
498
  all.push(...rolled);
@@ -341,7 +526,7 @@ export class MigrationRunner {
341
526
  for (const name of files) {
342
527
  this.#assertSafeName(name);
343
528
  const migration = await this.#loadMigration(name);
344
- const statements = await migration.getUpSQL();
529
+ const statements = await migration.getUpSQL(this.#db);
345
530
  result.push({ name, sql: statements });
346
531
  }
347
532
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAqB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,UAAU,GACV,MAAM,sBAAsB,CAAC;AAG9B,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAEtD,SAAS,yBAAyB,CAAC,IAAY;IAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,UAAU,CACnB,8BAA8B,EAC9B,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;YACvD,kGAAkG,CACnG,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,oDAAoD;AACpD,KAAK,UAAU,OAAO,CACrB,EAAmB,EACnB,OAAqB,EACrB,IAAY;IAEZ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;AACF,CAAC;AAED,KAAK,UAAU,SAAS,CACvB,EAAmB,EACnB,OAAqB,EACrB,IAAY;IAEZ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,KAAK,CAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAoCD;;GAEG;AACH,MAAM,OAAO,eAAe;IAC3B,GAAG,CAAkB;IACrB,cAAc,CAAS;IACvB,QAAQ,CAAe;IACvB,UAAU,CAAS;IAEnB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YACC,EAAmB,EACnB,OAIC;QAED,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,aAAa,IAAI,qBAAqB,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,UAAU;YACd,OAAO,EAAE,SAAS,KAAK,SAAS;gBAC/B,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,IAAI;QACT,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtC,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE;gBACR,mEAAmE;gBACnE,kEAAkE;gBAClE,gDAAgD;gBAChD;oBACC,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,SAAS;oBACf,aAAa,EAAE,IAAI;oBACnB,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACX;gBACD;oBACC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,GAAG;oBACX,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACX;gBACD;oBACC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACX;gBACD;oBACC,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACX;aACD;YACD,OAAO,EAAE,EAAE;SACX,CAAC,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,MAAM;QACX,MAAM,OAAO,GAAG,MAAM,SAAS,CAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACzB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACjD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,OAAO;QACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;YAE9C,sEAAsE;YACtE,iEAAiE;YACjE,2BAA2B;YAC3B,MAAM,cAAc,GAAG,sBAAsB,CAC5C;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,MAAM,EAAE;oBACP,CAAC,MAAM,EAAE,IAAI,CAAC;oBACd,CAAC,OAAO,EAAE,KAAK,CAAC;iBAChB;aACD,EACD,IAAI,CAAC,QAAQ,CACb,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;YAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CACnB,yBAAyB,EACzB,0EAA0E,IAAI,GAAG,CACjF,CAAC;YACH,CAAC;YACD,MAAM,eAAe,GAAgB;gBACpC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAe,EAAE,CAAC,CAAC;gBAC9D,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE;aACjD,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,QAAQ;QACb,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,SAAS,CACjC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,EACb;YACC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACvE,oEAAoE;YACpE,oEAAoE;YACpE,sEAAsE;YACtE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC9C,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CACD,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAEhD,MAAM,cAAc,GAAG,sBAAsB,CAC5C;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,MAAM,EAAE;oBACP,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;iBAClE;aACD,EACD,IAAI,CAAC,QAAQ,CACb,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;YAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CACnB,yBAAyB,EACzB,0EAA0E,MAAM,CAAC,IAAI,GAAG,CACxF,CAAC;YACH,CAAC;YACD,MAAM,eAAe,GAAgB;gBACpC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAe,EAAE,CAAC,CAAC;gBAC9D,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE;aACjD,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CACf,KAA2B,EAC3B,aAAqB;QAErB,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO;QACR,CAAC;QACD,uEAAuE;QACvE,mDAAmD;QACnD,OAAO,CAAC,IAAI,CACX,wEAAwE,aAAa,sBAAsB,CAC3G,CAAC;QACF,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACV,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,sDAAsD;QACtD,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACX,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAC3B,CAAC;QAEF,MAAM,MAAM,GAA2C,EAAE,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,qFAAqF;QACrF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC7B,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,cAAc;QACnB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,OAAO;iBACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACrD,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,iEAAiE;YACjE,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAChE,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,2EAA2E;IAC3E,eAAe,CAAC,IAAY;QAC3B,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,cAAc,CAAC,IAAY;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,oBAAoB,CACzB,IAAI,CAAC,cAAc,EACnB,GAAG,IAAI,KAAK,EACZ,mBAAmB,EACnB,WAAW,CACX,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE5C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CACnB,qBAAqB,EACrB,6BAA6B,IAAI,EAAE,CACnC,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,uEAAuE;QACvE,0DAA0D;QAC1D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YAC7D,MAAM,IAAI,UAAU,CACnB,mBAAmB,EACnB,aAAa,IAAI,8BAA8B,CAC/C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;CACD"}
1
+ {"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/schema/MigrationRunner.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,71 @@
7
7
  * @implements FR34
8
8
  */
9
9
  import { type AtlasDialect } from "../query/native.js";
10
+ import { type CatalogConnection } from "./catalog.js";
10
11
  import { TableBuilder } from "./TableBuilder.js";
11
12
  export declare class Schema {
12
13
  #private;
13
14
  constructor(dialect?: AtlasDialect);
15
+ /**
16
+ * Qualify subsequent table names with `name` (Adonis Lucid/Knex
17
+ * `withSchema`), e.g. `withSchema('reporting').createTable('t', …)` targets
18
+ * `"reporting"."t"`. Applies to every table-taking method until changed; the
19
+ * Rust compiler quotes each dotted segment. Chainable.
20
+ */
21
+ withSchema(name: string): this;
22
+ /**
23
+ * Attach a live connection so the async introspection helpers
24
+ * ({@link hasTable}/{@link hasColumn}) can query the catalog. The migration
25
+ * runner calls this before running a migration's `up`/`down`.
26
+ */
27
+ bindConnection(connection: CatalogConnection): void;
28
+ /**
29
+ * Does this table exist right now? (Adonis Lucid/Knex `hasTable`.) Runs a
30
+ * live catalog query, so it reflects migrations already applied — but NOT
31
+ * statements this same migration has only buffered (they run after `up`).
32
+ * Requires a bound connection (present inside a migration).
33
+ */
34
+ hasTable(name: string): Promise<boolean>;
35
+ /** Does this column exist on this table right now? (Adonis Lucid/Knex `hasColumn`.) */
36
+ hasColumn(table: string, column: string): Promise<boolean>;
14
37
  createTable(name: string, callback: (table: TableBuilder) => void): this;
38
+ /** `CREATE TABLE IF NOT EXISTS` (Lucid/Knex `createTableIfNotExists`). */
39
+ createTableIfNotExists(name: string, callback: (table: TableBuilder) => void): this;
40
+ /**
41
+ * `ALTER TABLE` (Lucid/Knex `alterTable`, also spelled `table()`). Inside
42
+ * the callback a column-type method adds a column, `.alter()` changes one,
43
+ * and `dropColumn` / `renameColumn` / `setNullable` / `dropNullable` do
44
+ * what they say. Operations compile in call order.
45
+ */
46
+ alterTable(name: string, callback: (table: TableBuilder) => void): this;
47
+ /** Alias of {@link alterTable} (Lucid/Knex `table()`). */
48
+ table(name: string, callback: (table: TableBuilder) => void): this;
49
+ /** `ALTER TABLE old RENAME TO new` (Lucid/Knex `renameTable`). */
50
+ renameTable(from: string, to: string): this;
15
51
  dropTable(name: string): this;
16
52
  createIndex(table: string, columns: string | string[], name?: string, unique?: boolean): this;
17
53
  dropIndex(name: string): this;
54
+ /**
55
+ * `CREATE VIEW name [(cols)] AS <select>` (Lucid/Knex `createView`). The
56
+ * `select` is raw, developer-authored SQL — same trust level as {@link raw} —
57
+ * embedded verbatim; the view name and column list are validated + quoted by
58
+ * the Rust compiler.
59
+ */
60
+ createView(name: string, select: string, options?: {
61
+ columns?: string[];
62
+ }): this;
63
+ /** `CREATE OR REPLACE VIEW` (Lucid/Knex `createViewOrReplace`). Rejected on SQLite. */
64
+ createViewOrReplace(name: string, select: string, options?: {
65
+ columns?: string[];
66
+ }): this;
67
+ /** `CREATE MATERIALIZED VIEW` (Lucid/Knex `createMaterializedView`). Postgres-only. */
68
+ createMaterializedView(name: string, select: string, options?: {
69
+ columns?: string[];
70
+ }): this;
71
+ /** `DROP VIEW IF EXISTS name` (Lucid/Knex `dropView`/`dropViewIfExists`). */
72
+ dropView(name: string): this;
73
+ /** `DROP MATERIALIZED VIEW IF EXISTS name` (Lucid/Knex). Postgres-only. */
74
+ dropMaterializedView(name: string): this;
18
75
  raw(sql: string): this;
19
76
  reset(): void;
20
77
  toSQL(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,KAAK,YAAY,EAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,MAAM;;gBAIN,OAAO,GAAE,YAAgC;IAIrD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAOxE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS7B,WAAW,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,UAAQ,GACZ,IAAI;IAWP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKtB,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM,EAAE;CAGjB"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,KAAK,YAAY,EAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,iBAAiB,EAGtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,MAAM;;gBAMN,OAAO,GAAE,YAAgC;IAIrD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU9B;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAInD;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9C,uFAAuF;IACjF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBhE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAOxE,0EAA0E;IAC1E,sBAAsB,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACrC,IAAI;IASP;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAiBvE,0DAA0D;IAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAIlE,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAa3C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS7B,WAAW,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,UAAQ,GACZ,IAAI;IAiBP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS7B;;;;;OAKG;IACH,UAAU,CACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAClC,IAAI;IAIP,uFAAuF;IACvF,mBAAmB,CAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAClC,IAAI;IAIP,uFAAuF;IACvF,sBAAsB,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAClC,IAAI;IAIP,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS5B,2EAA2E;IAC3E,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAsCxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKtB,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM,EAAE;CAGjB"}