@stratum-hq/lib 1.3.0 → 1.5.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/crypto.d.ts +6 -2
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +33 -13
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/028_ancestry_path_prefix_index.sql +12 -0
- package/dist/migrations/029_tenant_parent_cycle_guard.sql +62 -0
- package/dist/migrations/030_redact_url_credentials_audit.sql +112 -0
- package/dist/pool-helpers.d.ts.map +1 -1
- package/dist/pool-helpers.js +20 -4
- package/dist/pool-helpers.js.map +1 -1
- package/dist/services/abac-service.d.ts +1 -1
- package/dist/services/abac-service.d.ts.map +1 -1
- package/dist/services/abac-service.js +17 -11
- package/dist/services/abac-service.js.map +1 -1
- package/dist/services/api-key-service.d.ts +6 -0
- package/dist/services/api-key-service.d.ts.map +1 -1
- package/dist/services/api-key-service.js +55 -8
- package/dist/services/api-key-service.js.map +1 -1
- package/dist/services/audit-service.d.ts.map +1 -1
- package/dist/services/audit-service.js +2 -1
- package/dist/services/audit-service.js.map +1 -1
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +5 -10
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/consent-service.d.ts +2 -2
- package/dist/services/consent-service.d.ts.map +1 -1
- package/dist/services/consent-service.js +6 -1
- package/dist/services/consent-service.js.map +1 -1
- package/dist/services/event-service.d.ts.map +1 -1
- package/dist/services/event-service.js +3 -2
- package/dist/services/event-service.js.map +1 -1
- package/dist/services/key-rotation-service.d.ts +18 -1
- package/dist/services/key-rotation-service.d.ts.map +1 -1
- package/dist/services/key-rotation-service.js +57 -9
- package/dist/services/key-rotation-service.js.map +1 -1
- package/dist/services/permission-service.d.ts.map +1 -1
- package/dist/services/permission-service.js +16 -15
- package/dist/services/permission-service.js.map +1 -1
- package/dist/services/region-service.d.ts.map +1 -1
- package/dist/services/region-service.js +8 -7
- package/dist/services/region-service.js.map +1 -1
- package/dist/services/role-service.d.ts.map +1 -1
- package/dist/services/role-service.js +19 -0
- package/dist/services/role-service.js.map +1 -1
- package/dist/services/tenant-service.d.ts +22 -0
- package/dist/services/tenant-service.d.ts.map +1 -1
- package/dist/services/tenant-service.js +47 -31
- package/dist/services/tenant-service.js.map +1 -1
- package/dist/services/usage-service.d.ts.map +1 -1
- package/dist/services/usage-service.js +2 -0
- package/dist/services/usage-service.js.map +1 -1
- package/dist/services/webhook-service.d.ts.map +1 -1
- package/dist/services/webhook-service.js +11 -1
- package/dist/services/webhook-service.js.map +1 -1
- package/dist/stratum-tables.d.ts +12 -0
- package/dist/stratum-tables.d.ts.map +1 -0
- package/dist/stratum-tables.js +31 -0
- package/dist/stratum-tables.js.map +1 -0
- package/dist/stratum.d.ts +5 -0
- package/dist/stratum.d.ts.map +1 -1
- package/dist/stratum.js +55 -11
- package/dist/stratum.js.map +1 -1
- package/dist/url-redaction.d.ts +9 -0
- package/dist/url-redaction.d.ts.map +1 -0
- package/dist/url-redaction.js +32 -0
- package/dist/url-redaction.js.map +1 -0
- package/dist/validation.d.ts +25 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +23 -0
- package/dist/validation.js.map +1 -0
- package/package.json +5 -5
|
@@ -14,6 +14,7 @@ exports.listDormantKeys = listDormantKeys;
|
|
|
14
14
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
15
15
|
const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
16
16
|
const role_service_js_1 = require("./role-service.js");
|
|
17
|
+
const core_1 = require("@stratum-hq/core");
|
|
17
18
|
// --- Hashing ---
|
|
18
19
|
const HASH_V1_SHA256 = 1;
|
|
19
20
|
const HASH_V2_HMAC = 2;
|
|
@@ -45,6 +46,19 @@ function generateKey(keyPrefix) {
|
|
|
45
46
|
const { keyHash, hashVersion } = hashKey(plaintextKey);
|
|
46
47
|
return { plaintextKey, keyHash, hashVersion };
|
|
47
48
|
}
|
|
49
|
+
/** Tenant states under which a key could never authenticate. */
|
|
50
|
+
const KEYLESS_TENANT_STATES = ["suspended", "archived"];
|
|
51
|
+
/**
|
|
52
|
+
* Refuse to issue a key for a suspended or archived tenant: such a key could
|
|
53
|
+
* never authenticate. A missing tenant is left to the foreign key.
|
|
54
|
+
*/
|
|
55
|
+
async function assertTenantAcceptsKeys(client, tenantId, operation) {
|
|
56
|
+
const res = await client.query(`SELECT status FROM tenants WHERE id = $1`, [tenantId]);
|
|
57
|
+
const status = res.rows[0]?.status;
|
|
58
|
+
if (status !== undefined && KEYLESS_TENANT_STATES.includes(status)) {
|
|
59
|
+
throw new core_1.InvalidTenantStateError(tenantId, status, operation, ["active", "pending"]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
48
62
|
async function createApiKey(pool, keyPrefix, tenantId, nameOrOptions, expiresAt) {
|
|
49
63
|
// Support both old signature (name, expiresAt) and new options object
|
|
50
64
|
const opts = typeof nameOrOptions === "object" && nameOrOptions !== null
|
|
@@ -52,6 +66,7 @@ async function createApiKey(pool, keyPrefix, tenantId, nameOrOptions, expiresAt)
|
|
|
52
66
|
: { name: nameOrOptions, expiresAt };
|
|
53
67
|
const { plaintextKey, keyHash, hashVersion } = generateKey(keyPrefix);
|
|
54
68
|
return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
|
|
69
|
+
await assertTenantAcceptsKeys(client, tenantId, "create an API key for");
|
|
55
70
|
const res = await client.query(`INSERT INTO api_keys (tenant_id, key_hash, key_prefix, name, expires_at, rate_limit_max, rate_limit_window, hash_version)
|
|
56
71
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
57
72
|
RETURNING *`, [tenantId, keyHash, keyPrefix, opts.name ?? null, opts.expiresAt ?? null, opts.rateLimitMax ?? null, opts.rateLimitWindow ?? null, hashVersion]);
|
|
@@ -66,6 +81,17 @@ async function createApiKey(pool, keyPrefix, tenantId, nameOrOptions, expiresAt)
|
|
|
66
81
|
};
|
|
67
82
|
});
|
|
68
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* A validation stamps last_used_at only when the stored value is older than
|
|
86
|
+
* this. Concurrent requests with one key then do not all wait on its row lock.
|
|
87
|
+
* The cost: last_used_at can lag the latest use by up to this interval.
|
|
88
|
+
*/
|
|
89
|
+
const STAMP_INTERVAL_SECONDS = 60;
|
|
90
|
+
/**
|
|
91
|
+
* The longest time a validation waits for its last_used_at stamp. A stamp
|
|
92
|
+
* that waits on a row lock then cannot delay authentication for longer.
|
|
93
|
+
*/
|
|
94
|
+
const STAMP_TIMEOUT_MS = 1000;
|
|
69
95
|
async function validateApiKey(pool, key) {
|
|
70
96
|
const hmacSecret = getHmacSecret();
|
|
71
97
|
// Build candidate hashes: try HMAC first (if secret is set), then SHA-256 fallback
|
|
@@ -80,7 +106,8 @@ async function validateApiKey(pool, key) {
|
|
|
80
106
|
for (const candidate of candidates) {
|
|
81
107
|
// A tenant-bound key authenticates only while its tenant and every
|
|
82
108
|
// ancestor are active. Global keys (tenant_id NULL) have no tenant.
|
|
83
|
-
const res = await client.query(`SELECT ak.id, ak.tenant_id, ak.key_hash, ak.key_prefix, ak.name, ak.created_at, ak.last_used_at, ak.revoked_at, ak.expires_at, ak.scopes, ak.rate_limit_max, ak.rate_limit_window, ak.hash_version
|
|
109
|
+
const res = await client.query(`SELECT ak.id, ak.tenant_id, ak.key_hash, ak.key_prefix, ak.name, ak.created_at, ak.last_used_at, ak.revoked_at, ak.expires_at, ak.scopes, ak.rate_limit_max, ak.rate_limit_window, ak.hash_version,
|
|
110
|
+
(ak.last_used_at IS NULL OR ak.last_used_at < now() - make_interval(secs => $2)) AS stamp_due
|
|
84
111
|
FROM api_keys ak
|
|
85
112
|
LEFT JOIN tenants t ON t.id = ak.tenant_id
|
|
86
113
|
WHERE ak.key_hash = $1 AND ak.revoked_at IS NULL AND (ak.expires_at IS NULL OR ak.expires_at > now())
|
|
@@ -91,7 +118,7 @@ async function validateApiKey(pool, key) {
|
|
|
91
118
|
WHERE anc.id = ANY (string_to_array(trim(both '/' from t.ancestry_path), '/')::uuid[])
|
|
92
119
|
AND anc.status <> 'active'
|
|
93
120
|
)
|
|
94
|
-
))`, [candidate.hash]);
|
|
121
|
+
))`, [candidate.hash, STAMP_INTERVAL_SECONDS]);
|
|
95
122
|
if (res.rows.length === 0)
|
|
96
123
|
continue;
|
|
97
124
|
const row = res.rows[0];
|
|
@@ -112,16 +139,27 @@ async function validateApiKey(pool, key) {
|
|
|
112
139
|
});
|
|
113
140
|
if (!found)
|
|
114
141
|
return null;
|
|
115
|
-
//
|
|
116
|
-
//
|
|
142
|
+
// The bookkeeping starts only after the validation connection is released,
|
|
143
|
+
// so a single-connection pool cannot deadlock. withClient gives it the RLS bypass.
|
|
144
|
+
// When a stamp is due, we await it so that a read made after validateApiKey
|
|
145
|
+
// resolves sees the new last_used_at. Without the await, listDormantKeys can
|
|
146
|
+
// report a just-used key.
|
|
117
147
|
// Transparent upgrade: if we matched via legacy SHA-256 but HMAC secret is
|
|
118
148
|
// available, re-hash with HMAC and update the stored hash in-place.
|
|
119
149
|
const { row } = found;
|
|
120
150
|
const upgrade = row.hash_version === HASH_V1_SHA256 && hmacSecret;
|
|
121
|
-
(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
151
|
+
if (!upgrade && !row.stamp_due)
|
|
152
|
+
return found.validated;
|
|
153
|
+
await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
|
|
154
|
+
// SET LOCAL ends with this transaction, so the pooled connection keeps its own timeout.
|
|
155
|
+
await client.query(`SET LOCAL statement_timeout = ${STAMP_TIMEOUT_MS}`);
|
|
156
|
+
return upgrade
|
|
157
|
+
? client.query(`UPDATE api_keys SET key_hash = $1, hash_version = $2, last_used_at = now() WHERE id = $3`, [hmacHash(key, hmacSecret), HASH_V2_HMAC, row.id])
|
|
158
|
+
: // The condition repeats the check, so a concurrent request that stamped first wins.
|
|
159
|
+
client.query(`UPDATE api_keys SET last_used_at = now()
|
|
160
|
+
WHERE id = $1 AND (last_used_at IS NULL OR last_used_at < now() - make_interval(secs => $2))`, [row.id, STAMP_INTERVAL_SECONDS]);
|
|
161
|
+
}).catch(() => {
|
|
162
|
+
// A failed or timed-out stamp must not fail authentication. A later request retries it.
|
|
125
163
|
});
|
|
126
164
|
return found.validated;
|
|
127
165
|
}
|
|
@@ -142,6 +180,9 @@ async function rotateApiKey(pool, keyPrefix, oldKeyId, newName) {
|
|
|
142
180
|
throw new Error(`API key not found, expired or already revoked: ${oldKeyId}`);
|
|
143
181
|
}
|
|
144
182
|
const old = oldRes.rows[0];
|
|
183
|
+
if (old.tenant_id !== null) {
|
|
184
|
+
await assertTenantAcceptsKeys(client, old.tenant_id, "rotate an API key for");
|
|
185
|
+
}
|
|
145
186
|
// Create the new key for the same tenant with the same restrictions: scopes,
|
|
146
187
|
// role, expiry and rate limit carry over, so rotation never widens access.
|
|
147
188
|
const { plaintextKey, keyHash, hashVersion } = generateKey(keyPrefix);
|
|
@@ -188,6 +229,12 @@ async function getApiKey(pool, id) {
|
|
|
188
229
|
return res.rows[0] ?? null;
|
|
189
230
|
});
|
|
190
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* List the unrevoked keys not used for `dormantDays` days.
|
|
234
|
+
* validateApiKey refreshes last_used_at at most once a minute, so a key can
|
|
235
|
+
* look up to one minute older than its latest use. That does not change a
|
|
236
|
+
* result measured in days.
|
|
237
|
+
*/
|
|
191
238
|
async function listDormantKeys(pool, dormantDays = 90) {
|
|
192
239
|
return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
|
|
193
240
|
const res = await client.query(`SELECT id, tenant_id, name, last_used_at, created_at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-service.js","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"api-key-service.js","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-service.d.ts","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-service.d.ts","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAC/B,OAAO,CAAC,UAAU,CAAC,CAyBrB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC,CAkDvB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAY5B"}
|
|
@@ -5,6 +5,7 @@ exports.recordAuditEvent = recordAuditEvent;
|
|
|
5
5
|
exports.queryAuditLogs = queryAuditLogs;
|
|
6
6
|
exports.getAuditEntry = getAuditEntry;
|
|
7
7
|
const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
8
|
+
const validation_js_1 = require("../validation.js");
|
|
8
9
|
const core_1 = require("@stratum-hq/core");
|
|
9
10
|
async function createAuditEntry(pool, context, action, resourceType, resourceId, tenantId, beforeState, afterState, metadata, createdAt) {
|
|
10
11
|
return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
|
|
@@ -37,7 +38,7 @@ async function createAuditEntry(pool, context, action, resourceType, resourceId,
|
|
|
37
38
|
* for input.tenantId and no other tenant.
|
|
38
39
|
*/
|
|
39
40
|
async function recordAuditEvent(pool, input) {
|
|
40
|
-
const parsed = core_1.RecordAuditEventInputSchema
|
|
41
|
+
const parsed = (0, validation_js_1.parseInput)(core_1.RecordAuditEventInputSchema, input);
|
|
41
42
|
const context = {
|
|
42
43
|
actor_id: parsed.actorId,
|
|
43
44
|
actor_type: parsed.actorType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-service.js","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"audit-service.js","sourceRoot":"","sources":["../../src/services/audit-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAO1B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAO1B,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAyE5F;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,WAAW,CAAC,CA2CtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoE/B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CA+GzB"}
|
|
@@ -8,6 +8,7 @@ exports.getConfigWithInheritance = getConfigWithInheritance;
|
|
|
8
8
|
const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
9
9
|
const core_1 = require("@stratum-hq/core");
|
|
10
10
|
const crypto_js_1 = require("../crypto.js");
|
|
11
|
+
const tenant_service_js_1 = require("./tenant-service.js");
|
|
11
12
|
/**
|
|
12
13
|
* Resolve the effective config for a tenant by batch-loading ancestor configs
|
|
13
14
|
* in a single query and walking root→leaf.
|
|
@@ -74,11 +75,8 @@ async function resolveConfig(pool, tenantId) {
|
|
|
74
75
|
*/
|
|
75
76
|
async function setConfig(pool, tenantId, key, input) {
|
|
76
77
|
return (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
throw new core_1.TenantNotFoundError(tenantId);
|
|
80
|
-
}
|
|
81
|
-
const ancestorIds = (0, core_1.parseAncestryPath)(tenantRes.rows[0].ancestry_path);
|
|
78
|
+
const tenant = await (0, tenant_service_js_1.loadActiveTenant)(client, tenantId);
|
|
79
|
+
const ancestorIds = (0, core_1.parseAncestryPath)(tenant.ancestry_path);
|
|
82
80
|
// Check ancestor locks (ancestry_path excludes self).
|
|
83
81
|
// Only enforce locks from non-archived ancestors — consistent with resolveConfig.
|
|
84
82
|
if (ancestorIds.length > 0) {
|
|
@@ -116,11 +114,8 @@ async function setConfig(pool, tenantId, key, input) {
|
|
|
116
114
|
*/
|
|
117
115
|
async function batchSetConfig(pool, tenantId, entries) {
|
|
118
116
|
return (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
throw new core_1.TenantNotFoundError(tenantId);
|
|
122
|
-
}
|
|
123
|
-
const ancestorIds = (0, core_1.parseAncestryPath)(tenantRes.rows[0].ancestry_path);
|
|
117
|
+
const tenant = await (0, tenant_service_js_1.loadActiveTenant)(client, tenantId);
|
|
118
|
+
const ancestorIds = (0, core_1.parseAncestryPath)(tenant.ancestry_path);
|
|
124
119
|
const keys = entries.map((e) => e.key);
|
|
125
120
|
// Batch-load all ancestor locks in a single query.
|
|
126
121
|
// Only enforce locks from non-archived ancestors — consistent with setConfig.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pg from "pg";
|
|
2
|
-
import type
|
|
3
|
-
export declare function grantConsent(pool: pg.Pool, tenantId: string,
|
|
2
|
+
import { type ConsentRecord, type GrantConsentInput } from "@stratum-hq/core";
|
|
3
|
+
export declare function grantConsent(pool: pg.Pool, tenantId: string, rawInput: GrantConsentInput): Promise<ConsentRecord>;
|
|
4
4
|
export declare function revokeConsent(pool: pg.Pool, tenantId: string, subjectId: string, purpose: string): Promise<boolean>;
|
|
5
5
|
export declare function listConsent(pool: pg.Pool, tenantId: string, subjectId?: string): Promise<ConsentRecord[]>;
|
|
6
6
|
export declare function getActiveConsent(pool: pg.Pool, tenantId: string, subjectId: string, purpose: string): Promise<ConsentRecord | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-service.d.ts","sourceRoot":"","sources":["../../src/services/consent-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"consent-service.d.ts","sourceRoot":"","sources":["../../src/services/consent-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAA2B,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEvG,wBAAsB,YAAY,CAChC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC,CAuB1B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAe/B"}
|
|
@@ -5,8 +5,13 @@ exports.revokeConsent = revokeConsent;
|
|
|
5
5
|
exports.listConsent = listConsent;
|
|
6
6
|
exports.getActiveConsent = getActiveConsent;
|
|
7
7
|
const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
8
|
-
|
|
8
|
+
const validation_js_1 = require("../validation.js");
|
|
9
|
+
const tenant_service_js_1 = require("./tenant-service.js");
|
|
10
|
+
const core_1 = require("@stratum-hq/core");
|
|
11
|
+
async function grantConsent(pool, tenantId, rawInput) {
|
|
12
|
+
const input = (0, validation_js_1.parseInput)(core_1.GrantConsentInputSchema, rawInput);
|
|
9
13
|
return (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
|
|
14
|
+
await (0, tenant_service_js_1.loadActiveTenant)(client, tenantId);
|
|
10
15
|
const res = await client.query(`INSERT INTO consent_records (tenant_id, subject_id, purpose, granted, granted_at, revoked_at, expires_at, metadata)
|
|
11
16
|
VALUES ($1, $2, $3, true, now(), NULL, $4, $5)
|
|
12
17
|
ON CONFLICT (tenant_id, subject_id, purpose)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-service.js","sourceRoot":"","sources":["../../src/services/consent-service.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"consent-service.js","sourceRoot":"","sources":["../../src/services/consent-service.ts"],"names":[],"mappings":";;AAMA,oCA6BC;AAED,sCAgBC;AAED,kCA2BC;AAED,4CAoBC;AAvGD,wDAAiE;AACjE,oDAA8C;AAC9C,2DAAuD;AACvD,2CAAuG;AAEhG,KAAK,UAAU,YAAY,CAChC,IAAa,EACb,QAAgB,EAChB,QAA2B;IAE3B,MAAM,KAAK,GAAG,IAAA,0BAAU,EAAC,8BAAuB,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,IAAA,iCAAe,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,IAAA,oCAAgB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;;;;;;gFAS0E,EAC1E;YACE,QAAQ;YACR,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,UAAU,IAAI,IAAI;YACxB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SACrC,CACF,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAa,EACb,QAAgB,EAChB,SAAiB,EACjB,OAAe;IAEf,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;oBAGc,EACd,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAC/B,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,QAAgB,EAChB,SAAkB;IAElB,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,MAAM,UAAU,GAAa,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,MAAM,GAAc,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;;eAKS,KAAK;gCACY,EAC1B,MAAM,CACP,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,IAAa,EACb,QAAgB,EAChB,SAAiB,EACjB,OAAe;IAEf,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;;;;4DAOsD,EACtD,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAC/B,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-service.d.ts","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-service.d.ts","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiF/E,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAwBpD;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC1E;AAgCD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAoBD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA0ClF;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9D;AAkID,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B7F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBvF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0B/F;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,KAAK,SAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CA0BpC"}
|
|
@@ -21,6 +21,7 @@ const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
|
21
21
|
const core_1 = require("@stratum-hq/core");
|
|
22
22
|
const webhook_service_js_1 = require("./webhook-service.js");
|
|
23
23
|
const webhook_signature_js_1 = require("../webhook-signature.js");
|
|
24
|
+
const url_redaction_js_1 = require("../url-redaction.js");
|
|
24
25
|
const MAX_ATTEMPTS = 5;
|
|
25
26
|
const DELIVERY_TIMEOUT_MS = 10_000;
|
|
26
27
|
/** Deliveries claimed and sent concurrently per pass. */
|
|
@@ -99,11 +100,11 @@ function validateWebhookUrl(url) {
|
|
|
99
100
|
parsed = new URL(url);
|
|
100
101
|
}
|
|
101
102
|
catch {
|
|
102
|
-
throw new core_1.WebhookUrlValidationError(`Invalid webhook URL: ${url}`);
|
|
103
|
+
throw new core_1.WebhookUrlValidationError(`Invalid webhook URL: ${(0, url_redaction_js_1.redactUrlForAudit)(url)}`);
|
|
103
104
|
}
|
|
104
105
|
// Only allow http/https
|
|
105
106
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
106
|
-
throw new core_1.WebhookUrlValidationError(`Webhook URL must use http or https: ${url}`);
|
|
107
|
+
throw new core_1.WebhookUrlValidationError(`Webhook URL must use http or https: ${(0, url_redaction_js_1.redactUrlForAudit)(url)}`);
|
|
107
108
|
}
|
|
108
109
|
const hostname = parsed.hostname.toLowerCase();
|
|
109
110
|
// Block known internal hostnames
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-service.js","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-service.js","sourceRoot":"","sources":["../../src/services/event-service.ts"],"names":[],"mappings":";;;;;AAyFA,gDAwBC;AAMD,8DAsCC;AAsCD,kCA6CC;AAwCD,8BAuCC;AAED,wCA8CC;AAWD,8CAoBC;AAkID,sDA4BC;AAED,sCAgBC;AASD,4CA0BC;AAED,oDA8BC;AAhoBD,iEAAoC;AACpC,0DAA6B;AAC7B,4DAA+B;AAC/B,wDAA2B;AAE3B,wDAAiE;AACjE,2CAA+E;AAC/E,6DAA0E;AAC1E,kEAA6D;AAC7D,0DAAwD;AAExD,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,yDAAyD;AACzD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B;;;GAGG;AACH,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,IAAI,kBAAG,CAAC,SAAS,EAAE,CAAC;AAC9C,OAAO;AACP,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,+BAA+B;AAClF,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAC/D,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,0DAA0D;AACjH,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAChE,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,mCAAmC;AAC3F,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AAClE,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,4BAA4B;AAClF,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,6BAA6B;AACnF,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AACpE,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM;AAC/D,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,gCAAgC;AACxF,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW;AACnE,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,0BAA0B;AACnF,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe;AACtE,iBAAiB,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,6BAA6B;AACtF,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,6BAA6B;AACrF,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY;AACjE,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,oCAAoC;AACzF,OAAO;AACP,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,oDAAoD;AACnG,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,yCAAyC;AAC/F,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,iCAAiC;AACzF,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe;AACjE,iBAAiB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe;AACvE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,yDAAyD;AAC5G,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB;AACvE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB;AACzE,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,0BAA0B;AACrF,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB;AACnE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY;AAC/D,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,8CAA8C;AAChG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa;AAChE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB;AAC3E,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY;AAE9D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,uBAAuB;IACvB,0BAA0B,EAAE,eAAe;IAC3C,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,qBAAqB;CACzC,CAAC,CAAC;AAEH,uFAAuF;AACvF,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,kBAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,CAAC,uDAAuD;IACvE,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gCAAyB,CAAC,wBAAwB,IAAA,oCAAiB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,gCAAyB,CAAC,uCAAuC,IAAA,oCAAiB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE/C,iCAAiC;IACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,gCAAyB,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,0BAA0B;IAC1B,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gCAAyB,CAAC,oDAAoD,QAAQ,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,yBAAyB,CAAC,GAAW;IACzD,mCAAmC;IACnC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE/C,wEAAwE;IACxE,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACpD,kBAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtB,kBAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvB,CAAC,CAAC;QACH,SAAS,GAAG;YACV,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,MAAM,IAAI,gCAAyB,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,gCAAyB,CACjC,wBAAwB,QAAQ,2BAA2B,EAAE,EAAE,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,kBAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oDAAoD;IAC7F,CAAC;IAED,IAAI,SAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,kBAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,gCAAyB,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,gCAAyB,CACjC,wBAAwB,QAAQ,2BAA2B,OAAO,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,OAA+B,EAC/B,IAAY;IAEZ,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QACnC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,YAAY,GAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QACxE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC;IAEzE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,CACd,MAAM,EACN;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;YAC1E,MAAM,EAAE,YAAY;YACpB,MAAM;SACP,EACD,CAAC,GAAG,EAAE,EAAE;YACN,sEAAsE;YACtE,qEAAqE;YACrE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,+CAA+C;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,CAAC;AAmCM,KAAK,UAAU,SAAS,CAC7B,IAAa,EACb,IAAiB,EACjB,QAAgB,EAChB,IAA6B;IAE7B,sBAAsB;IACtB,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;mBAEa,EACb,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CACvC,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,wCAAmB,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,oDAAoD;IACpD,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,CAAC,KAAK,CAChB;uCAC+B,EAC/B,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACjC,oEAAoE;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,OAAmB,EACnB,KAAsB,EACtB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,kCAAa,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAA,yCAAkB,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEpE,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,OAAO,CAAC,GAAG,EACX;YACE,cAAc,EAAE,kBAAkB;YAClC,iBAAiB,EAAE,KAAK,CAAC,IAAI;YAC7B,qBAAqB,EAAE,SAAS;YAChC,uBAAuB,EAAE,UAAU;YACnC,qBAAqB,EAAE,SAAS;SACjC,EACD,OAAO,CACR,CAAC;QAEF,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,QAAQ,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,GAAG,IAAI,OAAO,EAA0B,CAAC;AACzD,MAAM,cAAc,GAAG,IAAI,OAAO,EAAW,CAAC;AAE9C;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,IAAa;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,GAAG,CAAC;gBACF,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzC,kCAAkC;gBACpC,CAAC;YACH,CAAC,QAAQ,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrC,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;AACb,CAAC;AAQD;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,IAAa;IAC1C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACjC,oEAAoE;IACtE,CAAC,CAAC,CACH,CACF,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAa;IAC7C,OAAO,IAAA,iCAAe,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;;;;;;;;;;;;;;;;;;qBAoBe,EACf,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CACzC,CAAC;QACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CACnC,2CAA2C,EAC3C,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CACpC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,iDAAiD,EACjD,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAClC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjC,QAAQ;YACR,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACrC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAa,EAAE,OAAwB;IACnE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE7C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,4CAA4C;QAC5C,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAChC,MAAM,CAAC,KAAK,CACV;;8CAEsC,EACtC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACd,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEjE,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,CAChB;;;8CAGsC,EACtC,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,CACnC,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,MAAM,CAAC,KAAK,CAChB;;;8CAGsC,EACtC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CACjD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,KAAK,CAChB;;;8CAGsC,EACtC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,IAAa,EAAE,QAAiB;IAC1E,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrD,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;;;;8CAKgC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG;;;;;8CAKgC,CAAC;QAC3C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAoB,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,UAAkB;IACnE,MAAM,OAAO,GAAG,MAAM,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5B;;;oBAGc,EACd,CAAC,UAAU,CAAC,CACb,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AASM,KAAK,UAAU,gBAAgB,CAAC,IAAa,EAAE,QAAiB;IACrE,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;yDAE2C,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,0EAA0E,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAoC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO;YACL,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,IAAa,EACb,KAAK,GAAG,GAAG,EACX,QAAiB;IAEjB,OAAO,IAAA,4BAAU,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvC,IAAI,KAAa,CAAC;QAClB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG;;;;;;wBAMU,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,KAAK,GAAG;;;;;;wBAMU,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAA0B,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
import pg from "pg";
|
|
2
|
+
/** A row that decrypts with neither the old key nor the new key. Rotation leaves it unchanged. */
|
|
3
|
+
export interface KeyRotationUnreadableRow {
|
|
4
|
+
table: "config_entries" | "webhooks";
|
|
5
|
+
id: string;
|
|
6
|
+
}
|
|
2
7
|
export interface KeyRotationResult {
|
|
3
8
|
config_entries_rotated: number;
|
|
4
9
|
webhooks_rotated: number;
|
|
10
|
+
/** Rows that already decrypt with the new key, for example after an interrupted run. */
|
|
11
|
+
already_rotated: number;
|
|
12
|
+
/** Rows that decrypt with neither key. */
|
|
13
|
+
unreadable: KeyRotationUnreadableRow[];
|
|
5
14
|
}
|
|
6
15
|
/**
|
|
7
16
|
* Re-encrypts all sensitive data (config entries and webhook secrets)
|
|
8
17
|
* from oldKey to newKey in batches, walking the primary key with a keyset
|
|
9
|
-
* cursor (id > lastId, ordered by id) so every row is
|
|
18
|
+
* cursor (id > lastId, ordered by id) so every row is visited exactly once.
|
|
10
19
|
* Each batch is its own transaction so locks are held briefly.
|
|
11
20
|
*
|
|
21
|
+
* The run is safe to repeat with the same keys. A value that already decrypts
|
|
22
|
+
* with the new key stays as it is and counts in `already_rotated`. A value that
|
|
23
|
+
* decrypts with neither key stays as it is and appears in `unreadable`.
|
|
24
|
+
*
|
|
25
|
+
* Throws a ValidationError when encrypted values exist and none of them
|
|
26
|
+
* decrypts with either key. That result almost always means `oldKeyMaterial`
|
|
27
|
+
* is wrong, and the run has changed no row.
|
|
28
|
+
*
|
|
12
29
|
* After rotation, update the STRATUM_ENCRYPTION_KEY environment variable to
|
|
13
30
|
* the new key.
|
|
14
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-rotation-service.d.ts","sourceRoot":"","sources":["../../src/services/key-rotation-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"key-rotation-service.d.ts","sourceRoot":"","sources":["../../src/services/key-rotation-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,kGAAkG;AAClG,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAmF5B"}
|
|
@@ -2,21 +2,44 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rotateEncryptionKey = rotateEncryptionKey;
|
|
4
4
|
const pool_helpers_js_1 = require("../pool-helpers.js");
|
|
5
|
+
const core_1 = require("@stratum-hq/core");
|
|
5
6
|
const crypto_js_1 = require("../crypto.js");
|
|
6
7
|
// Lowest possible UUID; a keyset cursor starting here precedes every real row.
|
|
7
8
|
const ZERO_UUID = "00000000-0000-0000-0000-000000000000";
|
|
9
|
+
// A run that fails partway leaves earlier batches committed under the new key.
|
|
10
|
+
// Accepting those values, instead of failing on them, is what lets a re-run
|
|
11
|
+
// with the same keys finish the rotation.
|
|
12
|
+
function rotateValue(encrypted, oldKeyMaterial, newKeyMaterial) {
|
|
13
|
+
const plaintext = (0, crypto_js_1.decryptWithKeyMaterial)(encrypted, oldKeyMaterial);
|
|
14
|
+
if (plaintext !== null) {
|
|
15
|
+
return { kind: "rotated", value: (0, crypto_js_1.encryptWithKeyMaterial)(plaintext, newKeyMaterial) };
|
|
16
|
+
}
|
|
17
|
+
if ((0, crypto_js_1.decryptWithKeyMaterial)(encrypted, newKeyMaterial) !== null)
|
|
18
|
+
return { kind: "already_rotated" };
|
|
19
|
+
return { kind: "unreadable" };
|
|
20
|
+
}
|
|
8
21
|
/**
|
|
9
22
|
* Re-encrypts all sensitive data (config entries and webhook secrets)
|
|
10
23
|
* from oldKey to newKey in batches, walking the primary key with a keyset
|
|
11
|
-
* cursor (id > lastId, ordered by id) so every row is
|
|
24
|
+
* cursor (id > lastId, ordered by id) so every row is visited exactly once.
|
|
12
25
|
* Each batch is its own transaction so locks are held briefly.
|
|
13
26
|
*
|
|
27
|
+
* The run is safe to repeat with the same keys. A value that already decrypts
|
|
28
|
+
* with the new key stays as it is and counts in `already_rotated`. A value that
|
|
29
|
+
* decrypts with neither key stays as it is and appears in `unreadable`.
|
|
30
|
+
*
|
|
31
|
+
* Throws a ValidationError when encrypted values exist and none of them
|
|
32
|
+
* decrypts with either key. That result almost always means `oldKeyMaterial`
|
|
33
|
+
* is wrong, and the run has changed no row.
|
|
34
|
+
*
|
|
14
35
|
* After rotation, update the STRATUM_ENCRYPTION_KEY environment variable to
|
|
15
36
|
* the new key.
|
|
16
37
|
*/
|
|
17
38
|
async function rotateEncryptionKey(pool, oldKeyMaterial, newKeyMaterial, batchSize = 100) {
|
|
18
39
|
let configCount = 0;
|
|
19
40
|
let webhookCount = 0;
|
|
41
|
+
let alreadyRotated = 0;
|
|
42
|
+
const unreadable = [];
|
|
20
43
|
// Process config entries in batches, advancing a keyset cursor by id.
|
|
21
44
|
let lastConfigId = ZERO_UUID;
|
|
22
45
|
while (true) {
|
|
@@ -27,14 +50,21 @@ async function rotateEncryptionKey(pool, oldKeyMaterial, newKeyMaterial, batchSi
|
|
|
27
50
|
if (batch.rows.length === 0)
|
|
28
51
|
return 0;
|
|
29
52
|
for (const row of batch.rows) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
const outcome = rotateValue(row.value, oldKeyMaterial, newKeyMaterial);
|
|
54
|
+
if (outcome.kind === "already_rotated") {
|
|
55
|
+
alreadyRotated++;
|
|
56
|
+
}
|
|
57
|
+
else if (outcome.kind === "unreadable") {
|
|
58
|
+
unreadable.push({ table: "config_entries", id: row.id });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
await client.query(`UPDATE config_entries SET value = $1, updated_at = now() WHERE id = $2`, [JSON.stringify(outcome.value), row.id]);
|
|
62
|
+
configCount++;
|
|
63
|
+
}
|
|
33
64
|
}
|
|
34
65
|
lastConfigId = batch.rows[batch.rows.length - 1].id;
|
|
35
66
|
return batch.rows.length;
|
|
36
67
|
});
|
|
37
|
-
configCount += count;
|
|
38
68
|
if (count < batchSize)
|
|
39
69
|
break;
|
|
40
70
|
}
|
|
@@ -48,16 +78,34 @@ async function rotateEncryptionKey(pool, oldKeyMaterial, newKeyMaterial, batchSi
|
|
|
48
78
|
if (batch.rows.length === 0)
|
|
49
79
|
return 0;
|
|
50
80
|
for (const row of batch.rows) {
|
|
51
|
-
const
|
|
52
|
-
|
|
81
|
+
const outcome = rotateValue(row.secret_hash, oldKeyMaterial, newKeyMaterial);
|
|
82
|
+
if (outcome.kind === "already_rotated") {
|
|
83
|
+
alreadyRotated++;
|
|
84
|
+
}
|
|
85
|
+
else if (outcome.kind === "unreadable") {
|
|
86
|
+
unreadable.push({ table: "webhooks", id: row.id });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
await client.query(`UPDATE webhooks SET secret_hash = $1 WHERE id = $2`, [outcome.value, row.id]);
|
|
90
|
+
webhookCount++;
|
|
91
|
+
}
|
|
53
92
|
}
|
|
54
93
|
lastWebhookId = batch.rows[batch.rows.length - 1].id;
|
|
55
94
|
return batch.rows.length;
|
|
56
95
|
});
|
|
57
|
-
webhookCount += count;
|
|
58
96
|
if (count < batchSize)
|
|
59
97
|
break;
|
|
60
98
|
}
|
|
61
|
-
|
|
99
|
+
// A run that changed nothing and matched no value on either key must not look
|
|
100
|
+
// like a success, because the operator would then retire a key that is still in use.
|
|
101
|
+
if (unreadable.length > 0 && configCount + webhookCount + alreadyRotated === 0) {
|
|
102
|
+
throw new core_1.ValidationError("Key rotation found no encrypted value that decrypts with the old key or the new key. Check the old key. No row was changed.", { unreadable: unreadable.length });
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
config_entries_rotated: configCount,
|
|
106
|
+
webhooks_rotated: webhookCount,
|
|
107
|
+
already_rotated: alreadyRotated,
|
|
108
|
+
unreadable,
|
|
109
|
+
};
|
|
62
110
|
}
|
|
63
111
|
//# sourceMappingURL=key-rotation-service.js.map
|