@xemahq/biome-database-nest 0.30.0 → 0.31.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.
package/README.md CHANGED
@@ -36,6 +36,12 @@ cutovers that require an operator between expansion and contraction.
36
36
  ## When to use it
37
37
 
38
38
  - Use it when a NestJS biome service stores data or owns database migrations.
39
+ The service names only its resource; the database pool issues a short-lived
40
+ migration credential (schema owner, direct connection) and a separate
41
+ DML-only runtime credential that the module renews before it expires.
42
+ An expired runtime credential refuses new connections and fails readiness.
43
+ - A local `DB_*` override is a development path and is refused when
44
+ `NODE_ENV=production`.
39
45
  - Use its operator lifecycle when a destructive contraction must wait for a
40
46
  verified backfill instead of running automatically at application startup.
41
47
  - Wrap the complete operator command with `withOperatorMigrationLock` so apply,
package/dist/index.d.ts CHANGED
@@ -4,7 +4,8 @@ export { rolesForSchema, schemaRoleBase, schemaRoleName, SchemaRoleKind, SCHEMA_
4
4
  export { resolveBiomeDatabaseConfigFromEnv, type BiomeDatabaseConfig, } from './lib/config';
5
5
  export { createBiomePrismaAdapter, createBiomePrismaAdapterFromEnv, resolveBiomePrismaAdapter, } from './lib/adapter';
6
6
  export { clearResolvedBiomeConnections, publishResolvedBiomeConnection, readResolvedBiomeConnection, type ResolvedBiomeConnection, } from './lib/resolved-connection';
7
- export { fetchSystemDatabaseConfig, type SystemDatabaseConfigRequest, } from './lib/control-plane-client';
7
+ export { DatabaseCredentialMode, DatabaseCredentialPurpose, fetchDatabaseCredential, logicalNameForDatabase, SERVICE_BINDING_SCOPE, type DatabaseCredentialRequest, type IssuedDatabaseCredential, } from './lib/credential-client';
8
+ export { assertBiomeDatabaseLeasesLive, DatabaseCredentialExpiredError, DatabaseCredentialLease, expiredBiomeDatabaseLeases, leasedClientClass, stopBiomeDatabaseLeases, type CredentialLeaseLogger, type DatabaseCredentialLeaseOptions, } from './lib/credential-lease';
8
9
  export { resolveControlPlaneBaseUrl, ORG_DATABASE_POOL_SERVICE_NAME, type ControlPlaneDiscoveryOptions, } from './lib/control-plane-discovery';
9
10
  export { bootstrapBiomeDatabases, type BiomeDatabaseDeclaration, type BiomeDatabasePreMigrationCheck, type BiomeDatabasePreMigrationContext, type BootstrapBiomeDatabasesOptions, } from './lib/bootstrap';
10
11
  export type { PrismaMigrationHistoryPolicy } from './lib/migration-history';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectOrgScopedModels = exports.DEFAULT_ORG_FIELD = exports.scopeArgsToOrg = exports.PrismaModelOperation = exports.formatTenantIsolationViolation = exports.TenantIsolationViolationKind = exports.TenantIsolationError = exports.resolveTenantIsolationMode = exports.TENANT_ISOLATION_MODE_ENV_VAR = exports.TenantIsolationMode = exports.createBiomePrismaService = exports.runBiomeDatabasePreflight = exports.BIOME_DATABASE_READY = exports.BiomeDatabaseModule = exports.ExpiringLeaseStore = exports.defaultLeaseHolderId = exports.withOperatorMigrationLock = exports.verifyOperatorMigration = exports.runOperatorMigration = exports.parseOperatorMigrationMode = exports.OperatorMigrationPhase = exports.OperatorMigrationMode = exports.openOperatorMigrationClient = exports.contractOperatorMigration = exports.BiomeDatabaseMigrationMode = exports.bootstrapBiomeDatabases = exports.ORG_DATABASE_POOL_SERVICE_NAME = exports.resolveControlPlaneBaseUrl = exports.fetchSystemDatabaseConfig = exports.readResolvedBiomeConnection = exports.publishResolvedBiomeConnection = exports.clearResolvedBiomeConnections = exports.resolveBiomePrismaAdapter = exports.createBiomePrismaAdapterFromEnv = exports.createBiomePrismaAdapter = exports.resolveBiomeDatabaseConfigFromEnv = exports.SCHEMA_ROLE_SUFFIX_LENGTH = exports.SCHEMA_ROLE_BASE_MAX_LENGTH = exports.SchemaRoleKind = exports.schemaRoleName = exports.schemaRoleBase = exports.rolesForSchema = exports.sanitizeIdentifierSegment = exports.sanitizeIdentifierChars = exports.POSTGRES_MAX_IDENTIFIER_LENGTH = exports.IDENTIFIER_HASH_LENGTH = exports.fitIdentifier = exports.composeIdentifier = exports.deriveBiomeSchemaName = exports.DEFAULT_BIOME_DB_KEY = void 0;
4
- exports.ProtectedOrgErasureRefusedError = exports.OrgProtectionUnavailableError = exports.OrgProtectionGuard = exports.OrgErasureController = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.ORG_ERASURE_RUNNER = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = exports.IDENTITY_SERVICE_NAME = exports.IdentityOrgProtectionProbe = exports.assertOrgNotProtected = exports.OrgErasureModule = exports.eraseOwnedAuthoredResourceGraph = exports.OrgErasureMatchesNothingError = exports.OrgErasureBlockedError = exports.eraseOrgData = exports.assertOrgErasureMatchesModels = exports.UndeclaredUnscopedModelsError = exports.normalizeUnscopedModelDeclarations = exports.formatUnscopedModelReport = exports.collectUnscopableModels = exports.assertUnscopedModelsDeclared = exports.readRuntimeModels = exports.createTenantIsolationExtension = void 0;
3
+ exports.createBiomePrismaService = exports.runBiomeDatabasePreflight = exports.BIOME_DATABASE_READY = exports.BiomeDatabaseModule = exports.ExpiringLeaseStore = exports.defaultLeaseHolderId = exports.withOperatorMigrationLock = exports.verifyOperatorMigration = exports.runOperatorMigration = exports.parseOperatorMigrationMode = exports.OperatorMigrationPhase = exports.OperatorMigrationMode = exports.openOperatorMigrationClient = exports.contractOperatorMigration = exports.BiomeDatabaseMigrationMode = exports.bootstrapBiomeDatabases = exports.ORG_DATABASE_POOL_SERVICE_NAME = exports.resolveControlPlaneBaseUrl = exports.stopBiomeDatabaseLeases = exports.leasedClientClass = exports.expiredBiomeDatabaseLeases = exports.DatabaseCredentialLease = exports.DatabaseCredentialExpiredError = exports.assertBiomeDatabaseLeasesLive = exports.SERVICE_BINDING_SCOPE = exports.logicalNameForDatabase = exports.fetchDatabaseCredential = exports.DatabaseCredentialPurpose = exports.DatabaseCredentialMode = exports.readResolvedBiomeConnection = exports.publishResolvedBiomeConnection = exports.clearResolvedBiomeConnections = exports.resolveBiomePrismaAdapter = exports.createBiomePrismaAdapterFromEnv = exports.createBiomePrismaAdapter = exports.resolveBiomeDatabaseConfigFromEnv = exports.SCHEMA_ROLE_SUFFIX_LENGTH = exports.SCHEMA_ROLE_BASE_MAX_LENGTH = exports.SchemaRoleKind = exports.schemaRoleName = exports.schemaRoleBase = exports.rolesForSchema = exports.sanitizeIdentifierSegment = exports.sanitizeIdentifierChars = exports.POSTGRES_MAX_IDENTIFIER_LENGTH = exports.IDENTIFIER_HASH_LENGTH = exports.fitIdentifier = exports.composeIdentifier = exports.deriveBiomeSchemaName = exports.DEFAULT_BIOME_DB_KEY = void 0;
4
+ exports.ProtectedOrgErasureRefusedError = exports.OrgProtectionUnavailableError = exports.OrgProtectionGuard = exports.OrgErasureController = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.ORG_ERASURE_RUNNER = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = exports.IDENTITY_SERVICE_NAME = exports.IdentityOrgProtectionProbe = exports.assertOrgNotProtected = exports.OrgErasureModule = exports.eraseOwnedAuthoredResourceGraph = exports.OrgErasureMatchesNothingError = exports.OrgErasureBlockedError = exports.eraseOrgData = exports.assertOrgErasureMatchesModels = exports.UndeclaredUnscopedModelsError = exports.normalizeUnscopedModelDeclarations = exports.formatUnscopedModelReport = exports.collectUnscopableModels = exports.assertUnscopedModelsDeclared = exports.readRuntimeModels = exports.createTenantIsolationExtension = exports.collectOrgScopedModels = exports.DEFAULT_ORG_FIELD = exports.scopeArgsToOrg = exports.PrismaModelOperation = exports.formatTenantIsolationViolation = exports.TenantIsolationViolationKind = exports.TenantIsolationError = exports.resolveTenantIsolationMode = exports.TENANT_ISOLATION_MODE_ENV_VAR = exports.TenantIsolationMode = void 0;
5
5
  var schema_name_1 = require("./lib/schema-name");
6
6
  Object.defineProperty(exports, "DEFAULT_BIOME_DB_KEY", { enumerable: true, get: function () { return schema_name_1.DEFAULT_BIOME_DB_KEY; } });
7
7
  Object.defineProperty(exports, "deriveBiomeSchemaName", { enumerable: true, get: function () { return schema_name_1.deriveBiomeSchemaName; } });
@@ -29,8 +29,19 @@ var resolved_connection_1 = require("./lib/resolved-connection");
29
29
  Object.defineProperty(exports, "clearResolvedBiomeConnections", { enumerable: true, get: function () { return resolved_connection_1.clearResolvedBiomeConnections; } });
30
30
  Object.defineProperty(exports, "publishResolvedBiomeConnection", { enumerable: true, get: function () { return resolved_connection_1.publishResolvedBiomeConnection; } });
31
31
  Object.defineProperty(exports, "readResolvedBiomeConnection", { enumerable: true, get: function () { return resolved_connection_1.readResolvedBiomeConnection; } });
32
- var control_plane_client_1 = require("./lib/control-plane-client");
33
- Object.defineProperty(exports, "fetchSystemDatabaseConfig", { enumerable: true, get: function () { return control_plane_client_1.fetchSystemDatabaseConfig; } });
32
+ var credential_client_1 = require("./lib/credential-client");
33
+ Object.defineProperty(exports, "DatabaseCredentialMode", { enumerable: true, get: function () { return credential_client_1.DatabaseCredentialMode; } });
34
+ Object.defineProperty(exports, "DatabaseCredentialPurpose", { enumerable: true, get: function () { return credential_client_1.DatabaseCredentialPurpose; } });
35
+ Object.defineProperty(exports, "fetchDatabaseCredential", { enumerable: true, get: function () { return credential_client_1.fetchDatabaseCredential; } });
36
+ Object.defineProperty(exports, "logicalNameForDatabase", { enumerable: true, get: function () { return credential_client_1.logicalNameForDatabase; } });
37
+ Object.defineProperty(exports, "SERVICE_BINDING_SCOPE", { enumerable: true, get: function () { return credential_client_1.SERVICE_BINDING_SCOPE; } });
38
+ var credential_lease_1 = require("./lib/credential-lease");
39
+ Object.defineProperty(exports, "assertBiomeDatabaseLeasesLive", { enumerable: true, get: function () { return credential_lease_1.assertBiomeDatabaseLeasesLive; } });
40
+ Object.defineProperty(exports, "DatabaseCredentialExpiredError", { enumerable: true, get: function () { return credential_lease_1.DatabaseCredentialExpiredError; } });
41
+ Object.defineProperty(exports, "DatabaseCredentialLease", { enumerable: true, get: function () { return credential_lease_1.DatabaseCredentialLease; } });
42
+ Object.defineProperty(exports, "expiredBiomeDatabaseLeases", { enumerable: true, get: function () { return credential_lease_1.expiredBiomeDatabaseLeases; } });
43
+ Object.defineProperty(exports, "leasedClientClass", { enumerable: true, get: function () { return credential_lease_1.leasedClientClass; } });
44
+ Object.defineProperty(exports, "stopBiomeDatabaseLeases", { enumerable: true, get: function () { return credential_lease_1.stopBiomeDatabaseLeases; } });
34
45
  var control_plane_discovery_1 = require("./lib/control-plane-discovery");
35
46
  Object.defineProperty(exports, "resolveControlPlaneBaseUrl", { enumerable: true, get: function () { return control_plane_discovery_1.resolveControlPlaneBaseUrl; } });
36
47
  Object.defineProperty(exports, "ORG_DATABASE_POOL_SERVICE_NAME", { enumerable: true, get: function () { return control_plane_discovery_1.ORG_DATABASE_POOL_SERVICE_NAME; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAU9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA+EpD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,GAC1B,QAAQ,CAMV;AAsBD,wBAAgB,yBAAyB,CACvC,KAAK,CAAC,EAAE,MAAM,EAId,GAAG,GAAE,MAAM,CAAC,UAAsD,GACjE,QAAQ,CAYV;AAmBD,wBAAgB,+BAA+B,CAC7C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CA8BV"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA+EpD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,GAC1B,QAAQ,CAMV;AAsBD,wBAAgB,yBAAyB,CACvC,KAAK,CAAC,EAAE,MAAM,EAId,GAAG,GAAE,MAAM,CAAC,UAAsD,GACjE,QAAQ,CAkBV;AAmBD,wBAAgB,+BAA+B,CAC7C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CA8BV"}
@@ -6,6 +6,7 @@ exports.createBiomePrismaAdapterFromEnv = createBiomePrismaAdapterFromEnv;
6
6
  const adapter_pg_1 = require("@prisma/adapter-pg");
7
7
  const platform_common_1 = require("@xemahq/platform-common");
8
8
  const config_1 = require("./config");
9
+ const credential_lease_1 = require("./credential-lease");
9
10
  const resolved_connection_1 = require("./resolved-connection");
10
11
  const scoped_env_1 = require("./scoped-env");
11
12
  const DEFAULT_POOL_MAX = 3;
@@ -45,7 +46,10 @@ function resolveBiomePrismaAdapter(dbKey, env = (0, scoped_env_1.scopedEnvView)(
45
46
  return createBiomePrismaAdapterFromEnv(env, dbKey);
46
47
  }
47
48
  const connectionString = (0, platform_common_1.ensureBiomeDbSearchPath)(resolved.url);
48
- return new adapter_pg_1.PrismaPg(poolOptions(connectionString, resolved.poolMax ?? DEFAULT_POOL_MAX), resolved.schema !== undefined && resolved.schema !== ''
49
+ const options = poolOptions(connectionString, resolved.poolMax ?? DEFAULT_POOL_MAX);
50
+ return new adapter_pg_1.PrismaPg(resolved.lease !== undefined
51
+ ? { ...options, Client: (0, credential_lease_1.leasedClientClass)(resolved.lease) }
52
+ : options, resolved.schema !== undefined && resolved.schema !== ''
49
53
  ? { schema: resolved.schema }
50
54
  : undefined);
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,11 @@ export interface ApplicationManagedBootstrapOptions extends BootstrapBiomeDataba
30
30
  readonly requiredExtensions?: readonly string[];
31
31
  }
32
32
  export type BootstrapBiomeDatabasesOptions = ApplicationManagedBootstrapOptions;
33
- export declare function ensureSchemaExists(biomeId: string, key: string, config: BiomeDatabaseConfig, requiredExtensions: readonly string[]): Promise<void>;
33
+ export declare enum SchemaPosture {
34
+ CreateIfMissing = "create-if-missing",
35
+ VerifyOnly = "verify-only"
36
+ }
37
+ export declare function ensureSchemaExists(biomeId: string, key: string, config: BiomeDatabaseConfig, requiredExtensions: readonly string[], posture?: SchemaPosture): Promise<void>;
34
38
  export declare function bootstrapBiomeDatabases(opts: BootstrapBiomeDatabasesOptions): Promise<void>;
35
39
  export {};
36
40
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAYA,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,IAAI,CAAC;AAIjD,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AASlE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,IAAI,SAAS,cAAc,GAAG,cAAc,EAChD,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;CAC7B;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,gCAAgC,KACtC,OAAO,CAAC,IAAI,CAAC,CAAC;AAGnB,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAO9B,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAWtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;CAC7D;AAGD,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IA6BzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;IAMvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAOzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,4BAA4B,CAAC;CAC/D;AAED,MAAM,WAAW,kCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAqBxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAGD,MAAM,MAAM,8BAA8B,GACxC,kCAAkC,CAAC;AAmLrC,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAoPD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"AAYA,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,IAAI,CAAC;AAGjD,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AAYnC,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AASlE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,IAAI,SAAS,cAAc,GAAG,cAAc,EAChD,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;CAC7B;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,gCAAgC,KACtC,OAAO,CAAC,IAAI,CAAC,CAAC;AAGnB,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAO9B,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAWtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;CAC7D;AAGD,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IA6BzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;IAMvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAOzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,4BAA4B,CAAC;CAC/D;AAED,MAAM,WAAW,kCACf,SAAQ,oCAAoC;IAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAqBxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAGD,MAAM,MAAM,8BAA8B,GACxC,kCAAkC,CAAC;AA4MrC,oBAAY,aAAa;IACvB,eAAe,sBAAsB;IACrC,UAAU,gBAAgB;CAC3B;AAaD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,SAAS,MAAM,EAAE,EACrC,OAAO,GAAE,aAA6C,GACrD,OAAO,CAAC,IAAI,CAAC,CAiEf;AAsPD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaPosture = void 0;
3
4
  exports.ensureSchemaExists = ensureSchemaExists;
4
5
  exports.bootstrapBiomeDatabases = bootstrapBiomeDatabases;
5
6
  const node_crypto_1 = require("node:crypto");
@@ -12,8 +13,9 @@ const migration_runner_prisma_1 = require("@xemahq/migration-runner-prisma");
12
13
  const platform_common_1 = require("@xemahq/platform-common");
13
14
  const pg_1 = require("pg");
14
15
  const config_1 = require("./config");
15
- const control_plane_client_1 = require("./control-plane-client");
16
16
  const control_plane_discovery_1 = require("./control-plane-discovery");
17
+ const credential_client_1 = require("./credential-client");
18
+ const credential_lease_1 = require("./credential-lease");
17
19
  const migration_history_1 = require("./migration-history");
18
20
  const required_extensions_1 = require("./required-extensions");
19
21
  const resolved_connection_1 = require("./resolved-connection");
@@ -31,17 +33,24 @@ async function resolveServiceToken(serviceToken) {
31
33
  function readEnv(opts) {
32
34
  return opts.env?.() ?? (0, scoped_env_1.scopedEnvView)('The biome database bootstrap');
33
35
  }
34
- async function resolveDatabaseConfig(opts, key, getControlPlaneBaseUrl) {
35
- const local = (0, config_1.resolveBiomeDatabaseConfigFromEnv)(readEnv(opts), key);
36
- if (local !== null) {
37
- return local;
36
+ function resolveLocalOverride(opts, key) {
37
+ const env = readEnv(opts);
38
+ const local = (0, config_1.resolveBiomeDatabaseConfigFromEnv)(env, key);
39
+ if (local !== null && env['NODE_ENV'] === 'production') {
40
+ throw new Error(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: a local DB_* override is set ` +
41
+ 'while NODE_ENV=production. Production database credentials are issued by the ' +
42
+ 'database pool, scoped to this service, and rotated; an environment-supplied ' +
43
+ 'credential is refused. Remove DB_HOST/DB_* from this deployment.');
38
44
  }
39
- const baseUrl = await getControlPlaneBaseUrl();
40
- const token = await resolveServiceToken(opts.serviceToken);
41
- return (0, control_plane_client_1.fetchSystemDatabaseConfig)(baseUrl, token, {
42
- biomeId: opts.biomeId,
43
- ...(key !== schema_name_1.DEFAULT_BIOME_DB_KEY ? { dbKey: key } : {}),
44
- });
45
+ return local;
46
+ }
47
+ async function poolCredentials(opts, key, getControlPlaneBaseUrl) {
48
+ const logicalName = (0, credential_client_1.logicalNameForDatabase)(opts.biomeId, key);
49
+ const fetchFor = async (purpose) => (0, credential_client_1.fetchDatabaseCredential)(await getControlPlaneBaseUrl(), await resolveServiceToken(opts.serviceToken), { logicalName, purpose });
50
+ return {
51
+ migration: await fetchFor(credential_client_1.DatabaseCredentialPurpose.Migration),
52
+ fetchRuntime: () => fetchFor(credential_client_1.DatabaseCredentialPurpose.Runtime),
53
+ };
45
54
  }
46
55
  async function materializeInlineCaCert(biomeId, key, config) {
47
56
  if (config.caCertPem === undefined || config.caCertPem === '') {
@@ -85,7 +94,12 @@ function createDirectPgClient(config) {
85
94
  ssl: buildPgSsl(config),
86
95
  });
87
96
  }
88
- async function ensureSchemaExists(biomeId, key, config, requiredExtensions) {
97
+ var SchemaPosture;
98
+ (function (SchemaPosture) {
99
+ SchemaPosture["CreateIfMissing"] = "create-if-missing";
100
+ SchemaPosture["VerifyOnly"] = "verify-only";
101
+ })(SchemaPosture || (exports.SchemaPosture = SchemaPosture = {}));
102
+ async function ensureSchemaExists(biomeId, key, config, requiredExtensions, posture = SchemaPosture.CreateIfMissing) {
89
103
  const schema = config.schema;
90
104
  const hasSchema = schema !== undefined && schema !== '';
91
105
  if (!hasSchema && requiredExtensions.length === 0) {
@@ -105,7 +119,16 @@ async function ensureSchemaExists(biomeId, key, config, requiredExtensions) {
105
119
  bootstrapLogger.log(`${LOG_PREFIX} biome=${biomeId} key=${key}: verified extension(s) ` +
106
120
  `${requiredExtensions.join(', ')} installed in public`);
107
121
  }
108
- if (hasSchema) {
122
+ if (hasSchema && posture === SchemaPosture.VerifyOnly) {
123
+ const found = await client.query('SELECT 1 FROM pg_namespace WHERE nspname = $1', [schema]);
124
+ if ((found.rowCount ?? 0) === 0) {
125
+ throw new Error(`${LOG_PREFIX} biome=${biomeId} key=${key}: schema "${schema}" does not exist ` +
126
+ `in "${config.database}". The database pool creates a binding's schema before ` +
127
+ 'it issues the credential; its absence means the pool did not provision it.');
128
+ }
129
+ bootstrapLogger.log(`${LOG_PREFIX} biome=${biomeId} key=${key}: verified schema "${schema}" exists`);
130
+ }
131
+ else if (hasSchema) {
109
132
  await client.query('BEGIN');
110
133
  await client.query('SELECT pg_advisory_xact_lock(hashtext($1))', [
111
134
  schema,
@@ -234,9 +257,10 @@ function buildRuntimeUrl(biomeId, key, config, directUrl) {
234
257
  bootstrapLogger.log(`${LOG_PREFIX} biome=${biomeId} key=${key}: runtime routed through pooler ${config.poolerHost}:${config.poolerPort ?? config.port}`);
235
258
  return (0, platform_common_1.ensureBiomeDbSearchPath)(pooledUrl);
236
259
  }
237
- function publishResolvedConnection(key, config, runtimeUrl) {
260
+ function publishResolvedConnection(key, config, runtimeUrl, lease) {
238
261
  (0, resolved_connection_1.publishResolvedBiomeConnection)(key, {
239
262
  url: runtimeUrl,
263
+ ...(lease !== undefined ? { lease } : {}),
240
264
  ...(config.schema !== undefined && config.schema !== ''
241
265
  ? { schema: config.schema }
242
266
  : {}),
@@ -254,16 +278,59 @@ async function bootstrapBiomeDatabases(opts) {
254
278
  for (const decl of opts.databases) {
255
279
  const key = decl.key ?? schema_name_1.DEFAULT_BIOME_DB_KEY;
256
280
  bootstrapLogger.log(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: resolving config for mode=${opts.migrationMode}`);
257
- const rawConfig = await resolveDatabaseConfig(opts, key, getControlPlaneBaseUrl);
258
- const config = await materializeInlineCaCert(opts.biomeId, key, rawConfig);
259
- const directUrl = buildDirectConnectionUrl(opts.biomeId, key, config);
260
- await ensureSchemaExists(opts.biomeId, key, config, opts.requiredExtensions ?? []);
261
- await runPreMigrationCheck(opts.biomeId, key, decl, config);
262
- await runMigrations(opts.biomeId, key, decl.workspaceDir, directUrl);
263
- await assertDatabaseMatchesImage(opts.biomeId, key, decl, config);
264
- const runtimeUrl = buildRuntimeUrl(opts.biomeId, key, config, directUrl);
265
- publishResolvedConnection(key, config, runtimeUrl);
266
- bootstrapLogger.log(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: bootstrap complete`);
281
+ const local = resolveLocalOverride(opts, key);
282
+ if (local !== null) {
283
+ await bootstrapWithOneCredential(opts, key, decl, local);
284
+ continue;
285
+ }
286
+ await bootstrapWithPoolCredentials(opts, key, decl, await poolCredentials(opts, key, getControlPlaneBaseUrl));
287
+ }
288
+ }
289
+ async function bootstrapWithOneCredential(opts, key, decl, rawConfig) {
290
+ const config = await materializeInlineCaCert(opts.biomeId, key, rawConfig);
291
+ const directUrl = buildDirectConnectionUrl(opts.biomeId, key, config);
292
+ await ensureSchemaExists(opts.biomeId, key, config, opts.requiredExtensions ?? [], SchemaPosture.CreateIfMissing);
293
+ await runPreMigrationCheck(opts.biomeId, key, decl, config);
294
+ await runMigrations(opts.biomeId, key, decl.workspaceDir, directUrl);
295
+ await assertDatabaseMatchesImage(opts.biomeId, key, decl, config);
296
+ const runtimeUrl = buildRuntimeUrl(opts.biomeId, key, config, directUrl);
297
+ publishResolvedConnection(key, config, runtimeUrl);
298
+ bootstrapLogger.log(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: bootstrap complete (local override)`);
299
+ }
300
+ async function bootstrapWithPoolCredentials(opts, key, decl, issued) {
301
+ const migration = await materializeInlineCaCert(opts.biomeId, key, issued.migration);
302
+ const migrateUrl = buildDirectConnectionUrl(opts.biomeId, key, migration);
303
+ await ensureSchemaExists(opts.biomeId, key, migration, opts.requiredExtensions ?? [], SchemaPosture.VerifyOnly);
304
+ await runPreMigrationCheck(opts.biomeId, key, decl, migration);
305
+ await runMigrations(opts.biomeId, key, decl.workspaceDir, migrateUrl);
306
+ await assertDatabaseMatchesImage(opts.biomeId, key, decl, migration);
307
+ const runtimeIssued = await issued.fetchRuntime();
308
+ const runtime = await materializeInlineCaCert(opts.biomeId, key, runtimeIssued);
309
+ if (runtimeIssued.credentialMode === credential_client_1.DatabaseCredentialMode.Scoped) {
310
+ const logicalName = (0, credential_client_1.logicalNameForDatabase)(opts.biomeId, key);
311
+ const lease = new credential_lease_1.DatabaseCredentialLease({
312
+ logicalName,
313
+ initial: runtimeIssued,
314
+ renew: issued.fetchRuntime,
315
+ logger: bootstrapLogger,
316
+ });
317
+ lease.start();
318
+ (0, credential_lease_1.registerBiomeDatabaseLease)(lease);
319
+ const runtimeUrl = buildRuntimeUrl(opts.biomeId, key, { ...runtime, username: LEASED_USER_PLACEHOLDER, password: LEASED_PASSWORD_PLACEHOLDER }, buildDirectConnectionUrl(opts.biomeId, key, {
320
+ ...runtime,
321
+ username: LEASED_USER_PLACEHOLDER,
322
+ password: LEASED_PASSWORD_PLACEHOLDER,
323
+ }));
324
+ publishResolvedConnection(key, runtime, runtimeUrl, lease);
325
+ bootstrapLogger.log(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: bootstrap complete ` +
326
+ `(scoped credential, lease until ${lease.expiresAt})`);
327
+ return;
267
328
  }
329
+ const runtimeDirect = buildDirectConnectionUrl(opts.biomeId, key, runtime);
330
+ const runtimeUrl = buildRuntimeUrl(opts.biomeId, key, runtime, runtimeDirect);
331
+ publishResolvedConnection(key, runtime, runtimeUrl);
332
+ bootstrapLogger.log(`${LOG_PREFIX} biome=${opts.biomeId} key=${key}: bootstrap complete (legacy shared credential)`);
268
333
  }
334
+ const LEASED_USER_PLACEHOLDER = 'leased';
335
+ const LEASED_PASSWORD_PLACEHOLDER = 'leased';
269
336
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/lib/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { BiomeDatabaseConfig } from './config';
2
+ export declare enum DatabaseCredentialPurpose {
3
+ Migration = "migration",
4
+ Runtime = "runtime"
5
+ }
6
+ export declare enum DatabaseCredentialMode {
7
+ Legacy = "legacy",
8
+ Scoped = "scoped"
9
+ }
10
+ export declare const SERVICE_BINDING_SCOPE = "system";
11
+ export interface DatabaseCredentialRequest {
12
+ readonly logicalName: string;
13
+ readonly purpose: DatabaseCredentialPurpose;
14
+ }
15
+ export interface IssuedDatabaseCredential extends BiomeDatabaseConfig {
16
+ readonly credentialMode: DatabaseCredentialMode;
17
+ readonly expiresAt?: string;
18
+ readonly renewAfter?: string;
19
+ }
20
+ export declare function fetchDatabaseCredential(baseUrl: string, serviceToken: string, request: DatabaseCredentialRequest): Promise<IssuedDatabaseCredential>;
21
+ export declare function logicalNameForDatabase(biomeId: string, dbKey: string): string;
22
+ //# sourceMappingURL=credential-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-client.d.ts","sourceRoot":"","sources":["../../src/lib/credential-client.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,oBAAY,yBAAyB;IACnC,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAGD,oBAAY,sBAAsB;IAEhC,MAAM,WAAW;IAEjB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAE9C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;CAC7C;AAGD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAEhD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAkBD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA2BnC;AA0DD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SERVICE_BINDING_SCOPE = exports.DatabaseCredentialMode = exports.DatabaseCredentialPurpose = void 0;
4
+ exports.fetchDatabaseCredential = fetchDatabaseCredential;
5
+ exports.logicalNameForDatabase = logicalNameForDatabase;
6
+ const platform_common_1 = require("@xemahq/platform-common");
7
+ var DatabaseCredentialPurpose;
8
+ (function (DatabaseCredentialPurpose) {
9
+ DatabaseCredentialPurpose["Migration"] = "migration";
10
+ DatabaseCredentialPurpose["Runtime"] = "runtime";
11
+ })(DatabaseCredentialPurpose || (exports.DatabaseCredentialPurpose = DatabaseCredentialPurpose = {}));
12
+ var DatabaseCredentialMode;
13
+ (function (DatabaseCredentialMode) {
14
+ DatabaseCredentialMode["Legacy"] = "legacy";
15
+ DatabaseCredentialMode["Scoped"] = "scoped";
16
+ })(DatabaseCredentialMode || (exports.DatabaseCredentialMode = DatabaseCredentialMode = {}));
17
+ exports.SERVICE_BINDING_SCOPE = 'system';
18
+ const REQUIRED_FIELDS = [
19
+ 'host',
20
+ 'port',
21
+ 'username',
22
+ 'password',
23
+ 'database',
24
+ 'schema',
25
+ 'credentialMode',
26
+ ];
27
+ async function fetchDatabaseCredential(baseUrl, serviceToken, request) {
28
+ const url = `${baseUrl.replace(/\/$/, '')}/system-databases/credentials`;
29
+ const response = await fetch(url, {
30
+ method: 'POST',
31
+ headers: {
32
+ authorization: `Bearer ${serviceToken}`,
33
+ 'content-type': 'application/json',
34
+ },
35
+ body: JSON.stringify({
36
+ logicalName: request.logicalName,
37
+ scope: exports.SERVICE_BINDING_SCOPE,
38
+ purpose: request.purpose,
39
+ }),
40
+ });
41
+ if (!response.ok) {
42
+ const body = await response.text().catch(() => '<unreadable body>');
43
+ throw new Error(`fetchDatabaseCredential: ${url} responded ${response.status} ` +
44
+ `${response.statusText} for ${request.purpose} credential ` +
45
+ `"${request.logicalName}": ${body}`);
46
+ }
47
+ const payload = (0, platform_common_1.unwrapPlatformResponseEnvelope)(await response.json(), `fetchDatabaseCredential: ${url}`);
48
+ return assertIssuedCredential(payload, url, request);
49
+ }
50
+ function assertIssuedCredential(payload, url, request) {
51
+ const record = payload !== null && typeof payload === 'object'
52
+ ? Object.fromEntries(Object.entries(payload))
53
+ : {};
54
+ const missing = REQUIRED_FIELDS.filter((field) => {
55
+ const value = record[field];
56
+ return value === undefined || value === null || value === '';
57
+ });
58
+ if (missing.length > 0) {
59
+ throw new Error(`fetchDatabaseCredential: ${url} returned a credential missing ` +
60
+ `${missing.join(', ')} (present: [${Object.keys(record).join(', ')}]).`);
61
+ }
62
+ const mode = record['credentialMode'];
63
+ if (mode !== DatabaseCredentialMode.Legacy &&
64
+ mode !== DatabaseCredentialMode.Scoped) {
65
+ throw new Error(`fetchDatabaseCredential: ${url} returned unknown credentialMode "${String(mode)}".`);
66
+ }
67
+ const credential = record;
68
+ if (mode === DatabaseCredentialMode.Scoped) {
69
+ const expiresAt = Date.parse(credential.expiresAt ?? '');
70
+ const renewAfter = Date.parse(credential.renewAfter ?? '');
71
+ if (!Number.isFinite(expiresAt) ||
72
+ !Number.isFinite(renewAfter) ||
73
+ renewAfter >= expiresAt) {
74
+ throw new Error(`fetchDatabaseCredential: ${url} returned a scoped ${request.purpose} ` +
75
+ `credential for "${request.logicalName}" with an absent or incoherent ` +
76
+ `lease (renewAfter=${String(credential.renewAfter)}, ` +
77
+ `expiresAt=${String(credential.expiresAt)}).`);
78
+ }
79
+ }
80
+ return credential;
81
+ }
82
+ function logicalNameForDatabase(biomeId, dbKey) {
83
+ return dbKey === 'primary' ? biomeId : `${biomeId}-${dbKey}`;
84
+ }
85
+ //# sourceMappingURL=credential-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-client.js","sourceRoot":"","sources":["../../src/lib/credential-client.ts"],"names":[],"mappings":";;;AA2EA,0DA+BC;AA0DD,wDAEC;AA9ID,6DAAyE;AAKzE,IAAY,yBAGX;AAHD,WAAY,yBAAyB;IACnC,oDAAuB,CAAA;IACvB,gDAAmB,CAAA;AACrB,CAAC,EAHW,yBAAyB,yCAAzB,yBAAyB,QAGpC;AAGD,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAEhC,2CAAiB,CAAA;IAEjB,2CAAiB,CAAA;AACnB,CAAC,EALW,sBAAsB,sCAAtB,sBAAsB,QAKjC;AAGY,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AAgB9C,MAAM,eAAe,GAAG;IACtB,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,QAAQ;IACR,gBAAgB;CACR,CAAC;AAQJ,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,YAAoB,EACpB,OAAkC;IAElC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,YAAY,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,6BAAqB;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,cAAc,QAAQ,CAAC,MAAM,GAAG;YAC7D,GAAG,QAAQ,CAAC,UAAU,QAAQ,OAAO,CAAC,OAAO,cAAc;YAC3D,IAAI,OAAO,CAAC,WAAW,MAAM,IAAI,EAAE,CACtC,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAY,IAAA,gDAA8B,EACrD,MAAM,QAAQ,CAAC,IAAI,EAAE,EACrB,4BAA4B,GAAG,EAAE,CAClC,CAAC;IACF,OAAO,sBAAsB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,GAAW,EACX,OAAkC;IAElC,MAAM,MAAM,GACV,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC7C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,iCAAiC;YAC9D,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACtC,IACE,IAAI,KAAK,sBAAsB,CAAC,MAAM;QACtC,IAAI,KAAK,sBAAsB,CAAC,MAAM,EACtC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,qCAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,MAA6C,CAAC;IACjE,IAAI,IAAI,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC3D,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5B,UAAU,IAAI,SAAS,EACvB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,sBAAsB,OAAO,CAAC,OAAO,GAAG;gBACrE,mBAAmB,OAAO,CAAC,WAAW,iCAAiC;gBACvE,qBAAqB,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI;gBACtD,aAAa,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAUD,SAAgB,sBAAsB,CAAC,OAAe,EAAE,KAAa;IACnE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Client } from 'pg';
2
+ import type { IssuedDatabaseCredential } from './credential-client';
3
+ export interface CredentialLeaseLogger {
4
+ log(message: string): void;
5
+ error(message: string): void;
6
+ }
7
+ export declare class DatabaseCredentialExpiredError extends Error {
8
+ readonly logicalName: string;
9
+ readonly expiresAt: string;
10
+ constructor(logicalName: string, expiresAt: string);
11
+ }
12
+ export interface DatabaseCredentialLeaseOptions {
13
+ readonly logicalName: string;
14
+ readonly initial: IssuedDatabaseCredential;
15
+ readonly renew: () => Promise<IssuedDatabaseCredential>;
16
+ readonly logger: CredentialLeaseLogger;
17
+ readonly now?: () => number;
18
+ }
19
+ interface CredentialSnapshot {
20
+ readonly user: string;
21
+ readonly password: string;
22
+ }
23
+ export declare class DatabaseCredentialLease {
24
+ private readonly options;
25
+ private current;
26
+ private timer;
27
+ private stopped;
28
+ private readonly now;
29
+ constructor(options: DatabaseCredentialLeaseOptions);
30
+ get logicalName(): string;
31
+ get expiresAt(): string;
32
+ isLive(): boolean;
33
+ snapshot(): CredentialSnapshot;
34
+ assertLive(): void;
35
+ start(): void;
36
+ stop(): void;
37
+ renewNow(): Promise<void>;
38
+ private schedule;
39
+ private tick;
40
+ }
41
+ export declare function leasedClientClass(lease: DatabaseCredentialLease): typeof Client;
42
+ export declare function expiredBiomeDatabaseLeases(): readonly string[];
43
+ export declare function assertBiomeDatabaseLeasesLive(): void;
44
+ export declare function registerBiomeDatabaseLease(lease: DatabaseCredentialLease): void;
45
+ export declare function stopBiomeDatabaseLeases(): void;
46
+ export {};
47
+ //# sourceMappingURL=credential-lease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-lease.d.ts","sourceRoot":"","sources":["../../src/lib/credential-lease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAI5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAuCpE,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAGD,qBAAa,8BAA+B,SAAQ,KAAK;IAErD,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM;CAQ7B;AAOD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,uBAAuB;IAMtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEN,OAAO,EAAE,8BAA8B;IAWpE,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAGD,MAAM,IAAI,OAAO;IASjB,QAAQ,IAAI,kBAAkB;IAK9B,UAAU,IAAI,IAAI;IAUlB,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IASN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB/B,OAAO,CAAC,QAAQ;YAcF,IAAI;CAyBnB;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,MAAM,CAsD/E;AAiBD,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAI9D;AAGD,wBAAgB,6BAA6B,IAAI,IAAI,CAOpD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAI/E;AAGD,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseCredentialLease = exports.DatabaseCredentialExpiredError = void 0;
4
+ exports.leasedClientClass = leasedClientClass;
5
+ exports.expiredBiomeDatabaseLeases = expiredBiomeDatabaseLeases;
6
+ exports.assertBiomeDatabaseLeasesLive = assertBiomeDatabaseLeasesLive;
7
+ exports.registerBiomeDatabaseLease = registerBiomeDatabaseLease;
8
+ exports.stopBiomeDatabaseLeases = stopBiomeDatabaseLeases;
9
+ const pg_1 = require("pg");
10
+ const credential_client_1 = require("./credential-client");
11
+ class DatabaseCredentialExpiredError extends Error {
12
+ logicalName;
13
+ expiresAt;
14
+ constructor(logicalName, expiresAt) {
15
+ super(`[biome-database] the leased runtime credential for "${logicalName}" expired at ` +
16
+ `${expiresAt} and could not be renewed. New database connections are refused ` +
17
+ 'rather than attempted with a credential the server no longer accepts.');
18
+ this.logicalName = logicalName;
19
+ this.expiresAt = expiresAt;
20
+ }
21
+ }
22
+ exports.DatabaseCredentialExpiredError = DatabaseCredentialExpiredError;
23
+ const MAX_RETRY_MS = 30_000;
24
+ const MIN_RETRY_MS = 1_000;
25
+ class DatabaseCredentialLease {
26
+ options;
27
+ current;
28
+ timer;
29
+ stopped = false;
30
+ now;
31
+ constructor(options) {
32
+ this.options = options;
33
+ if (options.initial.credentialMode !== credential_client_1.DatabaseCredentialMode.Scoped) {
34
+ throw new Error(`[biome-database] a lease holds only SCOPED credentials; "${options.logicalName}" ` +
35
+ `was issued in ${options.initial.credentialMode} mode.`);
36
+ }
37
+ this.current = options.initial;
38
+ this.now = options.now ?? Date.now;
39
+ }
40
+ get logicalName() {
41
+ return this.options.logicalName;
42
+ }
43
+ get expiresAt() {
44
+ return this.current.expiresAt;
45
+ }
46
+ isLive() {
47
+ return this.now() < Date.parse(this.current.expiresAt);
48
+ }
49
+ snapshot() {
50
+ return { user: this.current.username, password: this.current.password };
51
+ }
52
+ assertLive() {
53
+ if (!this.isLive()) {
54
+ throw new DatabaseCredentialExpiredError(this.options.logicalName, this.current.expiresAt);
55
+ }
56
+ }
57
+ start() {
58
+ if (this.timer === undefined && !this.stopped) {
59
+ this.schedule(Date.parse(this.current.renewAfter) - this.now());
60
+ }
61
+ }
62
+ stop() {
63
+ this.stopped = true;
64
+ if (this.timer !== undefined) {
65
+ clearTimeout(this.timer);
66
+ this.timer = undefined;
67
+ }
68
+ }
69
+ async renewNow() {
70
+ const next = await this.options.renew();
71
+ if (next.credentialMode !== credential_client_1.DatabaseCredentialMode.Scoped) {
72
+ throw new Error(`[biome-database] renewal of "${this.options.logicalName}" returned a ` +
73
+ `${next.credentialMode} credential; a binding never returns from scoped to ` +
74
+ 'legacy without a restart, so this is refused rather than adopted.');
75
+ }
76
+ if (next.host !== this.current.host ||
77
+ next.port !== this.current.port ||
78
+ next.database !== this.current.database ||
79
+ next.schema !== this.current.schema) {
80
+ throw new Error(`[biome-database] renewal of "${this.options.logicalName}" moved the database ` +
81
+ `(${this.current.database}.${String(this.current.schema)} → ` +
82
+ `${next.database}.${String(next.schema)}). A lease renews a credential, never ` +
83
+ 'a location; refusing.');
84
+ }
85
+ this.current = next;
86
+ }
87
+ schedule(delayMs) {
88
+ if (this.stopped) {
89
+ return;
90
+ }
91
+ this.timer = setTimeout(() => {
92
+ this.timer = undefined;
93
+ void this.tick();
94
+ }, Math.max(0, delayMs));
95
+ this.timer.unref();
96
+ }
97
+ async tick() {
98
+ try {
99
+ await this.renewNow();
100
+ this.options.logger.log(`[biome-database] renewed runtime credential for "${this.options.logicalName}" ` +
101
+ `(user ${this.current.username}, expires ${String(this.current.expiresAt)}).`);
102
+ this.schedule(Date.parse(this.current.renewAfter) - this.now());
103
+ }
104
+ catch (error) {
105
+ const remaining = Date.parse(this.current.expiresAt) - this.now();
106
+ this.options.logger.error(`[biome-database] renewing the runtime credential for ` +
107
+ `"${this.options.logicalName}" failed (${remaining}ms of lease left): ` +
108
+ `${error instanceof Error ? error.message : String(error)}`);
109
+ if (remaining > 0) {
110
+ this.schedule(Math.min(MAX_RETRY_MS, Math.max(MIN_RETRY_MS, remaining / 4)));
111
+ }
112
+ }
113
+ }
114
+ }
115
+ exports.DatabaseCredentialLease = DatabaseCredentialLease;
116
+ function leasedClientClass(lease) {
117
+ return class LeasedClient extends pg_1.Client {
118
+ constructor(config) {
119
+ super(config);
120
+ const credential = lease.snapshot();
121
+ const self = this;
122
+ self.connectionParameters.user = credential.user;
123
+ self.user = credential.user;
124
+ self.password = () => {
125
+ lease.assertLive();
126
+ return credential.password;
127
+ };
128
+ }
129
+ connect(callback) {
130
+ if (!lease.isLive()) {
131
+ const refusal = new DatabaseCredentialExpiredError(lease.logicalName, lease.expiresAt);
132
+ if (callback !== undefined) {
133
+ process.nextTick(() => callback(refusal));
134
+ return;
135
+ }
136
+ return Promise.reject(refusal);
137
+ }
138
+ return callback !== undefined ? super.connect(callback) : super.connect();
139
+ }
140
+ };
141
+ }
142
+ const LEASE_READINESS = Symbol.for('xema.biome-database.lease-readiness');
143
+ const leases = new Set();
144
+ function expiredBiomeDatabaseLeases() {
145
+ return [...leases]
146
+ .filter((lease) => !lease.isLive())
147
+ .map((lease) => `${lease.logicalName} (expired ${lease.expiresAt})`);
148
+ }
149
+ function assertBiomeDatabaseLeasesLive() {
150
+ const expired = expiredBiomeDatabaseLeases();
151
+ if (expired.length > 0) {
152
+ throw new Error(`[biome-database] database credential lease(s) expired: ${expired.join(', ')}`);
153
+ }
154
+ }
155
+ function registerBiomeDatabaseLease(lease) {
156
+ leases.add(lease);
157
+ globalThis[LEASE_READINESS] =
158
+ assertBiomeDatabaseLeasesLive;
159
+ }
160
+ function stopBiomeDatabaseLeases() {
161
+ for (const lease of leases) {
162
+ lease.stop();
163
+ }
164
+ leases.clear();
165
+ }
166
+ //# sourceMappingURL=credential-lease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-lease.js","sourceRoot":"","sources":["../../src/lib/credential-lease.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BiomeDatabaseMigrationMode } from '../migration-mode';
2
2
  import type { BiomeDatabaseDeclaration } from '../bootstrap';
3
- import type { DynamicModule } from '@nestjs/common';
3
+ import type { DynamicModule, OnApplicationShutdown } from '@nestjs/common';
4
4
  export declare const BIOME_DATABASE_READY: unique symbol;
5
5
  interface BiomeDatabaseModuleCommonOptions {
6
6
  readonly biomeId: string;
@@ -12,7 +12,8 @@ export interface ApplicationManagedBiomeDatabaseModuleOptions extends BiomeDatab
12
12
  readonly requiredExtensions?: readonly string[];
13
13
  }
14
14
  export type BiomeDatabaseModuleOptions = ApplicationManagedBiomeDatabaseModuleOptions;
15
- export declare class BiomeDatabaseModule {
15
+ export declare class BiomeDatabaseModule implements OnApplicationShutdown {
16
+ onApplicationShutdown(): void;
16
17
  static forRoot(opts: BiomeDatabaseModuleOptions): DynamicModule;
17
18
  }
18
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"biome-database.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAYpD,eAAO,MAAM,oBAAoB,eAEhC,CAAC;AAEF,UAAU,gCAAgC;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAgBzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,4CACf,SAAQ,gCAAgC;IACxC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IAKtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IASxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAID,MAAM,MAAM,0BAA0B,GACpC,4CAA4C,CAAC;AAsE/C,qBACa,mBAAmB;IAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,aAAa;CAiDhE"}
1
+ {"version":3,"file":"biome-database.module.d.ts","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAY3E,eAAO,MAAM,oBAAoB,eAEhC,CAAC;AAEF,UAAU,gCAAgC;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAgBzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,4CACf,SAAQ,gCAAgC;IACxC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,kBAAkB,CAAC;IAKtE,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;IASxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAID,MAAM,MAAM,0BAA0B,GACpC,4CAA4C,CAAC;AAsE/C,qBACa,mBAAoB,YAAW,qBAAqB;IAM/D,qBAAqB,IAAI,IAAI;IAI7B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,aAAa;CAiDhE"}
@@ -12,6 +12,7 @@ const common_1 = require("@nestjs/common");
12
12
  const identity_client_1 = require("@xemahq/identity-client");
13
13
  const service_registry_nest_1 = require("@xemahq/service-registry-nest");
14
14
  const bootstrap_1 = require("../bootstrap");
15
+ const credential_lease_1 = require("../credential-lease");
15
16
  const migration_mode_1 = require("../migration-mode");
16
17
  exports.BIOME_DATABASE_READY = Symbol.for('@xemahq/biome-database-nest:ready');
17
18
  function assertBiomeDatabaseModuleOptions(opts) {
@@ -28,6 +29,9 @@ function assertBiomeDatabaseModuleOptions(opts) {
28
29
  }
29
30
  }
30
31
  let BiomeDatabaseModule = BiomeDatabaseModule_1 = class BiomeDatabaseModule {
32
+ onApplicationShutdown() {
33
+ (0, credential_lease_1.stopBiomeDatabaseLeases)();
34
+ }
31
35
  static forRoot(opts) {
32
36
  assertBiomeDatabaseModuleOptions(opts);
33
37
  const databases = opts.databases;
@@ -1 +1 @@
1
- {"version":3,"file":"biome-database.module.js","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAwC;AACxC,6DAAmE;AACnE,yEAGuC;AAEvC,4CAAuD;AACvD,sDAA+D;AAiBlD,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAC5C,mCAAmC,CACpC,CAAC;AA+CF,SAAS,gCAAgC,CACvC,IAAa;IAEb,IACE,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,KAAK,2CAA0B,CAAC,kBAAkB,EACpE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,IACE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;QACtB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC;AA8CM,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAE9B,MAAM,CAAC,OAAO,CAAC,IAAa;QAC1B,gCAAgC,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAwC,IAAI,CAAC,SAAS,CAAC;QAQtE,IAAI,IAAA,2CAAmB,GAAE,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,qBAAmB;gBAC3B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC9D,OAAO,EAAE,CAAC,4BAAoB,CAAC;aAChC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,4BAAoB;oBAC7B,UAAU,EAAE,KAAK,EACf,iBAA2C,EAC3C,WAAwB,EACT,EAAE;wBACjB,MAAM,IAAA,mCAAuB,EAAC;4BAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,SAAS;4BACT,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACpD,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;gCACvC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;gCACjD,CAAC,CAAC,EAAE,CAAC;4BACP,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE;4BACtD,WAAW;yBACZ,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,MAAM,EAAE,CAAC,0CAAwB,EAAE,0CAAkB,CAAC;iBACvD;aACF;YACD,OAAO,EAAE,CAAC,4BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;CACF,CAAA;AAlDY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CAkD/B"}
1
+ {"version":3,"file":"biome-database.module.js","sourceRoot":"","sources":["../../../src/lib/nest/biome-database.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAwC;AACxC,6DAAmE;AACnE,yEAGuC;AAEvC,4CAAuD;AACvD,0DAA8D;AAC9D,sDAA+D;AAiBlD,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAC5C,mCAAmC,CACpC,CAAC;AA+CF,SAAS,gCAAgC,CACvC,IAAa;IAEb,IACE,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,KAAK,2CAA0B,CAAC,kBAAkB,EACpE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,IACE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;QACtB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC;AA8CM,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAM9B,qBAAqB;QACnB,IAAA,0CAAuB,GAAE,CAAC;IAC5B,CAAC;IAGD,MAAM,CAAC,OAAO,CAAC,IAAa;QAC1B,gCAAgC,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAwC,IAAI,CAAC,SAAS,CAAC;QAQtE,IAAI,IAAA,2CAAmB,GAAE,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,qBAAmB;gBAC3B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,4BAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC9D,OAAO,EAAE,CAAC,4BAAoB,CAAC;aAChC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,4BAAoB;oBAC7B,UAAU,EAAE,KAAK,EACf,iBAA2C,EAC3C,WAAwB,EACT,EAAE;wBACjB,MAAM,IAAA,mCAAuB,EAAC;4BAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,SAAS;4BACT,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACpD,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;gCACvC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;gCACjD,CAAC,CAAC,EAAE,CAAC;4BACP,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE;4BACtD,WAAW;yBACZ,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,MAAM,EAAE,CAAC,0CAAwB,EAAE,0CAAkB,CAAC;iBACvD;aACF;YACD,OAAO,EAAE,CAAC,4BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;CACF,CAAA;AA3DY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CA2D/B"}
@@ -1,7 +1,9 @@
1
+ import type { DatabaseCredentialLease } from './credential-lease';
1
2
  export interface ResolvedBiomeConnection {
2
3
  readonly url: string;
3
4
  readonly schema?: string;
4
5
  readonly poolMax?: number;
6
+ readonly lease?: DatabaseCredentialLease;
5
7
  }
6
8
  export declare function publishResolvedBiomeConnection(dbKey: string | undefined, connection: ResolvedBiomeConnection): void;
7
9
  export declare function readResolvedBiomeConnection(dbKey?: string): ResolvedBiomeConnection | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"resolved-connection.d.ts","sourceRoot":"","sources":["../../src/lib/resolved-connection.ts"],"names":[],"mappings":"AAgDA,MAAM,WAAW,uBAAuB;IAMtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAqCD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,uBAAuB,GAClC,IAAI,CAiBN;AAWD,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,uBAAuB,GAAG,SAAS,CAIrC;AAUD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
1
+ {"version":3,"file":"resolved-connection.d.ts","sourceRoot":"","sources":["../../src/lib/resolved-connection.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE,MAAM,WAAW,uBAAuB;IAMtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAO1B,QAAQ,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAqCD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,uBAAuB,GAClC,IAAI,CAiBN;AAWD,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,uBAAuB,GAAG,SAAS,CAIrC;AAUD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolved-connection.js","sourceRoot":"","sources":["../../src/lib/resolved-connection.ts"],"names":[],"mappings":";;AAgGA,wEAoBC;AAWD,kEAMC;AAUD,sEAEC;AArGD,+CAAqD;AACrD,6CAA+C;AA4B/C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAmC,CAAC;AAGvE,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,kCAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAGD,SAAS,WAAW,CAAC,KAAyB,EAAE,OAAe;IAC7D,OAAO,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAaD,SAAgB,8BAA8B,CAC5C,KAAyB,EACzB,UAAmC;IAEnC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,IACE,QAAQ,KAAK,SAAS;QACtB,CAAC,QAAQ,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wEAAwE;YACtE,IAAI,GAAG,cAAc,QAAQ,CAAC,MAAM,IAAI,QAAQ,OAAO;YACvD,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,qCAAqC;YACtE,uEAAuE;YACvE,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAWD,SAAgB,2BAA2B,CACzC,KAAc;IAEd,OAAO,mBAAmB,CAAC,GAAG,CAC5B,WAAW,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAC1D,CAAC;AACJ,CAAC;AAUD,SAAgB,6BAA6B;IAC3C,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"resolved-connection.js","sourceRoot":"","sources":["../../src/lib/resolved-connection.ts"],"names":[],"mappings":";;AAyGA,wEAoBC;AAWD,kEAMC;AAUD,sEAEC;AA9GD,+CAAqD;AACrD,6CAA+C;AAqC/C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAmC,CAAC;AAGvE,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,kCAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAGD,SAAS,WAAW,CAAC,KAAyB,EAAE,OAAe;IAC7D,OAAO,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAaD,SAAgB,8BAA8B,CAC5C,KAAyB,EACzB,UAAmC;IAEnC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,IACE,QAAQ,KAAK,SAAS;QACtB,CAAC,QAAQ,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wEAAwE;YACtE,IAAI,GAAG,cAAc,QAAQ,CAAC,MAAM,IAAI,QAAQ,OAAO;YACvD,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,qCAAqC;YACtE,uEAAuE;YACvE,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAWD,SAAgB,2BAA2B,CACzC,KAAc;IAEd,OAAO,mBAAmB,CAAC,GAAG,CAC5B,WAAW,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAC1D,CAAC;AACJ,CAAC;AAUD,SAAgB,6BAA6B;IAC3C,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/biome-database-nest",
3
- "version": "0.30.0",
3
+ "version": "0.31.0",
4
4
  "description": "Explicit database migration ownership, least-privilege runtime verification, and schema-qualified Prisma wiring for Xema biome services.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
@@ -29,19 +29,19 @@
29
29
  "@types/jest": "^30.0.0",
30
30
  "@types/node": "25.2.3",
31
31
  "@types/pg": "^8.16.0",
32
- "@xemahq/identity-client": "^0.10.0",
33
- "@xemahq/contracts": "^0.23.0",
32
+ "@xemahq/identity-client": "^0.12.0",
33
+ "@xemahq/contracts": "^0.27.0",
34
34
  "@xemahq/pg-test-harness": "^0.3.1",
35
- "@xemahq/platform-common": ">=0.40.0",
35
+ "@xemahq/platform-common": ">=0.43.0",
36
36
  "eslint": "^9.39.4",
37
37
  "jest": "^30.3.0",
38
38
  "prettier": "3.6.2",
39
39
  "prisma": "7.8.0",
40
40
  "ts-jest": "^29.4.9",
41
41
  "typescript": "5.9.3",
42
- "@xemahq/xema-decorators": "0.20.0",
43
- "@xemahq/service-registry-nest": "0.15.2",
44
- "@xemahq/eslint-config": "0.7.1"
42
+ "@xemahq/service-registry-nest": "0.16.0",
43
+ "@xemahq/eslint-config": "0.9.0",
44
+ "@xemahq/xema-decorators": "0.20.0"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@nestjs/common": "^10 || ^11",
@@ -1,7 +0,0 @@
1
- import type { BiomeDatabaseConfig } from './config';
2
- export interface SystemDatabaseConfigRequest {
3
- readonly biomeId: string;
4
- readonly dbKey?: string;
5
- }
6
- export declare function fetchSystemDatabaseConfig(baseUrl: string, serviceToken: string, req: SystemDatabaseConfigRequest): Promise<BiomeDatabaseConfig>;
7
- //# sourceMappingURL=control-plane-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-plane-client.d.ts","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchSystemDatabaseConfig = fetchSystemDatabaseConfig;
4
- const platform_common_1 = require("@xemahq/platform-common");
5
- async function fetchSystemDatabaseConfig(baseUrl, serviceToken, req) {
6
- const url = `${baseUrl.replace(/\/$/, '')}/system-databases/config`;
7
- const response = await fetch(url, {
8
- method: 'POST',
9
- headers: {
10
- authorization: `Bearer ${serviceToken}`,
11
- 'content-type': 'application/json',
12
- },
13
- body: JSON.stringify({
14
- biomeId: req.biomeId,
15
- ...(req.dbKey !== undefined ? { dbKey: req.dbKey } : {}),
16
- }),
17
- });
18
- if (!response.ok) {
19
- const body = await response.text().catch(() => '<unreadable body>');
20
- throw new Error(`fetchSystemDatabaseConfig: ${url} responded ${response.status} ${response.statusText}: ${body}`);
21
- }
22
- const payload = await response.json();
23
- const config = (0, platform_common_1.unwrapPlatformResponseEnvelope)(payload, `fetchSystemDatabaseConfig: ${url}`);
24
- assertCompleteConfig(config, url);
25
- return config;
26
- }
27
- const REQUIRED_CONFIG_FIELDS = [
28
- 'host',
29
- 'port',
30
- 'username',
31
- 'password',
32
- 'database',
33
- ];
34
- function assertCompleteConfig(config, url) {
35
- const record = config !== null && typeof config === 'object'
36
- ? Object.fromEntries(Object.entries(config))
37
- : {};
38
- const missing = REQUIRED_CONFIG_FIELDS.filter((field) => {
39
- const value = record[field];
40
- return value === undefined || value === null || value === '';
41
- });
42
- if (missing.length > 0) {
43
- throw new Error(`fetchSystemDatabaseConfig: ${url} returned a config missing required ` +
44
- `field(s): ${missing.join(', ')}. Present keys: ` +
45
- `[${Object.keys(record).join(', ')}]. (If the keys look nested, the ` +
46
- `{ data } response envelope was not unwrapped.)`);
47
- }
48
- }
49
- //# sourceMappingURL=control-plane-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-plane-client.js","sourceRoot":"","sources":["../../src/lib/control-plane-client.ts"],"names":[],"mappings":";;AAmDA,8DAiCC;AApDD,6DAAyE;AAmBlE,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,YAAoB,EACpB,GAAgC;IAEhC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC;IAEpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,YAAY,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,cAAc,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAY,IAAA,gDAA8B,EACpD,OAAO,EACP,8BAA8B,GAAG,EAAE,CACpC,CAAC;IACF,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;CACF,CAAC;AASX,SAAS,oBAAoB,CAC3B,MAAe,EACf,GAAW;IAIX,MAAM,MAAM,GACV,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAC3C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,sCAAsC;YACrE,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;YACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC;YACrE,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC"}