@happyvertical/smrt-core 0.55.1 → 0.55.3
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/AGENTS.md +8 -0
- package/agents/build-knowledge.md +42 -0
- package/agents/generators.md +13 -0
- package/agents/recipes.md +150 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -1
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +10 -6
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/swagger.d.ts.map +1 -1
- package/dist/generators/swagger.js +3 -0
- package/dist/generators/swagger.js.map +1 -1
- package/dist/generators/tool-schema.d.ts +9 -0
- package/dist/generators/tool-schema.d.ts.map +1 -1
- package/dist/generators/tool-schema.js +10 -7
- package/dist/generators/tool-schema.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/knowledge.d.ts.map +1 -1
- package/dist/knowledge.js +13 -2
- package/dist/knowledge.js.map +1 -1
- package/dist/manifest/generator.d.ts.map +1 -1
- package/dist/manifest/generator.js +3 -1
- package/dist/manifest/generator.js.map +1 -1
- package/dist/manifest/static-manifest.js +1 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +2 -1
- package/dist/migrations/migration-lock.d.ts +91 -0
- package/dist/migrations/migration-lock.d.ts.map +1 -0
- package/dist/migrations/migration-lock.js +158 -0
- package/dist/migrations/migration-lock.js.map +1 -0
- package/dist/migrations/types.d.ts +2 -0
- package/dist/migrations/types.d.ts.map +1 -1
- package/dist/migrations.js +2 -1
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +9 -3
- package/dist/object.js.map +1 -1
- package/dist/prebuild/index.d.ts.map +1 -1
- package/dist/prebuild/index.js +1 -0
- package/dist/prebuild/index.js.map +1 -1
- package/dist/recipe-help.d.ts +186 -0
- package/dist/recipe-help.d.ts.map +1 -0
- package/dist/recipe-help.js +311 -0
- package/dist/recipe-help.js.map +1 -0
- package/dist/recipe.d.ts +83 -0
- package/dist/recipe.d.ts.map +1 -0
- package/dist/recipe.js +30 -0
- package/dist/recipe.js.map +1 -0
- package/dist/registry/manifest-field-merge.d.ts +6 -0
- package/dist/registry/manifest-field-merge.d.ts.map +1 -1
- package/dist/registry/manifest-field-merge.js +12 -1
- package/dist/registry/manifest-field-merge.js.map +1 -1
- package/dist/registry/types.d.ts +17 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/scanner/index.d.ts +1 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.d.ts +33 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +124 -0
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +47 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/smrt-knowledge.json +16 -9
- package/dist/ui-metadata.d.ts +60 -0
- package/dist/ui-metadata.d.ts.map +1 -0
- package/dist/ui-metadata.js +85 -0
- package/dist/ui-metadata.js.map +1 -0
- package/dist/utils/scanner-module.d.ts +18 -1
- package/dist/utils/scanner-module.d.ts.map +1 -1
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +4 -1
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/web-collections.d.ts.map +1 -1
- package/dist/vite-plugin/web-collections.js +8 -3
- package/dist/vite-plugin/web-collections.js.map +1 -1
- package/package.json +15 -10
package/dist/manifest.json
CHANGED
|
@@ -16,6 +16,7 @@ export { type DropFrameworkBaseTablesOptions, type DropFrameworkBaseTablesResult
|
|
|
16
16
|
export type { GeneratedMigration, GenerateMigrationOptions, } from './generator.js';
|
|
17
17
|
export { createMigrationDefinition, generateMigrationSequence, generateMigrationTimestamp, MigrationGenerator, } from './generator.js';
|
|
18
18
|
export { buildIntegerWidthStatements, buildIntegerWidthTableStatements, collectIntegerWidthTargets, type IntegerWidthColumnReport, type IntegerWidthColumnState, type IntegerWidthOptions, type IntegerWidthPreflightResult, type IntegerWidthTableReport, type IntegerWidthTarget, type IntegerWidthWidenOptions, type IntegerWidthWidenResult, preflightIntegerWidthWidening, widenIntegerColumnsToBigInt, } from './integer-width.js';
|
|
19
|
+
export { type AcquireMigrationLockOptions, acquireMigrationLock, DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, MIGRATION_ADVISORY_LOCK_KEYS, type MigrationLock, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, } from './migration-lock.js';
|
|
19
20
|
export { buildMinorUnitsStatements, type MinorUnitsColumnReport, type MinorUnitsColumnState, type MinorUnitsOptions, MinorUnitsPreflightError, type MinorUnitsPreflightResult, type MinorUnitsProblemRow, type MinorUnitsRescaleOptions, type MinorUnitsRescaleResult, type MoneyColumnTarget, preflightMinorUnitsRescale, rescaleMoneyColumnsToMinorUnits, } from './minor-units.js';
|
|
20
21
|
export { collectNullEqualIndexTargets, migrateNullEqualIndexes, type NullEqualIndexOptions, type NullEqualIndexPreflight, type NullEqualIndexReport, type NullEqualIndexTarget, nullEqualDuplicateDetector, nullEqualIndexStatements, preflightNullEqualIndexes, } from './null-equal-indexes.js';
|
|
21
22
|
export { getPendingSchemaStatements, type MigrateSmrtSchemasOptions, type MigrateSmrtSchemasResult, migrateSmrtSchemas, type PendingSchemaStatementsResult, } from './orchestrate.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -6,9 +6,10 @@ import { buildIntegerWidthStatements, buildIntegerWidthTableStatements, collectI
|
|
|
6
6
|
import { computeChecksum, normalizeSQL, shortChecksum, verifyChecksum } from "./checksum.js";
|
|
7
7
|
import { FRAMEWORK_BASE_TABLE_NAMES, dropFrameworkBaseTables, planFrameworkBaseTableDrop } from "./framework-base-tables.js";
|
|
8
8
|
import { MigrationGenerator, createMigrationDefinition, generateMigrationSequence, generateMigrationTimestamp } from "./generator.js";
|
|
9
|
+
import { DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, MIGRATION_ADVISORY_LOCK_KEYS, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, acquireMigrationLock } from "./migration-lock.js";
|
|
9
10
|
import { MinorUnitsPreflightError, buildMinorUnitsStatements, preflightMinorUnitsRescale, rescaleMoneyColumnsToMinorUnits } from "./minor-units.js";
|
|
10
11
|
import { collectNullEqualIndexTargets, migrateNullEqualIndexes, nullEqualDuplicateDetector, nullEqualIndexStatements, preflightNullEqualIndexes } from "./null-equal-indexes.js";
|
|
11
12
|
import { MigrationTracker, buildConcurrentIndexPlan, extractCreatedIndexName, planPostgresStatements } from "./tracker.js";
|
|
12
13
|
import { getPendingSchemaStatements, migrateSmrtSchemas } from "./orchestrate.js";
|
|
13
14
|
import { LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, backfillLegacyQualifiedNames, collectLegacyQualifiedNameTargets, countLegacyQualifiedNameReferences, legacyQualifiedNamesBackfillName } from "./qualified-name-aliases.js";
|
|
14
|
-
export { BackfillTableUnavailableError, BackfillTracker, FRAMEWORK_BASE_TABLE_NAMES, LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, MigrationGenerator, MigrationTracker, MinorUnitsPreflightError, REQUIRED_COLUMN_NOT_ADDED, SQLITE_REBUILD_TABLE_PREFIX, SchemaComparer, backfillLegacyQualifiedNames, buildConcurrentIndexPlan, buildIntegerWidthStatements, buildIntegerWidthTableStatements, buildMinorUnitsStatements, buildSqliteRebuildStatements, canonicalizeDefault, collectIntegerWidthTargets, collectLegacyQualifiedNameTargets, collectNullEqualIndexTargets, computeChecksum, countLegacyQualifiedNameReferences, createMigrationDefinition, dropFrameworkBaseTables, extractCreatedIndexName, generateMigrationSequence, generateMigrationTimestamp, generateSchemaDiff, getPendingSchemaStatements, getSQLFromDiff, hasActionableChanges, isAdvisoryOnlyChange, isInfoOnlyChange, isManualOrAdvisoryChange, isSqliteRebuildPlaceholder, legacyQualifiedNamesBackfillName, migrateNullEqualIndexes, migrateSmrtSchemas, normalizeSQL, nullEqualDuplicateDetector, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, planPostgresStatements, planSqliteTableRebuilds, preflightIntegerWidthWidening, preflightMinorUnitsRescale, preflightNullEqualIndexes, rescaleMoneyColumnsToMinorUnits, rewriteSqliteCreateTable, shortChecksum, sqliteRebuildPlaceholderSql, uniqueColumnIndexName, verifyChecksum, widenIntegerColumnsToBigInt };
|
|
15
|
+
export { BackfillTableUnavailableError, BackfillTracker, DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, FRAMEWORK_BASE_TABLE_NAMES, LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, MIGRATION_ADVISORY_LOCK_KEYS, MigrationGenerator, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, MigrationTracker, MinorUnitsPreflightError, REQUIRED_COLUMN_NOT_ADDED, SQLITE_REBUILD_TABLE_PREFIX, SchemaComparer, acquireMigrationLock, backfillLegacyQualifiedNames, buildConcurrentIndexPlan, buildIntegerWidthStatements, buildIntegerWidthTableStatements, buildMinorUnitsStatements, buildSqliteRebuildStatements, canonicalizeDefault, collectIntegerWidthTargets, collectLegacyQualifiedNameTargets, collectNullEqualIndexTargets, computeChecksum, countLegacyQualifiedNameReferences, createMigrationDefinition, dropFrameworkBaseTables, extractCreatedIndexName, generateMigrationSequence, generateMigrationTimestamp, generateSchemaDiff, getPendingSchemaStatements, getSQLFromDiff, hasActionableChanges, isAdvisoryOnlyChange, isInfoOnlyChange, isManualOrAdvisoryChange, isSqliteRebuildPlaceholder, legacyQualifiedNamesBackfillName, migrateNullEqualIndexes, migrateSmrtSchemas, normalizeSQL, nullEqualDuplicateDetector, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, planPostgresStatements, planSqliteTableRebuilds, preflightIntegerWidthWidening, preflightMinorUnitsRescale, preflightNullEqualIndexes, rescaleMoneyColumnsToMinorUnits, rewriteSqliteCreateTable, shortChecksum, sqliteRebuildPlaceholderSql, uniqueColumnIndexName, verifyChecksum, widenIntegerColumnsToBigInt };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-process mutual exclusion for schema migration runs (issue #3634).
|
|
3
|
+
*
|
|
4
|
+
* Two processes that run `smrt db:migrate` against one PostgreSQL database at
|
|
5
|
+
* the same time — two workloads gating their startup on the migration, a
|
|
6
|
+
* rolling restart, a break-glass Job beside running pods — both compare the
|
|
7
|
+
* live schema, both plan the same batch, and the second one fails part way
|
|
8
|
+
* with `42701 column ... already exists` or `42P07 relation ... already
|
|
9
|
+
* exists`. The tracker's per-migration `running` rows cannot prevent this:
|
|
10
|
+
* they are written after the diff, so both runners have already planned.
|
|
11
|
+
*
|
|
12
|
+
* The lock below covers the whole diff → plan → apply window. It is a
|
|
13
|
+
* session-level advisory lock on a pinned connection, so it is held across
|
|
14
|
+
* the run's many statements and transactions, and PostgreSQL frees it the
|
|
15
|
+
* moment that connection ends: a migrator that crashes or is killed never
|
|
16
|
+
* leaves the lock behind for the next one. A waiting runner acquires it after
|
|
17
|
+
* the holder finishes, compares a schema that is already current, and has
|
|
18
|
+
* nothing to apply.
|
|
19
|
+
*
|
|
20
|
+
* SQLite and DuckDB are single-writer files whose engines already serialize
|
|
21
|
+
* schema changes, so the lock is a no-op there.
|
|
22
|
+
*/
|
|
23
|
+
import type { DatabaseInterface } from './types.js';
|
|
24
|
+
/**
|
|
25
|
+
* The two-key advisory lock id every `db:migrate` run takes. The `smrt`
|
|
26
|
+
* class id matches the framework's other advisory locks (system-table
|
|
27
|
+
* bootstrap uses `hashtext('smrt'), hashtext('system-tables')`), so the
|
|
28
|
+
* object id alone separates them. Changing either key would let a run of the
|
|
29
|
+
* new release and a run of an older release migrate concurrently.
|
|
30
|
+
*/
|
|
31
|
+
export declare const MIGRATION_ADVISORY_LOCK_KEYS = "hashtext('smrt'), hashtext('db:migrate')";
|
|
32
|
+
/** Default bound on waiting for another run to finish: 15 minutes. */
|
|
33
|
+
export declare const DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS: number;
|
|
34
|
+
/** Thrown when another run still holds the migration lock at the deadline. */
|
|
35
|
+
export declare class MigrationLockTimeoutError extends Error {
|
|
36
|
+
readonly waitedMs: number;
|
|
37
|
+
constructor(waitedMs: number);
|
|
38
|
+
}
|
|
39
|
+
/** Thrown when a PostgreSQL adapter cannot pin the connection the lock needs. */
|
|
40
|
+
/**
|
|
41
|
+
* Thrown when the lock's pinned connection has died mid-run. PostgreSQL frees
|
|
42
|
+
* a session lock when its backend ends, so another migrator may already be
|
|
43
|
+
* running; the run must stop rather than keep applying unserialized.
|
|
44
|
+
*/
|
|
45
|
+
export declare class MigrationLockLostError extends Error {
|
|
46
|
+
constructor(cause?: unknown);
|
|
47
|
+
}
|
|
48
|
+
export declare class MigrationLockUnsupportedError extends Error {
|
|
49
|
+
constructor();
|
|
50
|
+
}
|
|
51
|
+
export interface AcquireMigrationLockOptions {
|
|
52
|
+
/**
|
|
53
|
+
* How long to wait for another run to release the lock, in milliseconds.
|
|
54
|
+
* `0` waits indefinitely, matching PostgreSQL's meaning of a zero timeout.
|
|
55
|
+
* @default DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS
|
|
56
|
+
*/
|
|
57
|
+
timeoutMs?: number;
|
|
58
|
+
/** Delay between attempts while another run holds the lock. @default 1000 */
|
|
59
|
+
pollIntervalMs?: number;
|
|
60
|
+
/** Engine override; otherwise detected from the database URL. */
|
|
61
|
+
engineHint?: string;
|
|
62
|
+
/** Called once, when the first attempt finds the lock held. */
|
|
63
|
+
onWait?: () => void;
|
|
64
|
+
/** Injectable clock and sleep for tests. */
|
|
65
|
+
now?: () => number;
|
|
66
|
+
sleep?: (ms: number) => Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
export interface MigrationLock {
|
|
69
|
+
/** False when the engine needs no lock (SQLite, DuckDB). */
|
|
70
|
+
readonly held: boolean;
|
|
71
|
+
/** Milliseconds spent waiting for another run; 0 when uncontended. */
|
|
72
|
+
readonly waitedMs: number;
|
|
73
|
+
/** Release the lock and its pinned connection. Idempotent. */
|
|
74
|
+
/**
|
|
75
|
+
* Confirm on the pinned connection that this run still holds the lock, and
|
|
76
|
+
* throw {@link MigrationLockLostError} if it does not. Call it before each
|
|
77
|
+
* phase that writes schema. A no-op when the engine needs no lock.
|
|
78
|
+
*/
|
|
79
|
+
assertHeld(): Promise<void>;
|
|
80
|
+
release(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Take the migration lock, waiting for a concurrent run to finish.
|
|
84
|
+
*
|
|
85
|
+
* Call it after connecting and before anything that reads or writes schema
|
|
86
|
+
* (system-table bootstrap, schema comparison, apply), and release it in a
|
|
87
|
+
* `finally` after the run. On PostgreSQL the lock lives on its own pinned
|
|
88
|
+
* connection, separate from the pool the migration itself uses.
|
|
89
|
+
*/
|
|
90
|
+
export declare function acquireMigrationLock(db: DatabaseInterface, options?: AcquireMigrationLockOptions): Promise<MigrationLock>;
|
|
91
|
+
//# sourceMappingURL=migration-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-lock.d.ts","sourceRoot":"","sources":["../../src/migrations/migration-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,6CACG,CAAC;AAE7C,sEAAsE;AACtE,eAAO,MAAM,sCAAsC,QAAiB,CAAC;AAIrE,8EAA8E;AAC9E,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAQ7C;AAED,iFAAiF;AACjF;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,CAAC,EAAE,OAAO;CAO5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;;CAOvD;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D;;;;OAIG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,iBAAiB,EACrB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,aAAa,CAAC,CA6ExB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { detectEngine } from "../schema/ddl/index.js";
|
|
2
|
+
//#region src/migrations/migration-lock.ts
|
|
3
|
+
/**
|
|
4
|
+
* Cross-process mutual exclusion for schema migration runs (issue #3634).
|
|
5
|
+
*
|
|
6
|
+
* Two processes that run `smrt db:migrate` against one PostgreSQL database at
|
|
7
|
+
* the same time — two workloads gating their startup on the migration, a
|
|
8
|
+
* rolling restart, a break-glass Job beside running pods — both compare the
|
|
9
|
+
* live schema, both plan the same batch, and the second one fails part way
|
|
10
|
+
* with `42701 column ... already exists` or `42P07 relation ... already
|
|
11
|
+
* exists`. The tracker's per-migration `running` rows cannot prevent this:
|
|
12
|
+
* they are written after the diff, so both runners have already planned.
|
|
13
|
+
*
|
|
14
|
+
* The lock below covers the whole diff → plan → apply window. It is a
|
|
15
|
+
* session-level advisory lock on a pinned connection, so it is held across
|
|
16
|
+
* the run's many statements and transactions, and PostgreSQL frees it the
|
|
17
|
+
* moment that connection ends: a migrator that crashes or is killed never
|
|
18
|
+
* leaves the lock behind for the next one. A waiting runner acquires it after
|
|
19
|
+
* the holder finishes, compares a schema that is already current, and has
|
|
20
|
+
* nothing to apply.
|
|
21
|
+
*
|
|
22
|
+
* SQLite and DuckDB are single-writer files whose engines already serialize
|
|
23
|
+
* schema changes, so the lock is a no-op there.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* The two-key advisory lock id every `db:migrate` run takes. The `smrt`
|
|
27
|
+
* class id matches the framework's other advisory locks (system-table
|
|
28
|
+
* bootstrap uses `hashtext('smrt'), hashtext('system-tables')`), so the
|
|
29
|
+
* object id alone separates them. Changing either key would let a run of the
|
|
30
|
+
* new release and a run of an older release migrate concurrently.
|
|
31
|
+
*/
|
|
32
|
+
var MIGRATION_ADVISORY_LOCK_KEYS = "hashtext('smrt'), hashtext('db:migrate')";
|
|
33
|
+
/** Default bound on waiting for another run to finish: 15 minutes. */
|
|
34
|
+
var DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS = 900 * 1e3;
|
|
35
|
+
var DEFAULT_POLL_INTERVAL_MS = 1e3;
|
|
36
|
+
/** Thrown when another run still holds the migration lock at the deadline. */
|
|
37
|
+
var MigrationLockTimeoutError = class extends Error {
|
|
38
|
+
waitedMs;
|
|
39
|
+
constructor(waitedMs) {
|
|
40
|
+
super(`Another db:migrate run held the migration lock for ${Math.round(waitedMs / 1e3)}s; giving up. The lock is released when that run's database connection ends. Raise migrations.postgres.migrationLockTimeout if a migration legitimately runs longer.`);
|
|
41
|
+
this.waitedMs = waitedMs;
|
|
42
|
+
this.name = "MigrationLockTimeoutError";
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/** Thrown when a PostgreSQL adapter cannot pin the connection the lock needs. */
|
|
46
|
+
/**
|
|
47
|
+
* Thrown when the lock's pinned connection has died mid-run. PostgreSQL frees
|
|
48
|
+
* a session lock when its backend ends, so another migrator may already be
|
|
49
|
+
* running; the run must stop rather than keep applying unserialized.
|
|
50
|
+
*/
|
|
51
|
+
var MigrationLockLostError = class extends Error {
|
|
52
|
+
constructor(cause) {
|
|
53
|
+
super("The db:migrate migration lock was lost: its database connection ended mid-run, so another run may be migrating concurrently. Stopping; rerun db:migrate to converge.", cause === void 0 ? void 0 : { cause });
|
|
54
|
+
this.name = "MigrationLockLostError";
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var MigrationLockUnsupportedError = class extends Error {
|
|
58
|
+
constructor() {
|
|
59
|
+
super("This PostgreSQL adapter does not expose acquireSession(), so db:migrate cannot hold the migration lock on one connection. Upgrade @happyvertical/sql.");
|
|
60
|
+
this.name = "MigrationLockUnsupportedError";
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Take the migration lock, waiting for a concurrent run to finish.
|
|
65
|
+
*
|
|
66
|
+
* Call it after connecting and before anything that reads or writes schema
|
|
67
|
+
* (system-table bootstrap, schema comparison, apply), and release it in a
|
|
68
|
+
* `finally` after the run. On PostgreSQL the lock lives on its own pinned
|
|
69
|
+
* connection, separate from the pool the migration itself uses.
|
|
70
|
+
*/
|
|
71
|
+
async function acquireMigrationLock(db, options = {}) {
|
|
72
|
+
if (resolveEngine(db, options.engineHint) !== "postgres") return {
|
|
73
|
+
held: false,
|
|
74
|
+
waitedMs: 0,
|
|
75
|
+
assertHeld: async () => {},
|
|
76
|
+
release: async () => {}
|
|
77
|
+
};
|
|
78
|
+
if (typeof db.acquireSession !== "function") throw new MigrationLockUnsupportedError();
|
|
79
|
+
const timeoutMs = options.timeoutMs ?? 9e5;
|
|
80
|
+
const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
|
|
81
|
+
const now = options.now ?? Date.now;
|
|
82
|
+
const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
83
|
+
const session = await db.acquireSession();
|
|
84
|
+
const startedAt = now();
|
|
85
|
+
let notifiedWait = false;
|
|
86
|
+
try {
|
|
87
|
+
await exemptFromIdleSessionTimeout(session);
|
|
88
|
+
while (true) {
|
|
89
|
+
if (isTrue((await session.query(`SELECT pg_try_advisory_lock(hashtext('smrt'), hashtext('db:migrate')) AS acquired`)).rows?.[0]?.acquired)) {
|
|
90
|
+
const waitedMs = notifiedWait ? now() - startedAt : 0;
|
|
91
|
+
let released = false;
|
|
92
|
+
return {
|
|
93
|
+
held: true,
|
|
94
|
+
waitedMs,
|
|
95
|
+
assertHeld: async () => {
|
|
96
|
+
if (released) throw new MigrationLockLostError();
|
|
97
|
+
let stillHeld;
|
|
98
|
+
try {
|
|
99
|
+
stillHeld = isTrue((await session.query(HELD_PROBE_SQL)).rows?.[0]?.held);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
throw new MigrationLockLostError(error);
|
|
102
|
+
}
|
|
103
|
+
if (!stillHeld) throw new MigrationLockLostError();
|
|
104
|
+
},
|
|
105
|
+
release: async () => {
|
|
106
|
+
if (released) return;
|
|
107
|
+
released = true;
|
|
108
|
+
await session.release();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const waitedMs = now() - startedAt;
|
|
113
|
+
if (timeoutMs > 0 && waitedMs >= timeoutMs) throw new MigrationLockTimeoutError(waitedMs);
|
|
114
|
+
if (!notifiedWait) {
|
|
115
|
+
notifiedWait = true;
|
|
116
|
+
options.onWait?.();
|
|
117
|
+
}
|
|
118
|
+
await sleep(timeoutMs > 0 ? Math.min(pollIntervalMs, Math.max(1, timeoutMs - waitedMs)) : pollIntervalMs);
|
|
119
|
+
}
|
|
120
|
+
} catch (error) {
|
|
121
|
+
await session.release();
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Whether this backend still holds the db:migrate lock. Two-key advisory
|
|
127
|
+
* locks appear in `pg_locks` with `objsubid = 2`; `hashtext` returns int4, and
|
|
128
|
+
* the `::oid` cast maps a negative hash onto the same unsigned value the
|
|
129
|
+
* catalog stores.
|
|
130
|
+
*/
|
|
131
|
+
var HELD_PROBE_SQL = `SELECT EXISTS (
|
|
132
|
+
SELECT 1 FROM pg_locks
|
|
133
|
+
WHERE locktype = 'advisory' AND granted AND objsubid = 2
|
|
134
|
+
AND pid = pg_backend_pid()
|
|
135
|
+
AND classid = (hashtext('smrt'))::oid
|
|
136
|
+
AND objid = (hashtext('db:migrate'))::oid
|
|
137
|
+
) AS held`;
|
|
138
|
+
/**
|
|
139
|
+
* The lock session runs one statement and then sits idle for the whole
|
|
140
|
+
* migration, so a role- or database-level `idle_session_timeout` (PostgreSQL
|
|
141
|
+
* 14+) would reap it first and silently free the lock. Exempt this one
|
|
142
|
+
* session; older servers have no such setting.
|
|
143
|
+
*/
|
|
144
|
+
async function exemptFromIdleSessionTimeout(session) {
|
|
145
|
+
const version = await session.query("SELECT current_setting('server_version_num')::int AS version");
|
|
146
|
+
if (Number(version.rows?.[0]?.version) >= 14e4) await session.query("SET idle_session_timeout = 0");
|
|
147
|
+
}
|
|
148
|
+
function resolveEngine(db, engineHint) {
|
|
149
|
+
const dbWithConfig = db;
|
|
150
|
+
return detectEngine(db.url || dbWithConfig.config?.url || "", engineHint);
|
|
151
|
+
}
|
|
152
|
+
function isTrue(value) {
|
|
153
|
+
return value === true || value === "t" || value === "true" || value === 1;
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
export { DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, MIGRATION_ADVISORY_LOCK_KEYS, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, acquireMigrationLock };
|
|
157
|
+
|
|
158
|
+
//# sourceMappingURL=migration-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-lock.js","names":[],"sources":["../../src/migrations/migration-lock.ts"],"sourcesContent":["/**\n * Cross-process mutual exclusion for schema migration runs (issue #3634).\n *\n * Two processes that run `smrt db:migrate` against one PostgreSQL database at\n * the same time — two workloads gating their startup on the migration, a\n * rolling restart, a break-glass Job beside running pods — both compare the\n * live schema, both plan the same batch, and the second one fails part way\n * with `42701 column ... already exists` or `42P07 relation ... already\n * exists`. The tracker's per-migration `running` rows cannot prevent this:\n * they are written after the diff, so both runners have already planned.\n *\n * The lock below covers the whole diff → plan → apply window. It is a\n * session-level advisory lock on a pinned connection, so it is held across\n * the run's many statements and transactions, and PostgreSQL frees it the\n * moment that connection ends: a migrator that crashes or is killed never\n * leaves the lock behind for the next one. A waiting runner acquires it after\n * the holder finishes, compares a schema that is already current, and has\n * nothing to apply.\n *\n * SQLite and DuckDB are single-writer files whose engines already serialize\n * schema changes, so the lock is a no-op there.\n */\n\nimport { detectEngine } from '../schema/ddl/index.js';\nimport type { DatabaseEngine } from '../schema/ddl/types.js';\nimport type { DatabaseInterface } from './types.js';\n\n/**\n * The two-key advisory lock id every `db:migrate` run takes. The `smrt`\n * class id matches the framework's other advisory locks (system-table\n * bootstrap uses `hashtext('smrt'), hashtext('system-tables')`), so the\n * object id alone separates them. Changing either key would let a run of the\n * new release and a run of an older release migrate concurrently.\n */\nexport const MIGRATION_ADVISORY_LOCK_KEYS =\n \"hashtext('smrt'), hashtext('db:migrate')\";\n\n/** Default bound on waiting for another run to finish: 15 minutes. */\nexport const DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS = 15 * 60 * 1000;\n\nconst DEFAULT_POLL_INTERVAL_MS = 1000;\n\n/** Thrown when another run still holds the migration lock at the deadline. */\nexport class MigrationLockTimeoutError extends Error {\n constructor(public readonly waitedMs: number) {\n super(\n `Another db:migrate run held the migration lock for ${Math.round(\n waitedMs / 1000,\n )}s; giving up. The lock is released when that run's database connection ends. Raise migrations.postgres.migrationLockTimeout if a migration legitimately runs longer.`,\n );\n this.name = 'MigrationLockTimeoutError';\n }\n}\n\n/** Thrown when a PostgreSQL adapter cannot pin the connection the lock needs. */\n/**\n * Thrown when the lock's pinned connection has died mid-run. PostgreSQL frees\n * a session lock when its backend ends, so another migrator may already be\n * running; the run must stop rather than keep applying unserialized.\n */\nexport class MigrationLockLostError extends Error {\n constructor(cause?: unknown) {\n super(\n 'The db:migrate migration lock was lost: its database connection ended mid-run, so another run may be migrating concurrently. Stopping; rerun db:migrate to converge.',\n cause === undefined ? undefined : { cause },\n );\n this.name = 'MigrationLockLostError';\n }\n}\n\nexport class MigrationLockUnsupportedError extends Error {\n constructor() {\n super(\n 'This PostgreSQL adapter does not expose acquireSession(), so db:migrate cannot hold the migration lock on one connection. Upgrade @happyvertical/sql.',\n );\n this.name = 'MigrationLockUnsupportedError';\n }\n}\n\nexport interface AcquireMigrationLockOptions {\n /**\n * How long to wait for another run to release the lock, in milliseconds.\n * `0` waits indefinitely, matching PostgreSQL's meaning of a zero timeout.\n * @default DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS\n */\n timeoutMs?: number;\n /** Delay between attempts while another run holds the lock. @default 1000 */\n pollIntervalMs?: number;\n /** Engine override; otherwise detected from the database URL. */\n engineHint?: string;\n /** Called once, when the first attempt finds the lock held. */\n onWait?: () => void;\n /** Injectable clock and sleep for tests. */\n now?: () => number;\n sleep?: (ms: number) => Promise<void>;\n}\n\nexport interface MigrationLock {\n /** False when the engine needs no lock (SQLite, DuckDB). */\n readonly held: boolean;\n /** Milliseconds spent waiting for another run; 0 when uncontended. */\n readonly waitedMs: number;\n /** Release the lock and its pinned connection. Idempotent. */\n /**\n * Confirm on the pinned connection that this run still holds the lock, and\n * throw {@link MigrationLockLostError} if it does not. Call it before each\n * phase that writes schema. A no-op when the engine needs no lock.\n */\n assertHeld(): Promise<void>;\n release(): Promise<void>;\n}\n\n/**\n * Take the migration lock, waiting for a concurrent run to finish.\n *\n * Call it after connecting and before anything that reads or writes schema\n * (system-table bootstrap, schema comparison, apply), and release it in a\n * `finally` after the run. On PostgreSQL the lock lives on its own pinned\n * connection, separate from the pool the migration itself uses.\n */\nexport async function acquireMigrationLock(\n db: DatabaseInterface,\n options: AcquireMigrationLockOptions = {},\n): Promise<MigrationLock> {\n const engine = resolveEngine(db, options.engineHint);\n if (engine !== 'postgres') {\n return {\n held: false,\n waitedMs: 0,\n assertHeld: async () => {},\n release: async () => {},\n };\n }\n if (typeof db.acquireSession !== 'function') {\n throw new MigrationLockUnsupportedError();\n }\n\n const timeoutMs = options.timeoutMs ?? DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS;\n const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;\n const now = options.now ?? Date.now;\n const sleep =\n options.sleep ??\n ((ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n\n const session = await db.acquireSession();\n const startedAt = now();\n let notifiedWait = false;\n\n try {\n await exemptFromIdleSessionTimeout(session);\n while (true) {\n const result = await session.query(\n `SELECT pg_try_advisory_lock(${MIGRATION_ADVISORY_LOCK_KEYS}) AS acquired`,\n );\n if (isTrue(result.rows?.[0]?.acquired)) {\n const waitedMs = notifiedWait ? now() - startedAt : 0;\n let released = false;\n return {\n held: true,\n waitedMs,\n assertHeld: async () => {\n if (released) throw new MigrationLockLostError();\n let stillHeld: boolean;\n try {\n const probe = await session.query(HELD_PROBE_SQL);\n stillHeld = isTrue(probe.rows?.[0]?.held);\n } catch (error) {\n throw new MigrationLockLostError(error);\n }\n if (!stillHeld) throw new MigrationLockLostError();\n },\n release: async () => {\n if (released) return;\n released = true;\n // The adapter's release() runs pg_advisory_unlock_all() and then\n // destroys the connection, which frees the lock even if the\n // unlock could not be sent.\n await session.release();\n },\n };\n }\n\n const waitedMs = now() - startedAt;\n if (timeoutMs > 0 && waitedMs >= timeoutMs) {\n throw new MigrationLockTimeoutError(waitedMs);\n }\n if (!notifiedWait) {\n notifiedWait = true;\n options.onWait?.();\n }\n await sleep(\n timeoutMs > 0\n ? Math.min(pollIntervalMs, Math.max(1, timeoutMs - waitedMs))\n : pollIntervalMs,\n );\n }\n } catch (error) {\n await session.release();\n throw error;\n }\n}\n\n/**\n * Whether this backend still holds the db:migrate lock. Two-key advisory\n * locks appear in `pg_locks` with `objsubid = 2`; `hashtext` returns int4, and\n * the `::oid` cast maps a negative hash onto the same unsigned value the\n * catalog stores.\n */\nconst HELD_PROBE_SQL = `SELECT EXISTS (\n SELECT 1 FROM pg_locks\n WHERE locktype = 'advisory' AND granted AND objsubid = 2\n AND pid = pg_backend_pid()\n AND classid = (hashtext('smrt'))::oid\n AND objid = (hashtext('db:migrate'))::oid\n) AS held`;\n\n/**\n * The lock session runs one statement and then sits idle for the whole\n * migration, so a role- or database-level `idle_session_timeout` (PostgreSQL\n * 14+) would reap it first and silently free the lock. Exempt this one\n * session; older servers have no such setting.\n */\nasync function exemptFromIdleSessionTimeout(\n session: Awaited<\n ReturnType<NonNullable<DatabaseInterface['acquireSession']>>\n >,\n): Promise<void> {\n const version = await session.query(\n \"SELECT current_setting('server_version_num')::int AS version\",\n );\n if (Number(version.rows?.[0]?.version) >= 140000) {\n await session.query('SET idle_session_timeout = 0');\n }\n}\n\nfunction resolveEngine(\n db: DatabaseInterface,\n engineHint: string | undefined,\n): DatabaseEngine {\n const dbWithConfig = db as DatabaseInterface & { config?: { url?: string } };\n const url = db.url || dbWithConfig.config?.url || '';\n return detectEngine(url, engineHint);\n}\n\nfunction isTrue(value: unknown): boolean {\n return value === true || value === 't' || value === 'true' || value === 1;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,IAAa,+BACX;;AAGF,IAAa,yCAAyC,MAAU;AAEhE,IAAM,2BAA2B;;AAGjC,IAAa,4BAAb,cAA+C,MAAM;CACvB;CAA5B,YAAY,UAAkC;EAC5C,MACE,sDAAsD,KAAK,MACzD,WAAW,GACb,EAAE,qKACJ;EAL0B,KAAA,WAAA;EAM1B,KAAK,OAAO;CACd;AACF;;;;;;;AAQA,IAAa,yBAAb,cAA4C,MAAM;CAChD,YAAY,OAAiB;EAC3B,MACE,wKACA,UAAU,KAAA,IAAY,KAAA,IAAY,EAAE,MAAM,CAC5C;EACA,KAAK,OAAO;CACd;AACF;AAEA,IAAa,gCAAb,cAAmD,MAAM;CACvD,cAAc;EACZ,MACE,uJACF;EACA,KAAK,OAAO;CACd;AACF;;;;;;;;;AA2CA,eAAsB,qBACpB,IACA,UAAuC,CAAC,GAChB;CAExB,IADe,cAAc,IAAI,QAAQ,UACrC,MAAW,YACb,OAAO;EACL,MAAM;EACN,UAAU;EACV,YAAY,YAAY,CAAC;EACzB,SAAS,YAAY,CAAC;CACxB;CAEF,IAAI,OAAO,GAAG,mBAAmB,YAC/B,MAAM,IAAI,8BAA8B;CAG1C,MAAM,YAAY,QAAQ,aAAA;CAC1B,MAAM,iBAAiB,QAAQ,kBAAkB;CACjD,MAAM,MAAM,QAAQ,OAAO,KAAK;CAChC,MAAM,QACJ,QAAQ,WACN,OAAe,IAAI,SAAe,YAAY,WAAW,SAAS,EAAE,CAAC;CAEzE,MAAM,UAAU,MAAM,GAAG,eAAe;CACxC,MAAM,YAAY,IAAI;CACtB,IAAI,eAAe;CAEnB,IAAI;EACF,MAAM,6BAA6B,OAAO;EAC1C,OAAO,MAAM;GAIX,IAAI,QAAO,MAHU,QAAQ,MAC3B,mFACF,EAAA,CACkB,OAAO,EAAE,EAAE,QAAQ,GAAG;IACtC,MAAM,WAAW,eAAe,IAAI,IAAI,YAAY;IACpD,IAAI,WAAW;IACf,OAAO;KACL,MAAM;KACN;KACA,YAAY,YAAY;MACtB,IAAI,UAAU,MAAM,IAAI,uBAAuB;MAC/C,IAAI;MACJ,IAAI;OAEF,YAAY,QAAO,MADC,QAAQ,MAAM,cAAc,EAAA,CACvB,OAAO,EAAE,EAAE,IAAI;MAC1C,SAAS,OAAO;OACd,MAAM,IAAI,uBAAuB,KAAK;MACxC;MACA,IAAI,CAAC,WAAW,MAAM,IAAI,uBAAuB;KACnD;KACA,SAAS,YAAY;MACnB,IAAI,UAAU;MACd,WAAW;MAIX,MAAM,QAAQ,QAAQ;KACxB;IACF;GACF;GAEA,MAAM,WAAW,IAAI,IAAI;GACzB,IAAI,YAAY,KAAK,YAAY,WAC/B,MAAM,IAAI,0BAA0B,QAAQ;GAE9C,IAAI,CAAC,cAAc;IACjB,eAAe;IACf,QAAQ,SAAS;GACnB;GACA,MAAM,MACJ,YAAY,IACR,KAAK,IAAI,gBAAgB,KAAK,IAAI,GAAG,YAAY,QAAQ,CAAC,IAC1D,cACN;EACF;CACF,SAAS,OAAO;EACd,MAAM,QAAQ,QAAQ;EACtB,MAAM;CACR;AACF;;;;;;;AAQA,IAAM,iBAAiB;;;;;;;;;;;;;AAcvB,eAAe,6BACb,SAGe;CACf,MAAM,UAAU,MAAM,QAAQ,MAC5B,8DACF;CACA,IAAI,OAAO,QAAQ,OAAO,EAAE,EAAE,OAAO,KAAK,MACxC,MAAM,QAAQ,MAAM,8BAA8B;AAEtD;AAEA,SAAS,cACP,IACA,YACgB;CAChB,MAAM,eAAe;CAErB,OAAO,aADK,GAAG,OAAO,aAAa,QAAQ,OAAO,IACzB,UAAU;AACrC;AAEA,SAAS,OAAO,OAAyB;CACvC,OAAO,UAAU,QAAQ,UAAU,OAAO,UAAU,UAAU,UAAU;AAC1E"}
|
|
@@ -242,6 +242,8 @@ export interface MigrationsConfig {
|
|
|
242
242
|
lockTimeout?: string;
|
|
243
243
|
/** `statement_timeout` for every PostgreSQL migration statement (default: '60s') */
|
|
244
244
|
statementTimeout?: string;
|
|
245
|
+
/** Wait for a concurrent `db:migrate` to release the migration lock (default: '15min') */
|
|
246
|
+
migrationLockTimeout?: string;
|
|
245
247
|
};
|
|
246
248
|
}
|
|
247
249
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/migrations/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/migrations/types.ts"],"names":[],"mappings":"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"}
|
package/dist/migrations.js
CHANGED
|
@@ -6,10 +6,11 @@ import { buildIntegerWidthStatements, buildIntegerWidthTableStatements, collectI
|
|
|
6
6
|
import { computeChecksum, normalizeSQL, shortChecksum, verifyChecksum } from "./migrations/checksum.js";
|
|
7
7
|
import { FRAMEWORK_BASE_TABLE_NAMES, dropFrameworkBaseTables, planFrameworkBaseTableDrop } from "./migrations/framework-base-tables.js";
|
|
8
8
|
import { MigrationGenerator, createMigrationDefinition, generateMigrationSequence, generateMigrationTimestamp } from "./migrations/generator.js";
|
|
9
|
+
import { DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, MIGRATION_ADVISORY_LOCK_KEYS, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, acquireMigrationLock } from "./migrations/migration-lock.js";
|
|
9
10
|
import { MinorUnitsPreflightError, buildMinorUnitsStatements, preflightMinorUnitsRescale, rescaleMoneyColumnsToMinorUnits } from "./migrations/minor-units.js";
|
|
10
11
|
import { collectNullEqualIndexTargets, migrateNullEqualIndexes, nullEqualDuplicateDetector, nullEqualIndexStatements, preflightNullEqualIndexes } from "./migrations/null-equal-indexes.js";
|
|
11
12
|
import { MigrationTracker, buildConcurrentIndexPlan, extractCreatedIndexName, planPostgresStatements } from "./migrations/tracker.js";
|
|
12
13
|
import { getPendingSchemaStatements, migrateSmrtSchemas } from "./migrations/orchestrate.js";
|
|
13
14
|
import { LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, backfillLegacyQualifiedNames, collectLegacyQualifiedNameTargets, countLegacyQualifiedNameReferences, legacyQualifiedNamesBackfillName } from "./migrations/qualified-name-aliases.js";
|
|
14
15
|
import "./migrations/index.js";
|
|
15
|
-
export { BackfillTableUnavailableError, BackfillTracker, FRAMEWORK_BASE_TABLE_NAMES, LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, MigrationGenerator, MigrationTracker, MinorUnitsPreflightError, REQUIRED_COLUMN_NOT_ADDED, SQLITE_REBUILD_TABLE_PREFIX, SchemaComparer, backfillLegacyQualifiedNames, buildConcurrentIndexPlan, buildIntegerWidthStatements, buildIntegerWidthTableStatements, buildMinorUnitsStatements, buildSqliteRebuildStatements, canonicalizeDefault, collectIntegerWidthTargets, collectLegacyQualifiedNameTargets, collectNullEqualIndexTargets, computeChecksum, countLegacyQualifiedNameReferences, createMigrationDefinition, dropFrameworkBaseTables, extractCreatedIndexName, generateMigrationSequence, generateMigrationTimestamp, generateSchemaDiff, getPendingSchemaStatements, getSQLFromDiff, hasActionableChanges, isAdvisoryOnlyChange, isInfoOnlyChange, isManualOrAdvisoryChange, isSqliteRebuildPlaceholder, legacyQualifiedNamesBackfillName, migrateNullEqualIndexes, migrateSmrtSchemas, normalizeSQL, nullEqualDuplicateDetector, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, planPostgresStatements, planSqliteTableRebuilds, preflightIntegerWidthWidening, preflightMinorUnitsRescale, preflightNullEqualIndexes, rescaleMoneyColumnsToMinorUnits, rewriteSqliteCreateTable, shortChecksum, sqliteRebuildPlaceholderSql, uniqueColumnIndexName, verifyChecksum, widenIntegerColumnsToBigInt };
|
|
16
|
+
export { BackfillTableUnavailableError, BackfillTracker, DEFAULT_MIGRATION_LOCK_WAIT_TIMEOUT_MS, FRAMEWORK_BASE_TABLE_NAMES, LEGACY_QUALIFIED_NAMES_BACKFILL_PREFIX, MIGRATION_ADVISORY_LOCK_KEYS, MigrationGenerator, MigrationLockLostError, MigrationLockTimeoutError, MigrationLockUnsupportedError, MigrationTracker, MinorUnitsPreflightError, REQUIRED_COLUMN_NOT_ADDED, SQLITE_REBUILD_TABLE_PREFIX, SchemaComparer, acquireMigrationLock, backfillLegacyQualifiedNames, buildConcurrentIndexPlan, buildIntegerWidthStatements, buildIntegerWidthTableStatements, buildMinorUnitsStatements, buildSqliteRebuildStatements, canonicalizeDefault, collectIntegerWidthTargets, collectLegacyQualifiedNameTargets, collectNullEqualIndexTargets, computeChecksum, countLegacyQualifiedNameReferences, createMigrationDefinition, dropFrameworkBaseTables, extractCreatedIndexName, generateMigrationSequence, generateMigrationTimestamp, generateSchemaDiff, getPendingSchemaStatements, getSQLFromDiff, hasActionableChanges, isAdvisoryOnlyChange, isInfoOnlyChange, isManualOrAdvisoryChange, isSqliteRebuildPlaceholder, legacyQualifiedNamesBackfillName, migrateNullEqualIndexes, migrateSmrtSchemas, normalizeSQL, nullEqualDuplicateDetector, nullEqualIndexStatements, parsePostgresTimeoutMs, planFrameworkBaseTableDrop, planPostgresStatements, planSqliteTableRebuilds, preflightIntegerWidthWidening, preflightMinorUnitsRescale, preflightNullEqualIndexes, rescaleMoneyColumnsToMinorUnits, rewriteSqliteCreateTable, shortChecksum, sqliteRebuildPlaceholderSql, uniqueColumnIndexName, verifyChecksum, widenIntegerColumnsToBigInt };
|
package/dist/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAS,CAAC;AAOpC,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,gBAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,gBAAa,CAAC;AAWrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAoB,CAAC;AA0BpE,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,0BAAuB,CAAC;AAqL/B,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACnC;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACnC;AAoGD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;OASG;IAEH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAqBD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACvC;;OAEG;IACI,UAAU,EAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmC;IAE/D;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C,wEAAwE;IACxE,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;;OAGG;IACY,OAAO,EAAE,iBAAiB,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9C;;OAEG;IACI,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAQ;IAElD;;OAEG;IACI,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAQ;IAElD;;;;;OAKG;gBACS,OAAO,GAAE,iBAAsB;IA0B3C,OAAO,CAAC,sBAAsB;IAM9B,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIxC,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAO5C,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,+BAA+B;YAczB,oBAAoB;IA0FlC;;;;OAIG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;;OAKG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;OAKG;IACI,eAAe,IAAI,IAAI;IAI9B;;;;;;;;OAQG;IACI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IACI,qBAAqB,IAAI,IAAI;cAIpB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnD;;;;;;;;OAQG;IACU,eAAe,CAAC,CAAC,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC;IAoCb;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,UAAU;IAsBlB;;;;OAIG;YACW,+BAA+B;IAiD7C;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAElC;IAED;;;;;OAKG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAKtC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAEpC;IAED;;;;;OAKG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAMxC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;OAKG;IACH,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAK3C;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IAiBnC;;;;;;;;;OASG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA6JlD,4EAA4E;cAC5D,4BAA4B,CAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiCnC,+EAA+E;cAC/D,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IA6C1C,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,IAAI,SAAS,WAqCZ;IAED;;;;OAIG;IAMG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAoC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,SAAS,CAAC,aAAa,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM;IA0MN;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOxC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;;;;;;;;;OAUG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOlE;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoClC;;;;;;;;;;OAUG;IACG,KAAK;IA8BX;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO;IAqCb;;;;;;;;OAQG;IACG,UAAU;IAwBhB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,kBAAkB;IA+BhC;;;;OAIG;IACG,OAAO;IAKb;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,sBAAsB;IA6DpC;;;;;;;;;;;OAWG;YACW,2BAA2B;IAYzC;;;;;OAKG;IACI,qBAAqB,IAAI,OAAO;IA6BvC,2EAA2E;WAC7D,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA4BlE;;;;;OAKG;WACiB,gBAAgB,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC;IA8PnB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,yEAAyE;YAC3D,WAAW;YAgNX,YAAY;IAoD1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDG;IACG,IAAI,CAAC,OAAO,GAAE,eAAoB;IAqOxC;;;;;;;OAOG;IACG,aAAa,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EpE;;;;;OAKG;cACa,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC;IAchB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,qBAAqB;IAe7B;;;OAGG;YACW,iBAAiB;IAoB/B;;;;;;;;OAQG;YACW,4BAA4B;IAwB1C;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;YACW,kBAAkB;IAsFhC,OAAO,CAAC,0BAA0B;IAWlC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA8BjC;;;;;;OAMG;YACW,cAAc;IAmC5B;;;;;;;;;OASG;YACW,qBAAqB;IA8CnC;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAmB7B,mFAAmF;IACnF,SAAS,CAAC,4BAA4B,IAAI,SAAS,MAAM,EAAE;IAI3D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,wBAAwB,CAChC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAItC;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEnD;;;;;;;;;;;OAWG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkEzD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMnD;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMhD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,uBAAuB,CAC5B,OAAO,EAAE,MAAM,GACd,QAAQ,GAAG,UAAU,GAAG,IAAI;IAiB/B;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,+BAA+B,CACvC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,2BAA2B,GAC1C,MAAM;IAaT;;;;;OAKG;IACH,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAyB9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,UAAU;IA4CvB;;;;;;;;;;;;;;;;;;OAkBG;IACU,YAAY;IAezB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAkB,GAAG,eAAoB;IAsDpD;;;;;;;OAOG;IACU,QAAQ,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;YAmGd,4BAA4B;IAqC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IAoBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,QAAQ,CAAC,OAAO,GAAE,kBAAuB;IAoBtD;;;;;OAKG;cACa,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACU,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGnE;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,gCAAgC;IAkCxC;;;;;;;;;;;OAWG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIlD;;;;;;;;;;;;;;;;OAgBG;IACI,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IAKU,WAAW,CACtB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,kBAAkB,GAExB,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAS,CAAC;AAOpC,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,gBAAa,CAAC;AACrB,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,gBAAa,CAAC;AAWrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAoB,CAAC;AA0BpE,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,0BAAuB,CAAC;AAqL/B,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACnC;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACnC;AAoGD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;OASG;IAEH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAqBD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACvC;;OAEG;IACI,UAAU,EAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmC;IAE/D;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C,wEAAwE;IACxE,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;;OAGG;IACY,OAAO,EAAE,iBAAiB,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9C;;OAEG;IACI,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAQ;IAElD;;OAEG;IACI,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAQ;IAElD;;;;;OAKG;gBACS,OAAO,GAAE,iBAAsB;IA0B3C,OAAO,CAAC,sBAAsB;IAM9B,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIxC,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAO5C,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,+BAA+B;YAczB,oBAAoB;IA0FlC;;;;OAIG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;;OAKG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;OAKG;IACI,eAAe,IAAI,IAAI;IAI9B;;;;;;;;OAQG;IACI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IACI,qBAAqB,IAAI,IAAI;cAIpB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnD;;;;;;;;OAQG;IACU,eAAe,CAAC,CAAC,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC;IAoCb;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,UAAU;IAsBlB;;;;OAIG;YACW,+BAA+B;IAiD7C;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAElC;IAED;;;;;OAKG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAKtC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAEpC;IAED;;;;;OAKG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAMxC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;OAKG;IACH,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAK3C;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IAiBnC;;;;;;;;;OASG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA6JlD,4EAA4E;cAC5D,4BAA4B,CAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiCnC,+EAA+E;cAC/D,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IA6C1C,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,IAAI,SAAS,WAqCZ;IAED;;;;OAIG;IAMG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAoC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,SAAS,CAAC,aAAa,CACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM;IA0MN;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOxC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;;;;;;;;;OAUG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOlE;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoClC;;;;;;;;;;OAUG;IACG,KAAK;IA8BX;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO;IAqCb;;;;;;;;OAQG;IACG,UAAU;IAwBhB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,kBAAkB;IA+BhC;;;;OAIG;IACG,OAAO;IAKb;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,sBAAsB;IA6DpC;;;;;;;;;;;OAWG;YACW,2BAA2B;IAYzC;;;;;OAKG;IACI,qBAAqB,IAAI,OAAO;IA6BvC,2EAA2E;WAC7D,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IA4BlE;;;;;OAKG;WACiB,gBAAgB,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC;IA8PnB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,yEAAyE;YAC3D,WAAW;YAgNX,YAAY;IAoD1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDG;IACG,IAAI,CAAC,OAAO,GAAE,eAAoB;IAqOxC;;;;;;;OAOG;IACG,aAAa,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EpE;;;;;OAKG;cACa,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC;IAchB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,qBAAqB;IAe7B;;;OAGG;YACW,iBAAiB;IAoB/B;;;;;;;;OAQG;YACW,4BAA4B;IAwB1C;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;YACW,kBAAkB;IAsFhC,OAAO,CAAC,0BAA0B;IAWlC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA8BjC;;;;;;OAMG;YACW,cAAc;IAmC5B;;;;;;;;;OASG;YACW,qBAAqB;IA8CnC;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAmB7B,mFAAmF;IACnF,SAAS,CAAC,4BAA4B,IAAI,SAAS,MAAM,EAAE;IAI3D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,wBAAwB,CAChC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAItC;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEnD;;;;;;;;;;;OAWG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkEzD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMnD;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMhD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,uBAAuB,CAC5B,OAAO,EAAE,MAAM,GACd,QAAQ,GAAG,UAAU,GAAG,IAAI;IAiB/B;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,+BAA+B,CACvC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,2BAA2B,GAC1C,MAAM;IAaT;;;;;OAKG;IACH,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAyB9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,UAAU;IA4CvB;;;;;;;;;;;;;;;;;;OAkBG;IACU,YAAY;IAezB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAkB,GAAG,eAAoB;IAsDpD;;;;;;;OAOG;IACU,QAAQ,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;YAmGd,4BAA4B;IAqC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IAoBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,QAAQ,CAAC,OAAO,GAAE,kBAAuB;IAoBtD;;;;;OAKG;cACa,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACU,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGnE;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,gCAAgC;IAkCxC;;;;;;;;;;;OAWG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIlD;;;;;;;;;;;;;;;;OAgBG;IACI,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IAKU,WAAW,CACtB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,kBAAkB,GAExB,OAAO,CAAC,GAAG,CAAC;IAgHf;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IAGU,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,kBAAkB,GAExB,OAAO,CAAC,GAAG,EAAE,CAAC;IAsHjB;;;;;;OAMG;cACa,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,eAAY,EAAE,oBAAoB,GACtD,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IA2CF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IAGU,UAAU,CACrB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,kBAAkB,GAExB,OAAO,CAAC,GAAG,CAAC;IAuCf;;;;;;;;;;;;OAYG;IACI,iBAAiB,IAAI,MAAM,EAAE;IAKpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACU,QAAQ,CAAC,OAAO,EAAE;QAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACU,MAAM,CAAC,OAAO,EAAE;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACU,SAAS,CACpB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;KACnB,GACL,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA+ChC;;;;;;;;;;;;;;;;;;OAkBG;IACU,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,WAAW,CAAC,OAAO,EAAE;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BnB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,kBAAkB,CAC7B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,IAAI,CAAC;IAiJhB;;;;;;;;;;;;;;;;;OAiBG;IACU,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IA8C3B;;;;;;;;;;;;;;OAcG;IACU,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA4EnD;;;;;;;;;;;;OAYG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAW9C"}
|
package/dist/object.js
CHANGED
|
@@ -2721,10 +2721,16 @@ var SmrtObject = class SmrtObject extends SmrtClass {
|
|
|
2721
2721
|
if (actualClass) actualClassInfo = actualClass;
|
|
2722
2722
|
}
|
|
2723
2723
|
}
|
|
2724
|
-
const relatedInstance = new actualClassInfo.constructor(
|
|
2724
|
+
const relatedInstance = new actualClassInfo.constructor({
|
|
2725
|
+
...this.options,
|
|
2726
|
+
id: foreignKeyValue,
|
|
2727
|
+
_skipLoad: false
|
|
2728
|
+
});
|
|
2725
2729
|
await relatedInstance.initialize();
|
|
2726
|
-
relatedInstance.
|
|
2727
|
-
|
|
2730
|
+
if (!relatedInstance.isPersisted) {
|
|
2731
|
+
this._loadedRelationships.set(fieldName, null);
|
|
2732
|
+
return null;
|
|
2733
|
+
}
|
|
2728
2734
|
this.assertRelatedTenant(relatedInstance, fieldName, opts?.allowCrossTenant);
|
|
2729
2735
|
this._loadedRelationships.set(fieldName, relatedInstance);
|
|
2730
2736
|
return relatedInstance;
|