@superblocksteam/shared 0.9598.2 → 0.9600.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/dist/database-lifecycle/index.d.ts +26 -2
- package/dist/database-lifecycle/index.d.ts.map +1 -1
- package/dist/database-lifecycle/index.js +122 -3
- package/dist/database-lifecycle/index.js.map +1 -1
- package/dist/database-lifecycle/index.test.js +90 -6
- package/dist/database-lifecycle/index.test.js.map +1 -1
- package/dist/plugins/templates/postgres.d.ts.map +1 -1
- package/dist/plugins/templates/postgres.js +164 -1
- package/dist/plugins/templates/postgres.js.map +1 -1
- package/dist/plugins/templates/postgres.test.d.ts +2 -0
- package/dist/plugins/templates/postgres.test.d.ts.map +1 -0
- package/dist/plugins/templates/postgres.test.js +224 -0
- package/dist/plugins/templates/postgres.test.js.map +1 -0
- package/dist/types/datasource/auth.d.ts +4 -0
- package/dist/types/datasource/auth.d.ts.map +1 -1
- package/dist/types/datasource/auth.js +6 -1
- package/dist/types/datasource/auth.js.map +1 -1
- package/dist/types/datasource/index.d.ts +104 -3
- package/dist/types/datasource/index.d.ts.map +1 -1
- package/dist/types/datasource/index.js.map +1 -1
- package/dist/types/deployment/deployQueueStatus.d.ts +3 -1
- package/dist/types/deployment/deployQueueStatus.d.ts.map +1 -1
- package/dist/types/deployment/deployQueueStatus.js +2 -0
- package/dist/types/deployment/deployQueueStatus.js.map +1 -1
- package/dist-esm/database-lifecycle/index.d.ts +26 -2
- package/dist-esm/database-lifecycle/index.d.ts.map +1 -1
- package/dist-esm/database-lifecycle/index.js +117 -2
- package/dist-esm/database-lifecycle/index.js.map +1 -1
- package/dist-esm/database-lifecycle/index.test.js +91 -7
- package/dist-esm/database-lifecycle/index.test.js.map +1 -1
- package/dist-esm/plugins/templates/postgres.d.ts.map +1 -1
- package/dist-esm/plugins/templates/postgres.js +165 -2
- package/dist-esm/plugins/templates/postgres.js.map +1 -1
- package/dist-esm/plugins/templates/postgres.test.d.ts +2 -0
- package/dist-esm/plugins/templates/postgres.test.d.ts.map +1 -0
- package/dist-esm/plugins/templates/postgres.test.js +222 -0
- package/dist-esm/plugins/templates/postgres.test.js.map +1 -0
- package/dist-esm/types/datasource/auth.d.ts +4 -0
- package/dist-esm/types/datasource/auth.d.ts.map +1 -1
- package/dist-esm/types/datasource/auth.js +5 -0
- package/dist-esm/types/datasource/auth.js.map +1 -1
- package/dist-esm/types/datasource/index.d.ts +104 -3
- package/dist-esm/types/datasource/index.d.ts.map +1 -1
- package/dist-esm/types/datasource/index.js.map +1 -1
- package/dist-esm/types/deployment/deployQueueStatus.d.ts +3 -1
- package/dist-esm/types/deployment/deployQueueStatus.d.ts.map +1 -1
- package/dist-esm/types/deployment/deployQueueStatus.js +2 -0
- package/dist-esm/types/deployment/deployQueueStatus.js.map +1 -1
- package/package.json +1 -1
- package/src/database-lifecycle/index.test.ts +107 -6
- package/src/database-lifecycle/index.ts +153 -10
- package/src/plugins/templates/postgres.test.ts +231 -0
- package/src/plugins/templates/postgres.ts +166 -2
- package/src/types/datasource/auth.ts +5 -0
- package/src/types/datasource/index.ts +115 -3
- package/src/types/deployment/deployQueueStatus.ts +3 -1
|
@@ -6,9 +6,15 @@ export declare const LIFECYCLE_OPERATIONS: readonly ["ensure_database", "migrate
|
|
|
6
6
|
export declare const LIFECYCLE_ENVIRONMENTS: readonly ["edit", "preview", "deployed"];
|
|
7
7
|
export declare const DATABASE_ENGINES: readonly ["postgres", "snowflake", "snowflake_postgres", "lakebase"];
|
|
8
8
|
export declare const DATABASE_LIFECYCLE_MANAGED_BY = "database_lifecycle";
|
|
9
|
+
export declare const NATIVE_DB_AUTH_DESCRIPTOR_VERSION: 1;
|
|
10
|
+
export declare const NATIVE_DB_CONNECTOR_ROLE_NAME_PREFIX = "superblocks-native-db-connector";
|
|
11
|
+
export declare const NATIVE_DB_IAM_AUTH_MODE: "aws_iam_role";
|
|
12
|
+
export declare const NATIVE_DB_IDENTIFIER_HASH_DOMAIN = "superblocks-native-db:v1";
|
|
13
|
+
export declare const DATABASE_LIFECYCLE_CAPABILITY_MANAGED_IAM_V1 = "managed-IAM-v1";
|
|
9
14
|
export declare const DATABASE_LIFECYCLE_TAG_OPERATIONS = "databaseLifecycle:operations";
|
|
10
15
|
export declare const DATABASE_LIFECYCLE_TAG_ENGINES = "databaseLifecycle:engines";
|
|
11
16
|
export declare const DATABASE_LIFECYCLE_TAG_ENVIRONMENT_PROFILES = "databaseLifecycle:environmentProfiles";
|
|
17
|
+
export declare const DATABASE_LIFECYCLE_TAG_CAPABILITIES = "databaseLifecycle:capabilities";
|
|
12
18
|
export type LifecycleEnvironment = (typeof LIFECYCLE_ENVIRONMENTS)[number];
|
|
13
19
|
export type DatabaseEngine = (typeof DATABASE_ENGINES)[number];
|
|
14
20
|
export type LifecycleOperation = (typeof LIFECYCLE_OPERATIONS)[number];
|
|
@@ -24,6 +30,20 @@ export type CredentialRef = {
|
|
|
24
30
|
ref: string;
|
|
25
31
|
field?: string;
|
|
26
32
|
};
|
|
33
|
+
export type NativeDbIamDescriptor = {
|
|
34
|
+
application_id: string;
|
|
35
|
+
auth_descriptor_version: typeof NATIVE_DB_AUTH_DESCRIPTOR_VERSION;
|
|
36
|
+
auth_mode: typeof NATIVE_DB_IAM_AUTH_MODE;
|
|
37
|
+
aws_account_id: string;
|
|
38
|
+
binding_id: string;
|
|
39
|
+
cluster_resource_id: string;
|
|
40
|
+
connector_role_arn: string;
|
|
41
|
+
database: string;
|
|
42
|
+
host: string;
|
|
43
|
+
port: number;
|
|
44
|
+
region: string;
|
|
45
|
+
username: string;
|
|
46
|
+
};
|
|
27
47
|
export type DatabaseRequirement = {
|
|
28
48
|
logicalName: string;
|
|
29
49
|
engine: DatabaseEngine;
|
|
@@ -93,6 +113,8 @@ export type LifecycleDispatchContinuation = {
|
|
|
93
113
|
reservationId?: string;
|
|
94
114
|
};
|
|
95
115
|
export type LifecycleDispatchPayload = {
|
|
116
|
+
applicationId: string;
|
|
117
|
+
bindingId: string;
|
|
96
118
|
bindingKey: string;
|
|
97
119
|
connectionMetadata?: Record<string, string | number | boolean>;
|
|
98
120
|
continuation?: LifecycleDispatchContinuation;
|
|
@@ -113,15 +135,17 @@ export declare function computeBindingKey(input: {
|
|
|
113
135
|
applicationId: string;
|
|
114
136
|
environment: LifecycleEnvironment;
|
|
115
137
|
profile: string;
|
|
116
|
-
requirementKey: string;
|
|
117
138
|
}): string;
|
|
118
139
|
export declare function computeLegacyBindingKeyWithoutOrganization(input: {
|
|
119
140
|
applicationId: string;
|
|
120
141
|
environment: LifecycleEnvironment;
|
|
121
142
|
profile: string;
|
|
122
|
-
requirementKey: string;
|
|
123
143
|
}): string;
|
|
124
144
|
export declare function computeDesiredSpecHash(requirement: DatabaseRequirement): Promise<string>;
|
|
145
|
+
export declare function nativeDbIamSessionPolicy(descriptor: NativeDbIamDescriptor): string;
|
|
146
|
+
export declare function parseNativeDbIamDescriptor(value: unknown): NativeDbIamDescriptor | undefined;
|
|
147
|
+
export declare function computeNativeDbApplicationToken(trustedApplicationId: string): Promise<string>;
|
|
148
|
+
export declare function computeNativeDbDatabaseName(deploymentToken: string, trustedDatabaseId: string): Promise<string>;
|
|
125
149
|
export declare function computeResourceKey(input: {
|
|
126
150
|
organizationId: string;
|
|
127
151
|
applicationId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,2CAA4C,CAAC;AACnF,eAAO,MAAM,6BAA6B,+DAAgE,CAAC;AAC3G,eAAO,MAAM,gBAAgB,+FAA4E,CAAC;AAC1G,eAAO,MAAM,0BAA0B,4CAA6C,CAAC;AAKrF,eAAO,MAAM,oBAAoB,mEAAoE,CAAC;AAKtG,eAAO,MAAM,sBAAsB,0CAA2C,CAAC;AAC/E,eAAO,MAAM,gBAAgB,sEAAuE,CAAC;AACrG,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CREDENTIAL_BEARING_DSN_SCHEMES = exports.SECRET_KEY_PATTERN = exports.PHYSICAL_DATABASE_INSTANCE_STATUSES = exports.CREDENTIAL_RESOLVERS = exports.DATABASE_LIFECYCLE_TAG_ENVIRONMENT_PROFILES = exports.DATABASE_LIFECYCLE_TAG_ENGINES = exports.DATABASE_LIFECYCLE_TAG_OPERATIONS = exports.DATABASE_LIFECYCLE_MANAGED_BY = exports.DATABASE_ENGINES = exports.LIFECYCLE_ENVIRONMENTS = exports.LIFECYCLE_OPERATIONS = exports.LIFECYCLE_MIGRATION_STATES = exports.LIFECYCLE_STATES = exports.LIFECYCLE_NON_TERMINAL_STATES = exports.LIFECYCLE_TERMINAL_STATES = void 0;
|
|
3
|
+
exports.CREDENTIAL_BEARING_DSN_SCHEMES = exports.SECRET_KEY_PATTERN = exports.PHYSICAL_DATABASE_INSTANCE_STATUSES = exports.CREDENTIAL_RESOLVERS = exports.DATABASE_LIFECYCLE_TAG_CAPABILITIES = exports.DATABASE_LIFECYCLE_TAG_ENVIRONMENT_PROFILES = exports.DATABASE_LIFECYCLE_TAG_ENGINES = exports.DATABASE_LIFECYCLE_TAG_OPERATIONS = exports.DATABASE_LIFECYCLE_CAPABILITY_MANAGED_IAM_V1 = exports.NATIVE_DB_IDENTIFIER_HASH_DOMAIN = exports.NATIVE_DB_IAM_AUTH_MODE = exports.NATIVE_DB_CONNECTOR_ROLE_NAME_PREFIX = exports.NATIVE_DB_AUTH_DESCRIPTOR_VERSION = exports.DATABASE_LIFECYCLE_MANAGED_BY = exports.DATABASE_ENGINES = exports.LIFECYCLE_ENVIRONMENTS = exports.LIFECYCLE_OPERATIONS = exports.LIFECYCLE_MIGRATION_STATES = exports.LIFECYCLE_STATES = exports.LIFECYCLE_NON_TERMINAL_STATES = exports.LIFECYCLE_TERMINAL_STATES = void 0;
|
|
4
4
|
exports.isReadyDatabaseBinding = isReadyDatabaseBinding;
|
|
5
5
|
exports.computeRequirementKey = computeRequirementKey;
|
|
6
6
|
exports.computeBindingKey = computeBindingKey;
|
|
7
7
|
exports.computeLegacyBindingKeyWithoutOrganization = computeLegacyBindingKeyWithoutOrganization;
|
|
8
8
|
exports.computeDesiredSpecHash = computeDesiredSpecHash;
|
|
9
|
+
exports.nativeDbIamSessionPolicy = nativeDbIamSessionPolicy;
|
|
10
|
+
exports.parseNativeDbIamDescriptor = parseNativeDbIamDescriptor;
|
|
11
|
+
exports.computeNativeDbApplicationToken = computeNativeDbApplicationToken;
|
|
12
|
+
exports.computeNativeDbDatabaseName = computeNativeDbDatabaseName;
|
|
9
13
|
exports.computeResourceKey = computeResourceKey;
|
|
10
14
|
exports.isTerminalLifecycleState = isTerminalLifecycleState;
|
|
11
15
|
exports.redactLifecycleSecrets = redactLifecycleSecrets;
|
|
@@ -28,6 +32,11 @@ exports.LIFECYCLE_OPERATIONS = ['ensure_database', 'migrate_schema', 'retire_dat
|
|
|
28
32
|
exports.LIFECYCLE_ENVIRONMENTS = ['edit', 'preview', 'deployed'];
|
|
29
33
|
exports.DATABASE_ENGINES = ['postgres', 'snowflake', 'snowflake_postgres', 'lakebase'];
|
|
30
34
|
exports.DATABASE_LIFECYCLE_MANAGED_BY = 'database_lifecycle';
|
|
35
|
+
exports.NATIVE_DB_AUTH_DESCRIPTOR_VERSION = 1;
|
|
36
|
+
exports.NATIVE_DB_CONNECTOR_ROLE_NAME_PREFIX = 'superblocks-native-db-connector';
|
|
37
|
+
exports.NATIVE_DB_IAM_AUTH_MODE = 'aws_iam_role';
|
|
38
|
+
exports.NATIVE_DB_IDENTIFIER_HASH_DOMAIN = 'superblocks-native-db:v1';
|
|
39
|
+
exports.DATABASE_LIFECYCLE_CAPABILITY_MANAGED_IAM_V1 = 'managed-IAM-v1';
|
|
31
40
|
// Agent capability tag keys. A lifecycle worker publishes these in the
|
|
32
41
|
// `tags` map of its agent registration (merged into — never replacing — the
|
|
33
42
|
// tag map the agent already publishes; the existing `profile` tag carries
|
|
@@ -39,6 +48,7 @@ exports.DATABASE_LIFECYCLE_MANAGED_BY = 'database_lifecycle';
|
|
|
39
48
|
exports.DATABASE_LIFECYCLE_TAG_OPERATIONS = 'databaseLifecycle:operations';
|
|
40
49
|
exports.DATABASE_LIFECYCLE_TAG_ENGINES = 'databaseLifecycle:engines';
|
|
41
50
|
exports.DATABASE_LIFECYCLE_TAG_ENVIRONMENT_PROFILES = 'databaseLifecycle:environmentProfiles';
|
|
51
|
+
exports.DATABASE_LIFECYCLE_TAG_CAPABILITIES = 'databaseLifecycle:capabilities';
|
|
42
52
|
exports.CREDENTIAL_RESOLVERS = ['opa_local', 'aws_secrets_manager', 'gcp_secret_manager', 'vault', 'kubernetes_secret'];
|
|
43
53
|
function isReadyDatabaseBinding(binding) {
|
|
44
54
|
return binding.lifecycleState === 'ready';
|
|
@@ -52,6 +62,13 @@ exports.PHYSICAL_DATABASE_INSTANCE_STATUSES = ['active', 'draining', 'retired'];
|
|
|
52
62
|
function computeRequirementKey(requirement) {
|
|
53
63
|
return `${slugify(requirement.logicalName)}~${encodeURIComponent(requirement.logicalName)}:${requirement.engine}`;
|
|
54
64
|
}
|
|
65
|
+
// binding_key is the product identity of a database in the control plane, and
|
|
66
|
+
// is deliberately scoped to (organization, application, environment, profile)
|
|
67
|
+
// only — NOT the logical name. This is what makes "one database per profile"
|
|
68
|
+
// enforceable by the plain UNIQUE (binding_key) constraint: asking for another
|
|
69
|
+
// database under a different logical name resolves to the same binding_key
|
|
70
|
+
// instead of minting a new one. The logical name still lives on the binding row
|
|
71
|
+
// and in resource_key (physical identity); it just doesn't grant a second slot.
|
|
55
72
|
function computeBindingKey(input) {
|
|
56
73
|
return [input.organizationId, ...bindingKeySegments(input)].join(':');
|
|
57
74
|
}
|
|
@@ -59,10 +76,94 @@ function computeLegacyBindingKeyWithoutOrganization(input) {
|
|
|
59
76
|
return bindingKeySegments(input).join(':');
|
|
60
77
|
}
|
|
61
78
|
function bindingKeySegments(input) {
|
|
62
|
-
return [input.applicationId, input.environment, `${slugify(input.profile)}~${encodeURIComponent(input.profile)}
|
|
79
|
+
return [input.applicationId, input.environment, `${slugify(input.profile)}~${encodeURIComponent(input.profile)}`];
|
|
63
80
|
}
|
|
81
|
+
// Hashes only the infrastructure spec. migrationDirectory is deliberately
|
|
82
|
+
// excluded: it says where the SQL files live, not what database to provision,
|
|
83
|
+
// so changing it must not make a ready binding look drifted and re-dispatch
|
|
84
|
+
// ensure_database. Callers that persist the requirement must still rewrite
|
|
85
|
+
// desiredSpec when migrationDirectory changes (same hash is not "no-op").
|
|
86
|
+
// Specs without a migrationDirectory keep their existing hash.
|
|
64
87
|
async function computeDesiredSpecHash(requirement) {
|
|
65
|
-
|
|
88
|
+
const infrastructureSpec = { ...requirement };
|
|
89
|
+
delete infrastructureSpec.migrationDirectory;
|
|
90
|
+
return await (0, hashing_js_1.sha256Base64)(JSON.stringify(canonicalize(infrastructureSpec)));
|
|
91
|
+
}
|
|
92
|
+
function nativeDbIamSessionPolicy(descriptor) {
|
|
93
|
+
return JSON.stringify({
|
|
94
|
+
Version: '2012-10-17',
|
|
95
|
+
Statement: [
|
|
96
|
+
{
|
|
97
|
+
Sid: 'ConnectToThisNativeDatabaseUser',
|
|
98
|
+
Effect: 'Allow',
|
|
99
|
+
Action: 'rds-db:connect',
|
|
100
|
+
Resource: `arn:aws:rds-db:${descriptor.region}:${descriptor.aws_account_id}:dbuser:${descriptor.cluster_resource_id}/${descriptor.username}`
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function parseNativeDbIamDescriptor(value) {
|
|
106
|
+
if (!isUnknownRecord(value)) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
const databaseIdentifier = typeof value.database === 'string' ? /^sbndb_([0-9a-f]{12})_([0-9a-f]{24})$/.exec(value.database) : null;
|
|
110
|
+
const usernameIdentifier = typeof value.username === 'string' ? /^sbndb_([0-9a-f]{12})_([0-9a-f]{24})_runtime$/.exec(value.username) : null;
|
|
111
|
+
const connectorRoleArn = typeof value.connector_role_arn === 'string'
|
|
112
|
+
? /^arn:aws:iam::(\d{12}):role\/(?:[\w+=,.@-]+\/)*[\w+=,.@-]+$/.exec(value.connector_role_arn)
|
|
113
|
+
: null;
|
|
114
|
+
if (!isNonEmptyString(value.application_id) ||
|
|
115
|
+
value.auth_descriptor_version !== exports.NATIVE_DB_AUTH_DESCRIPTOR_VERSION ||
|
|
116
|
+
value.auth_mode !== exports.NATIVE_DB_IAM_AUTH_MODE ||
|
|
117
|
+
!isNonEmptyString(value.aws_account_id) ||
|
|
118
|
+
!/^\d{12}$/.test(value.aws_account_id) ||
|
|
119
|
+
!isNonEmptyString(value.binding_id) ||
|
|
120
|
+
!isNonEmptyString(value.cluster_resource_id) ||
|
|
121
|
+
!/^(cluster|db)-[A-Za-z0-9-]+$/.test(value.cluster_resource_id) ||
|
|
122
|
+
!connectorRoleArn ||
|
|
123
|
+
connectorRoleArn[1] !== value.aws_account_id ||
|
|
124
|
+
!databaseIdentifier ||
|
|
125
|
+
!usernameIdentifier ||
|
|
126
|
+
databaseIdentifier[1] !== usernameIdentifier[1] ||
|
|
127
|
+
!isValidNativeDbRdsHostname(value.host, value.region) ||
|
|
128
|
+
typeof value.port !== 'number' ||
|
|
129
|
+
!Number.isInteger(value.port) ||
|
|
130
|
+
value.port < 1 ||
|
|
131
|
+
value.port > 65535 ||
|
|
132
|
+
!isCommercialAwsRegion(value.region)) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
application_id: value.application_id,
|
|
137
|
+
auth_descriptor_version: exports.NATIVE_DB_AUTH_DESCRIPTOR_VERSION,
|
|
138
|
+
auth_mode: exports.NATIVE_DB_IAM_AUTH_MODE,
|
|
139
|
+
aws_account_id: value.aws_account_id,
|
|
140
|
+
binding_id: value.binding_id,
|
|
141
|
+
cluster_resource_id: value.cluster_resource_id,
|
|
142
|
+
connector_role_arn: connectorRoleArn[0],
|
|
143
|
+
database: databaseIdentifier[0],
|
|
144
|
+
host: value.host,
|
|
145
|
+
port: value.port,
|
|
146
|
+
region: value.region,
|
|
147
|
+
username: usernameIdentifier[0]
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async function computeNativeDbApplicationToken(trustedApplicationId) {
|
|
151
|
+
return (await computeNativeDbIdentifierToken('application', trustedApplicationId)).slice(0, 24);
|
|
152
|
+
}
|
|
153
|
+
async function computeNativeDbDatabaseName(deploymentToken, trustedDatabaseId) {
|
|
154
|
+
if (!/^[0-9a-f]{12}$/.test(deploymentToken)) {
|
|
155
|
+
throw new Error('Native database deployment token must be 12 lowercase hexadecimal characters');
|
|
156
|
+
}
|
|
157
|
+
return `sbndb_${deploymentToken}_${(await computeNativeDbIdentifierToken('database', trustedDatabaseId)).slice(0, 24)}`;
|
|
158
|
+
}
|
|
159
|
+
async function computeNativeDbIdentifierToken(kind, trustedId) {
|
|
160
|
+
if (!isNonEmptyString(trustedId)) {
|
|
161
|
+
throw new Error(`Trusted native database ${kind} ID must be a non-empty string`);
|
|
162
|
+
}
|
|
163
|
+
const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(`${exports.NATIVE_DB_IDENTIFIER_HASH_DOMAIN}:${kind}:${trustedId}`));
|
|
164
|
+
return Array.from(new Uint8Array(digest))
|
|
165
|
+
.map((byte) => byte.toString(16).padStart(2, '0'))
|
|
166
|
+
.join('');
|
|
66
167
|
}
|
|
67
168
|
// resource_key identifies the physical resource a binding maps to in
|
|
68
169
|
// customer infrastructure, and is the unit of locking inside the lifecycle
|
|
@@ -113,6 +214,24 @@ function codepointCompare(left, right) {
|
|
|
113
214
|
}
|
|
114
215
|
return 0;
|
|
115
216
|
}
|
|
217
|
+
function isCommercialAwsRegion(value) {
|
|
218
|
+
return typeof value === 'string' && /^[a-z]{2}-[a-z]+-[0-9]+$/.test(value) && !value.startsWith('cn-') && !value.startsWith('us-gov-');
|
|
219
|
+
}
|
|
220
|
+
function isNonEmptyString(value) {
|
|
221
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
222
|
+
}
|
|
223
|
+
function isUnknownRecord(value) {
|
|
224
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
225
|
+
}
|
|
226
|
+
function isValidNativeDbRdsHostname(host, region) {
|
|
227
|
+
if (typeof host !== 'string' || typeof region !== 'string') {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
const suffix = `.${region}.rds.amazonaws.com`;
|
|
231
|
+
const prefix = host.endsWith(suffix) ? host.slice(0, -suffix.length) : '';
|
|
232
|
+
const validLabel = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
233
|
+
return host.length <= 253 && host === host.toLowerCase() && prefix !== '' && host.split('.').every((label) => validLabel.test(label));
|
|
234
|
+
}
|
|
116
235
|
function redact(value, preserveCredentialRefs = false) {
|
|
117
236
|
if (Array.isArray(value)) {
|
|
118
237
|
return value.map((entry) => redact(entry, preserveCredentialRefs));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":";;;AAgIA,wDAEC;AAuFD,sDAEC;AASD,8CAOC;AAED,gGAMC;AAYD,wDAIC;AAED,4DAYC;AAED,gEAkDC;AAED,0EAEC;AAED,kEAKC;AAoBD,gDAgBC;AAED,4DAEC;AAED,wDAEC;AAuGD,kCAEC;AAED,gEAWC;AAlfD,sDAAqD;AAExC,QAAA,yBAAyB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACtE,QAAA,6BAA6B,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAC9F,QAAA,gBAAgB,GAAG,CAAC,GAAG,qCAA6B,EAAE,GAAG,iCAAyB,CAAU,CAAC;AAC7F,QAAA,0BAA0B,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AACrF,0EAA0E;AAC1E,6DAA6D;AAC7D,mEAAmE;AACnE,sDAAsD;AACzC,QAAA,oBAAoB,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CAAU,CAAC;AACtG,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,oCAAoC;AACvB,QAAA,sBAAsB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAClE,QAAA,gBAAgB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,CAAU,CAAC;AACxF,QAAA,6BAA6B,GAAG,oBAAoB,CAAC;AACrD,QAAA,iCAAiC,GAAG,CAAU,CAAC;AAC/C,QAAA,oCAAoC,GAAG,iCAAiC,CAAC;AACzE,QAAA,uBAAuB,GAAG,cAAuB,CAAC;AAClD,QAAA,gCAAgC,GAAG,0BAA0B,CAAC;AAC9D,QAAA,4CAA4C,GAAG,gBAAgB,CAAC;AAE7E,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,6EAA6E;AAC7E,8EAA8E;AAC9E,4CAA4C;AAC/B,QAAA,iCAAiC,GAAG,8BAA8B,CAAC;AACnE,QAAA,8BAA8B,GAAG,2BAA2B,CAAC;AAC7D,QAAA,2CAA2C,GAAG,uCAAuC,CAAC;AACtF,QAAA,mCAAmC,GAAG,gCAAgC,CAAC;AAwBvE,QAAA,oBAAoB,GAAG,CAAC,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,CAAU,CAAC;AAqEtI,SAAgB,sBAAsB,CAAC,OAAwB;IAC7D,OAAO,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC;AAC5C,CAAC;AAWD,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,+EAA+E;AAClE,QAAA,mCAAmC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAuE9F,SAAgB,qBAAqB,CAAC,WAAgE;IACpG,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;AACpH,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,gFAAgF;AAChF,SAAgB,iBAAiB,CAAC,KAKjC;IACC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,0CAA0C,CAAC,KAI1D;IACC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoF;IAC9G,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpH,CAAC;AAED,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,+DAA+D;AACxD,KAAK,UAAU,sBAAsB,CAAC,WAAgC;IAC3E,MAAM,kBAAkB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAC9C,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;IAC7C,OAAO,MAAM,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,wBAAwB,CAAC,UAAiC;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,iCAAiC;gBACtC,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE,kBAAkB,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,cAAc,WAAW,UAAU,CAAC,mBAAmB,IAAI,UAAU,CAAC,QAAQ,EAAE;aAC7I;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,kBAAkB,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpI,MAAM,kBAAkB,GACtB,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+CAA+C,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnH,MAAM,gBAAgB,GACpB,OAAO,KAAK,CAAC,kBAAkB,KAAK,QAAQ;QAC1C,CAAC,CAAC,6DAA6D,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC9F,CAAC,CAAC,IAAI,CAAC;IACX,IACE,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;QACvC,KAAK,CAAC,uBAAuB,KAAK,yCAAiC;QACnE,KAAK,CAAC,SAAS,KAAK,+BAAuB;QAC3C,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;QACvC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACtC,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;QACnC,CAAC,gBAAgB,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC5C,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC/D,CAAC,gBAAgB;QACjB,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,cAAc;QAC5C,CAAC,kBAAkB;QACnB,CAAC,kBAAkB;QACnB,kBAAkB,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC;QAC/C,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACrD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,KAAK,CAAC,IAAI,GAAG,CAAC;QACd,KAAK,CAAC,IAAI,GAAG,KAAK;QAClB,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,EACpC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,uBAAuB,EAAE,yCAAiC;QAC1D,SAAS,EAAE,+BAAuB;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACvC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;KAChC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,+BAA+B,CAAC,oBAA4B;IAChF,OAAO,CAAC,MAAM,8BAA8B,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAAC,eAAuB,EAAE,iBAAyB;IAClG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,SAAS,eAAe,IAAI,CAAC,MAAM,8BAA8B,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1H,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,IAAgC,EAAE,SAAiB;IAC/F,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,gCAAgC,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACvC,SAAS,EACT,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,wCAAgC,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC,CACrF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,2EAA2E;AAC3E,4EAA4E;AAC5E,qEAAqE;AACrE,4BAA4B;AAC5B,SAAgB,kBAAkB,CAAC,KAOlC;IACC,OAAO;QACL,KAAK,CAAC,cAAc;QACpB,KAAK,CAAC,aAAa;QACnB,KAAK,CAAC,cAAc;QACpB,KAAK,CAAC,WAAW;QACjB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAChE,KAAK,CAAC,UAAU,IAAI,SAAS;KAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAqB;IAC5D,OAAQ,iCAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,sBAAsB,CAAI,KAAQ;IAChD,OAAO,MAAM,CAAC,KAAK,CAAM,CAAC;AAC5B,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;aACpD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACnD,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACzI,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAa,EAAE,MAAe;IAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,MAAM,oBAAoB,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,wCAAwC,CAAC;IAC5D,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxI,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,sBAAsB,GAAG,KAAK;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE;YAC9C,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,sBAAsB,IAAI,0BAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5D,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,uBAAuB;AACV,QAAA,kBAAkB,GAAG,4CAA4C,CAAC;AAE/E,6EAA6E;AAC7E,uEAAuE;AACvE,4EAA4E;AAC/D,QAAA,8BAA8B,GAAG;IAC5C,UAAU;IACV,YAAY;IACZ,OAAO;IACP,SAAS;IACT,SAAS;IACT,aAAa;IACb,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;CACC,CAAC;AAEX,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,0BAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAa;IACtD,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,gBAAgB,GAAG,sCAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxF,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,gBAAgB,+BAA+B,EAAE,GAAG,CAAC,CAAC;AACpG,MAAM,qBAAqB,GAAG,4EAA4E,CAAC;AAC3G,MAAM,2BAA2B,GAAG,kEAAkE,CAAC;AAEvG,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -17,23 +17,40 @@ const index_js_1 = require("./index.js");
|
|
|
17
17
|
(0, vitest_1.expect)((0, index_js_1.computeRequirementKey)(requirement)).toBe('orders-db~Orders%20DB:postgres');
|
|
18
18
|
(0, vitest_1.expect)((0, index_js_1.computeRequirementKey)({ logicalName: 'orders/db', engine: 'postgres' })).toBe('orders-db~orders%2Fdb:postgres');
|
|
19
19
|
(0, vitest_1.expect)((0, index_js_1.computeRequirementKey)({ logicalName: 'orders-db', engine: 'postgres' })).toBe('orders-db~orders-db:postgres');
|
|
20
|
+
// binding_key excludes the logical name on purpose: one database per
|
|
21
|
+
// (organization, application, environment, profile). Two different logical
|
|
22
|
+
// names under the same profile resolve to the same binding_key.
|
|
20
23
|
(0, vitest_1.expect)((0, index_js_1.computeBindingKey)({
|
|
21
24
|
organizationId: 'org-1',
|
|
22
25
|
applicationId: 'app-1',
|
|
23
26
|
environment: 'edit',
|
|
24
|
-
profile: 'Staging EU'
|
|
25
|
-
|
|
26
|
-
})).toBe('org-1:app-1:edit:staging-eu~Staging%20EU:orders-db~Orders%20DB:postgres');
|
|
27
|
+
profile: 'Staging EU'
|
|
28
|
+
})).toBe('org-1:app-1:edit:staging-eu~Staging%20EU');
|
|
27
29
|
(0, vitest_1.expect)((0, index_js_1.computeBindingKey)({
|
|
28
30
|
organizationId: 'org-1',
|
|
29
31
|
applicationId: 'app-1',
|
|
30
32
|
environment: 'edit',
|
|
31
|
-
profile: 'staging'
|
|
32
|
-
|
|
33
|
-
})).toBe('org-1:app-1:edit:staging~staging:orders-db~Orders%20DB:postgres');
|
|
33
|
+
profile: 'staging'
|
|
34
|
+
})).toBe('org-1:app-1:edit:staging~staging');
|
|
34
35
|
await (0, vitest_1.expect)((0, index_js_1.computeDesiredSpecHash)(requirement)).resolves.toBe(await (0, index_js_1.computeDesiredSpecHash)({ ...requirement, extensions: ['uuid-ossp', 'pgcrypto'] }));
|
|
35
36
|
await (0, vitest_1.expect)((0, index_js_1.computeDesiredSpecHash)(requirement)).resolves.toBe('QsCl6RVzJVEwf4Nuk0D27rRtycYe2vQZMxcXLt9WUkQ=');
|
|
36
37
|
});
|
|
38
|
+
(0, vitest_1.test)('ignores migrationDirectory when hashing the desired spec', async () => {
|
|
39
|
+
const infrastructureSpec = {
|
|
40
|
+
logicalName: 'Orders DB',
|
|
41
|
+
engine: 'postgres',
|
|
42
|
+
version: '16',
|
|
43
|
+
sizing: { storageGb: 20, tier: 'shared' },
|
|
44
|
+
extensions: ['pgcrypto', 'uuid-ossp']
|
|
45
|
+
};
|
|
46
|
+
const withoutDirectory = await (0, index_js_1.computeDesiredSpecHash)(infrastructureSpec);
|
|
47
|
+
const withDirectory = await (0, index_js_1.computeDesiredSpecHash)({ ...infrastructureSpec, migrationDirectory: 'db/migrations' });
|
|
48
|
+
const withOtherDirectory = await (0, index_js_1.computeDesiredSpecHash)({ ...infrastructureSpec, migrationDirectory: 'db/other-migrations' });
|
|
49
|
+
// migrationDirectory only says where the SQL files live, not what
|
|
50
|
+
// infrastructure to provision, so changing it must not look like drift.
|
|
51
|
+
(0, vitest_1.expect)(withDirectory).toBe(withoutDirectory);
|
|
52
|
+
(0, vitest_1.expect)(withOtherDirectory).toBe(withoutDirectory);
|
|
53
|
+
});
|
|
37
54
|
(0, vitest_1.test)('hashes desired specs with locale-invariant ordering', async () => {
|
|
38
55
|
const first = await (0, index_js_1.computeDesiredSpecHash)({
|
|
39
56
|
logicalName: 'Éclair DB',
|
|
@@ -106,5 +123,72 @@ const index_js_1 = require("./index.js");
|
|
|
106
123
|
(0, vitest_1.expect)((0, index_js_1.containsCredentialMaterial)('host=db.internal port=5432')).toBe(false);
|
|
107
124
|
(0, vitest_1.expect)((0, index_js_1.containsCredentialMaterial)('arn:aws:secretsmanager:us-east-1:123:secret:orders')).toBe(false);
|
|
108
125
|
});
|
|
126
|
+
(0, vitest_1.test)('builds a canonical session policy from a valid managed Postgres IAM descriptor', () => {
|
|
127
|
+
const descriptor = (0, index_js_1.parseNativeDbIamDescriptor)({
|
|
128
|
+
application_id: 'application-id',
|
|
129
|
+
auth_descriptor_version: 1,
|
|
130
|
+
auth_mode: 'aws_iam_role',
|
|
131
|
+
aws_account_id: '123456789012',
|
|
132
|
+
binding_id: 'binding-id',
|
|
133
|
+
cluster_resource_id: 'cluster-ABC123DEF456EXAMPLE',
|
|
134
|
+
connector_role_arn: 'arn:aws:iam::123456789012:role/superblocks-native-db-connector-prod',
|
|
135
|
+
database: 'sbndb_abcdef123456_0123456789abcdef01234567',
|
|
136
|
+
host: 'native-db.cluster-example.us-west-2.rds.amazonaws.com',
|
|
137
|
+
port: 5432,
|
|
138
|
+
region: 'us-west-2',
|
|
139
|
+
username: 'sbndb_abcdef123456_7bfeae1170db923274f1943f_runtime'
|
|
140
|
+
});
|
|
141
|
+
(0, vitest_1.expect)(descriptor).toBeDefined();
|
|
142
|
+
if (!descriptor) {
|
|
143
|
+
throw new Error('Expected a valid IAM descriptor');
|
|
144
|
+
}
|
|
145
|
+
(0, vitest_1.expect)((0, index_js_1.nativeDbIamSessionPolicy)(descriptor)).toBe('{"Version":"2012-10-17","Statement":[{"Sid":"ConnectToThisNativeDatabaseUser","Effect":"Allow","Action":"rds-db:connect","Resource":"arn:aws:rds-db:us-west-2:123456789012:dbuser:cluster-ABC123DEF456EXAMPLE/sbndb_abcdef123456_7bfeae1170db923274f1943f_runtime"}]}');
|
|
146
|
+
});
|
|
147
|
+
(0, vitest_1.test)('rejects malformed or non-commercial managed Postgres IAM descriptors', () => {
|
|
148
|
+
const descriptor = {
|
|
149
|
+
application_id: 'application-id',
|
|
150
|
+
auth_descriptor_version: 1,
|
|
151
|
+
auth_mode: 'aws_iam_role',
|
|
152
|
+
aws_account_id: '123456789012',
|
|
153
|
+
binding_id: 'binding-id',
|
|
154
|
+
cluster_resource_id: 'cluster-ABC123DEF456EXAMPLE',
|
|
155
|
+
connector_role_arn: 'arn:aws:iam::123456789012:role/superblocks-native-db-connector-prod',
|
|
156
|
+
database: 'sbndb_abcdef123456_0123456789abcdef01234567',
|
|
157
|
+
host: 'native-db.cluster-example.us-west-2.rds.amazonaws.com',
|
|
158
|
+
port: 5432,
|
|
159
|
+
region: 'us-west-2',
|
|
160
|
+
username: 'sbndb_abcdef123456_7bfeae1170db923274f1943f_runtime'
|
|
161
|
+
};
|
|
162
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, auth_descriptor_version: 2 })).toBeUndefined();
|
|
163
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, cluster_resource_id: 'not-an-rds-resource' })).toBeUndefined();
|
|
164
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, connector_role_arn: 'arn:aws:iam::210987654321:role/other' })).toBeUndefined();
|
|
165
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, database: 'orders' })).toBeUndefined();
|
|
166
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, host: descriptor.host.toUpperCase() })).toBeUndefined();
|
|
167
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, host: 'native-db.cluster-example.us-east-1.rds.amazonaws.com' })).toBeUndefined();
|
|
168
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, port: 0 })).toBeUndefined();
|
|
169
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, region: 'cn-north-1' })).toBeUndefined();
|
|
170
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, region: 'us-gov-west-1' })).toBeUndefined();
|
|
171
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({ ...descriptor, username: 'sbndb_000000000000_7bfeae1170db923274f1943f_runtime' })).toBeUndefined();
|
|
172
|
+
});
|
|
173
|
+
(0, vitest_1.test)('accepts standalone RDS IAM resource IDs', () => {
|
|
174
|
+
(0, vitest_1.expect)((0, index_js_1.parseNativeDbIamDescriptor)({
|
|
175
|
+
application_id: 'application-id',
|
|
176
|
+
auth_descriptor_version: 1,
|
|
177
|
+
auth_mode: 'aws_iam_role',
|
|
178
|
+
aws_account_id: '123456789012',
|
|
179
|
+
binding_id: 'binding-id',
|
|
180
|
+
cluster_resource_id: 'db-ABCDEF0123456789-1',
|
|
181
|
+
connector_role_arn: 'arn:aws:iam::123456789012:role/superblocks-native-db-connector-prod',
|
|
182
|
+
database: 'sbndb_abcdef123456_0123456789abcdef01234567',
|
|
183
|
+
host: 'native-db.example.us-west-2.rds.amazonaws.com',
|
|
184
|
+
port: 5432,
|
|
185
|
+
region: 'us-west-2',
|
|
186
|
+
username: 'sbndb_abcdef123456_7bfeae1170db923274f1943f_runtime'
|
|
187
|
+
})).toBeDefined();
|
|
188
|
+
});
|
|
189
|
+
(0, vitest_1.test)('derives canonical IAM database and runtime-user identity tokens', async () => {
|
|
190
|
+
await (0, vitest_1.expect)((0, index_js_1.computeNativeDbApplicationToken)('application-id')).resolves.toBe('7bfeae1170db923274f1943f');
|
|
191
|
+
await (0, vitest_1.expect)((0, index_js_1.computeNativeDbDatabaseName)('abcdef123456', 'database-id')).resolves.toBe('sbndb_abcdef123456_dad72612f7a80580b028178f');
|
|
192
|
+
});
|
|
109
193
|
});
|
|
110
194
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/index.test.ts"],"names":[],"mappings":";;AAAA,mCAAgD;AAEhD,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/plugins/templates/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,MAAM,
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/plugins/templates/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,MAAM,EAIP,MAAM,sBAAsB,CAAC;AAyG9B,eAAO,MAAM,cAAc,EAAE,MAiuB5B,CAAC"}
|