@stratum-hq/lib 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +29 -2
  2. package/dist/crypto.d.ts.map +1 -1
  3. package/dist/crypto.js +50 -10
  4. package/dist/crypto.js.map +1 -1
  5. package/dist/index.d.ts +7 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +17 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/migrate-schemas.d.ts +4 -0
  10. package/dist/migrate-schemas.d.ts.map +1 -1
  11. package/dist/migrate-schemas.js +16 -6
  12. package/dist/migrate-schemas.js.map +1 -1
  13. package/dist/migrate.d.ts +24 -0
  14. package/dist/migrate.d.ts.map +1 -1
  15. package/dist/migrate.js +44 -6
  16. package/dist/migrate.js.map +1 -1
  17. package/dist/migration-sql.d.ts +25 -0
  18. package/dist/migration-sql.d.ts.map +1 -0
  19. package/dist/migration-sql.js +64 -0
  20. package/dist/migration-sql.js.map +1 -0
  21. package/dist/migrations/029_tenant_parent_cycle_guard.sql +2 -2
  22. package/dist/migrations/031_subtree_read_scope.sql +6 -6
  23. package/dist/migrations/032_control_role.sql +809 -0
  24. package/dist/migrations/033_api_keys_tenant_index.sql +14 -0
  25. package/dist/pinned-query.d.ts +29 -0
  26. package/dist/pinned-query.d.ts.map +1 -0
  27. package/dist/pinned-query.js +60 -0
  28. package/dist/pinned-query.js.map +1 -0
  29. package/dist/pool-helpers.d.ts +2 -0
  30. package/dist/pool-helpers.d.ts.map +1 -1
  31. package/dist/pool-helpers.js +17 -3
  32. package/dist/pool-helpers.js.map +1 -1
  33. package/dist/role-model.d.ts +178 -0
  34. package/dist/role-model.d.ts.map +1 -0
  35. package/dist/role-model.js +670 -0
  36. package/dist/role-model.js.map +1 -0
  37. package/dist/services/api-key-service.d.ts +12 -2
  38. package/dist/services/api-key-service.d.ts.map +1 -1
  39. package/dist/services/api-key-service.js +33 -9
  40. package/dist/services/api-key-service.js.map +1 -1
  41. package/dist/services/config-service.d.ts +15 -6
  42. package/dist/services/config-service.d.ts.map +1 -1
  43. package/dist/services/config-service.js +96 -50
  44. package/dist/services/config-service.js.map +1 -1
  45. package/dist/services/tenant-service.d.ts.map +1 -1
  46. package/dist/services/tenant-service.js +4 -4
  47. package/dist/services/tenant-service.js.map +1 -1
  48. package/dist/stratum-policies.d.ts +51 -0
  49. package/dist/stratum-policies.d.ts.map +1 -0
  50. package/dist/stratum-policies.js +217 -0
  51. package/dist/stratum-policies.js.map +1 -0
  52. package/dist/stratum-tables.d.ts.map +1 -1
  53. package/dist/stratum-tables.js +1 -0
  54. package/dist/stratum-tables.js.map +1 -1
  55. package/dist/stratum.d.ts +52 -7
  56. package/dist/stratum.d.ts.map +1 -1
  57. package/dist/stratum.js +75 -14
  58. package/dist/stratum.js.map +1 -1
  59. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-model.js","sourceRoot":"","sources":["../src/role-model.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export interface CreateApiKeyOptions {
31
31
  rateLimitMax?: number;
32
32
  rateLimitWindow?: string;
33
33
  }
34
- export declare function createApiKey(pool: pg.Pool, keyPrefix: string, tenantId: string, nameOrOptions?: string | CreateApiKeyOptions, expiresAt?: Date): Promise<CreatedApiKey>;
34
+ export declare function createApiKey(pool: pg.Pool, keyPrefix: string, tenantId: string | null, nameOrOptions?: string | CreateApiKeyOptions, expiresAt?: Date): Promise<CreatedApiKey>;
35
35
  export interface ValidatedApiKey {
36
36
  tenant_id: string | null;
37
37
  key_id: string;
@@ -39,7 +39,17 @@ export interface ValidatedApiKey {
39
39
  rate_limit_max: number | null;
40
40
  rate_limit_window: string | null;
41
41
  }
42
- export declare function validateApiKey(pool: pg.Pool, key: string): Promise<ValidatedApiKey | null>;
42
+ export interface ValidateApiKeyOptions {
43
+ /**
44
+ * Accept a key stored with the unkeyed SHA-256 hash (version 1) while
45
+ * STRATUM_API_KEY_HMAC_SECRET is set, and re-hash it with HMAC when it
46
+ * authenticates. Default true in 1.x; the default becomes false in 2.0.
47
+ */
48
+ allowLegacyHashes?: boolean;
49
+ /** Called when a version 1 hash authenticated while the HMAC secret is set. */
50
+ onLegacyHash?: () => void;
51
+ }
52
+ export declare function validateApiKey(pool: pg.Pool, key: string, options?: ValidateApiKeyOptions): Promise<ValidatedApiKey | null>;
43
53
  export declare function revokeApiKey(pool: pg.Pool, keyId: string): Promise<boolean>;
44
54
  export declare function rotateApiKey(pool: pg.Pool, keyPrefix: string, oldKeyId: string, newName?: string): Promise<CreatedApiKey>;
45
55
  export declare function listApiKeys(pool: pg.Pool, tenantId?: string): Promise<Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-service.d.ts","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-key-service.d.ts","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,19 @@ const core_1 = require("@stratum-hq/core");
18
18
  // --- Hashing ---
19
19
  const HASH_V1_SHA256 = 1;
20
20
  const HASH_V2_HMAC = 2;
21
+ // The shortest STRATUM_API_KEY_HMAC_SECRET accepted outside development and
22
+ // test (an unset NODE_ENV counts as development), checked when the module
23
+ // loads, like STRATUM_ENCRYPTION_KEY in crypto.ts.
24
+ const MIN_HMAC_SECRET_BYTES = 32;
25
+ (() => {
26
+ const nodeEnv = process.env.NODE_ENV || "development";
27
+ if (nodeEnv === "development" || nodeEnv === "test")
28
+ return;
29
+ const secret = process.env.STRATUM_API_KEY_HMAC_SECRET;
30
+ if (secret && Buffer.byteLength(secret, "utf8") < MIN_HMAC_SECRET_BYTES) {
31
+ throw new Error(`STRATUM_API_KEY_HMAC_SECRET must be at least ${MIN_HMAC_SECRET_BYTES} bytes in ${nodeEnv}`);
32
+ }
33
+ })();
21
34
  function getHmacSecret() {
22
35
  return process.env.STRATUM_API_KEY_HMAC_SECRET;
23
36
  }
@@ -66,7 +79,10 @@ async function createApiKey(pool, keyPrefix, tenantId, nameOrOptions, expiresAt)
66
79
  : { name: nameOrOptions, expiresAt };
67
80
  const { plaintextKey, keyHash, hashVersion } = generateKey(keyPrefix);
68
81
  return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
69
- await assertTenantAcceptsKeys(client, tenantId, "create an API key for");
82
+ // A global key (tenantId null) has no tenant whose state could block it.
83
+ if (tenantId !== null) {
84
+ await assertTenantAcceptsKeys(client, tenantId, "create an API key for");
85
+ }
70
86
  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)
71
87
  VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
72
88
  RETURNING *`, [tenantId, keyHash, keyPrefix, opts.name ?? null, opts.expiresAt ?? null, opts.rateLimitMax ?? null, opts.rateLimitWindow ?? null, hashVersion]);
@@ -92,14 +108,20 @@ const STAMP_INTERVAL_SECONDS = 60;
92
108
  * that waits on a row lock then cannot delay authentication for longer.
93
109
  */
94
110
  const STAMP_TIMEOUT_MS = 1000;
95
- async function validateApiKey(pool, key) {
111
+ async function validateApiKey(pool, key, options = {}) {
96
112
  const hmacSecret = getHmacSecret();
97
- // Build candidate hashes: try HMAC first (if secret is set), then SHA-256 fallback
113
+ // Candidate hashes. With an HMAC secret, HMAC hashes (version 2) come
114
+ // first, because they depend on a secret only the server holds. The legacy
115
+ // SHA-256 hashes (version 1) are tried too unless the caller turned
116
+ // allowLegacyHashes off. 1.x accepts them by default and re-hashes each
117
+ // on use; 2.0 will not. Without a secret, SHA-256 is the only hash there is.
98
118
  const candidates = [];
99
119
  if (hmacSecret) {
100
120
  candidates.push({ hash: hmacHash(key, hmacSecret), version: HASH_V2_HMAC });
101
121
  }
102
- candidates.push({ hash: sha256Hash(key), version: HASH_V1_SHA256 });
122
+ if (!hmacSecret || options.allowLegacyHashes !== false) {
123
+ candidates.push({ hash: sha256Hash(key), version: HASH_V1_SHA256 });
124
+ }
103
125
  // Everything below runs on one pooled connection: nothing here may acquire a
104
126
  // second connection while this one is held.
105
127
  const found = await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
@@ -110,7 +132,7 @@ async function validateApiKey(pool, key) {
110
132
  (ak.last_used_at IS NULL OR ak.last_used_at < now() - make_interval(secs => $2)) AS stamp_due
111
133
  FROM api_keys ak
112
134
  LEFT JOIN tenants t ON t.id = ak.tenant_id
113
- WHERE ak.key_hash = $1 AND ak.revoked_at IS NULL AND (ak.expires_at IS NULL OR ak.expires_at > now())
135
+ WHERE ak.key_hash = $1 AND ak.hash_version = $3 AND ak.revoked_at IS NULL AND (ak.expires_at IS NULL OR ak.expires_at > now())
114
136
  AND (ak.tenant_id IS NULL OR (
115
137
  t.status = 'active'
116
138
  AND NOT EXISTS (
@@ -118,7 +140,7 @@ async function validateApiKey(pool, key) {
118
140
  WHERE anc.id = ANY (string_to_array(trim(both '/' from t.ancestry_path), '/')::uuid[])
119
141
  AND anc.status <> 'active'
120
142
  )
121
- ))`, [candidate.hash, STAMP_INTERVAL_SECONDS]);
143
+ ))`, [candidate.hash, STAMP_INTERVAL_SECONDS, candidate.version]);
122
144
  if (res.rows.length === 0)
123
145
  continue;
124
146
  const row = res.rows[0];
@@ -144,17 +166,19 @@ async function validateApiKey(pool, key) {
144
166
  // When a stamp is due, we await it so that a read made after validateApiKey
145
167
  // resolves sees the new last_used_at. Without the await, listDormantKeys can
146
168
  // report a just-used key.
147
- // Transparent upgrade: if we matched via legacy SHA-256 but HMAC secret is
148
- // available, re-hash with HMAC and update the stored hash in-place.
169
+ // Transparent upgrade: if we matched via legacy SHA-256 and the HMAC secret
170
+ // is set, re-hash with HMAC and update the stored hash in place.
149
171
  const { row } = found;
150
172
  const upgrade = row.hash_version === HASH_V1_SHA256 && hmacSecret;
173
+ if (upgrade)
174
+ options.onLegacyHash?.();
151
175
  if (!upgrade && !row.stamp_due)
152
176
  return found.validated;
153
177
  await (0, pool_helpers_js_1.withClient)(pool, async (client) => {
154
178
  // SET LOCAL ends with this transaction, so the pooled connection keeps its own timeout.
155
179
  await client.query(`SET LOCAL statement_timeout = ${STAMP_TIMEOUT_MS}`);
156
180
  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])
181
+ ? client.query(`UPDATE api_keys SET key_hash = $1, hash_version = $2, last_used_at = now() WHERE id = $3 AND hash_version = 1`, [hmacHash(key, hmacSecret), HASH_V2_HMAC, row.id])
158
182
  : // The condition repeats the check, so a concurrent request that stamped first wins.
159
183
  client.query(`UPDATE api_keys SET last_used_at = now()
160
184
  WHERE id = $1 AND (last_used_at IS NULL OR last_used_at < now() - make_interval(secs => $2))`, [row.id, STAMP_INTERVAL_SECONDS]);
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-service.js","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-key-service.js","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,26 @@
1
1
  import pg from "pg";
2
- import { type ConfigEntry, type SetConfigInput, type BatchSetConfigEntry, type ResolvedConfig, type BatchSetConfigResult } from "@stratum-hq/core";
2
+ import { type ConfigEntry, type SetConfigInput, type BatchSetConfigEntry, type ResolvedConfig, type ResolveConfigOptions, type BatchSetConfigResult } from "@stratum-hq/core";
3
3
  /**
4
4
  * Resolve the effective config for a tenant by batch-loading ancestor configs
5
5
  * in a single query and walking root→leaf.
6
+ *
7
+ * Sensitive values inherited from an ancestor come back masked unless
8
+ * `options` reveals them (see {@link ResolveConfigOptions}).
6
9
  */
7
- export declare function resolveConfig(pool: pg.Pool, tenantId: string): Promise<ResolvedConfig>;
10
+ export declare function resolveConfig(pool: pg.Pool, tenantId: string, options?: ResolveConfigOptions): Promise<ResolvedConfig>;
8
11
  /**
9
12
  * Set (upsert) a config key for a tenant.
10
13
  * Rejects if the key is locked by an ancestor.
11
14
  */
12
15
  export declare function setConfig(pool: pg.Pool, tenantId: string, key: string, input: SetConfigInput): Promise<ConfigEntry>;
13
16
  /**
14
- * Set multiple config keys for a tenant in a single transaction.
15
- * Partial success: locked keys are skipped and reported as errors,
16
- * while unlocked keys are set successfully within the same transaction.
17
+ * Set multiple config keys for a tenant in a single, atomic transaction.
18
+ *
19
+ * Every entry is checked before anything is written. If any key is locked by
20
+ * an active ancestor or is invalid, the whole batch is rolled back: nothing is
21
+ * written, `rolled_back` is true, and each result has status "error". The
22
+ * offending keys carry their own reason; the rest name the keys that caused
23
+ * the rollback.
17
24
  */
18
25
  export declare function batchSetConfig(pool: pg.Pool, tenantId: string, entries: BatchSetConfigEntry[]): Promise<BatchSetConfigResult>;
19
26
  /**
@@ -23,6 +30,8 @@ export declare function deleteConfig(pool: pg.Pool, tenantId: string, key: strin
23
30
  /**
24
31
  * Return all config entries for a tenant showing inheritance status:
25
32
  * inherited (from ancestor), overridden (tenant has own value), or locked.
33
+ *
34
+ * Inherited sensitive values are masked as in {@link resolveConfig}.
26
35
  */
27
- export declare function getConfigWithInheritance(pool: pg.Pool, tenantId: string): Promise<ResolvedConfig>;
36
+ export declare function getConfigWithInheritance(pool: pg.Pool, tenantId: string, options?: ResolveConfigOptions): Promise<ResolvedConfig>;
28
37
  //# sourceMappingURL=config-service.d.ts.map
@@ -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;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"}
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,EACzB,KAAK,oBAAoB,EAO1B,MAAM,kBAAkB,CAAC;AAyC1B;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,CAAC,CAmEzB;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;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAwF/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;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,CAAC,CAwFzB"}
@@ -9,11 +9,45 @@ 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
11
  const tenant_service_js_1 = require("./tenant-service.js");
12
+ /**
13
+ * Build the resolved entry for a stored `entry` read at `tenantId`.
14
+ *
15
+ * A sensitive value set on another tenant (an ancestor) is masked: `value` is
16
+ * null and `masked` is true, and it is never decrypted. `options` reveals it
17
+ * to trusted server code (`revealSensitive`) or to the tenant that set it
18
+ * (`viewerTenantId`). A tenant's own sensitive values are always decrypted.
19
+ */
20
+ function toResolvedEntry(entry, tenantId, inherited, locked, options) {
21
+ const resolved = {
22
+ key: entry.key,
23
+ value: entry.value,
24
+ source_tenant_id: entry.source_tenant_id,
25
+ inherited,
26
+ locked,
27
+ };
28
+ if (!entry.sensitive)
29
+ return resolved;
30
+ resolved.sensitive = true;
31
+ const reveal = entry.tenant_id === tenantId ||
32
+ options.revealSensitive === true ||
33
+ (options.viewerTenantId !== undefined && options.viewerTenantId === entry.source_tenant_id);
34
+ if (reveal) {
35
+ resolved.value = JSON.parse((0, crypto_js_1.decrypt)(entry.value));
36
+ }
37
+ else {
38
+ resolved.value = null;
39
+ resolved.masked = true;
40
+ }
41
+ return resolved;
42
+ }
12
43
  /**
13
44
  * Resolve the effective config for a tenant by batch-loading ancestor configs
14
45
  * in a single query and walking root→leaf.
46
+ *
47
+ * Sensitive values inherited from an ancestor come back masked unless
48
+ * `options` reveals them (see {@link ResolveConfigOptions}).
15
49
  */
16
- async function resolveConfig(pool, tenantId) {
50
+ async function resolveConfig(pool, tenantId, options = {}) {
17
51
  return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
18
52
  const tenantRes = await client.query(`SELECT ancestry_path FROM tenants WHERE id = $1 AND status != 'archived'`, [tenantId]);
19
53
  if (tenantRes.rows.length === 0) {
@@ -54,16 +88,7 @@ async function resolveConfig(pool, tenantId) {
54
88
  continue;
55
89
  }
56
90
  const isCurrentTenant = currentTenantId === tenantId;
57
- const resolvedValue = entry.sensitive
58
- ? JSON.parse((0, crypto_js_1.decrypt)(entry.value))
59
- : entry.value;
60
- resolved.set(entry.key, {
61
- key: entry.key,
62
- value: resolvedValue,
63
- source_tenant_id: entry.source_tenant_id,
64
- inherited: !isCurrentTenant,
65
- locked: entry.locked,
66
- });
91
+ resolved.set(entry.key, toResolvedEntry(entry, tenantId, !isCurrentTenant, entry.locked, options));
67
92
  }
68
93
  }
69
94
  return Object.fromEntries(resolved);
@@ -108,9 +133,33 @@ async function setConfig(pool, tenantId, key, input) {
108
133
  });
109
134
  }
110
135
  /**
111
- * Set multiple config keys for a tenant in a single transaction.
112
- * Partial success: locked keys are skipped and reported as errors,
113
- * while unlocked keys are set successfully within the same transaction.
136
+ * Return why a batch entry cannot be written, or null when it can.
137
+ * The value must serialize to JSON because config_entries.value is JSONB NOT NULL.
138
+ */
139
+ function invalidBatchEntryReason(entry) {
140
+ if (typeof entry.key !== "string" || entry.key.length === 0) {
141
+ return "Config key must be a non-empty string";
142
+ }
143
+ let serialized;
144
+ try {
145
+ serialized = JSON.stringify(entry.value);
146
+ }
147
+ catch {
148
+ serialized = undefined;
149
+ }
150
+ if (serialized === undefined) {
151
+ return `Config '${entry.key}' has a value that cannot be stored as JSON`;
152
+ }
153
+ return null;
154
+ }
155
+ /**
156
+ * Set multiple config keys for a tenant in a single, atomic transaction.
157
+ *
158
+ * Every entry is checked before anything is written. If any key is locked by
159
+ * an active ancestor or is invalid, the whole batch is rolled back: nothing is
160
+ * written, `rolled_back` is true, and each result has status "error". The
161
+ * offending keys carry their own reason; the rest name the keys that caused
162
+ * the rollback.
114
163
  */
115
164
  async function batchSetConfig(pool, tenantId, entries) {
116
165
  return (0, pool_helpers_js_1.withTransaction)(pool, async (client) => {
@@ -131,20 +180,36 @@ async function batchSetConfig(pool, tenantId, entries) {
131
180
  lockedKeys.set(row.key, row.source_tenant_id);
132
181
  }
133
182
  }
134
- const results = [];
135
- let succeeded = 0;
136
- let failed = 0;
137
- for (const entry of entries) {
183
+ // Check every entry before writing anything.
184
+ const failures = new Map();
185
+ entries.forEach((entry, i) => {
186
+ const invalid = invalidBatchEntryReason(entry);
187
+ if (invalid) {
188
+ failures.set(i, invalid);
189
+ return;
190
+ }
138
191
  const lockerTenantId = lockedKeys.get(entry.key);
139
192
  if (lockerTenantId) {
140
- results.push({
193
+ failures.set(i, `Config '${entry.key}' is locked by tenant ${lockerTenantId} and cannot be overridden`);
194
+ }
195
+ });
196
+ if (failures.size > 0) {
197
+ const failedKeys = [...failures.keys()].map((i) => `'${entries[i].key}'`).join(", ");
198
+ const rolledBack = `Not applied: the batch was rolled back because ${failedKeys} failed`;
199
+ return {
200
+ results: entries.map((entry, i) => ({
141
201
  key: entry.key,
142
202
  status: "error",
143
- error: `Config '${entry.key}' is locked by tenant ${lockerTenantId} and cannot be overridden`,
144
- });
145
- failed++;
146
- continue;
147
- }
203
+ error: failures.get(i) ?? rolledBack,
204
+ })),
205
+ succeeded: 0,
206
+ failed: entries.length,
207
+ rolled_back: true,
208
+ };
209
+ }
210
+ const results = [];
211
+ let succeeded = 0;
212
+ for (const entry of entries) {
148
213
  const sensitive = entry.sensitive ?? false;
149
214
  const storedValue = sensitive
150
215
  ? JSON.stringify((0, crypto_js_1.encrypt)(JSON.stringify(entry.value)))
@@ -165,7 +230,7 @@ async function batchSetConfig(pool, tenantId, entries) {
165
230
  });
166
231
  succeeded++;
167
232
  }
168
- return { results, succeeded, failed };
233
+ return { results, succeeded, failed: 0, rolled_back: false };
169
234
  });
170
235
  }
171
236
  /**
@@ -182,8 +247,10 @@ async function deleteConfig(pool, tenantId, key) {
182
247
  /**
183
248
  * Return all config entries for a tenant showing inheritance status:
184
249
  * inherited (from ancestor), overridden (tenant has own value), or locked.
250
+ *
251
+ * Inherited sensitive values are masked as in {@link resolveConfig}.
185
252
  */
186
- async function getConfigWithInheritance(pool, tenantId) {
253
+ async function getConfigWithInheritance(pool, tenantId, options = {}) {
187
254
  return (0, pool_helpers_js_1.withClient)(pool, async (client) => {
188
255
  const tenantRes = await client.query(`SELECT ancestry_path FROM tenants WHERE id = $1`, [tenantId]);
189
256
  if (tenantRes.rows.length === 0) {
@@ -231,9 +298,6 @@ async function getConfigWithInheritance(pool, tenantId) {
231
298
  }
232
299
  }
233
300
  }
234
- const decryptEntryValue = (entry) => entry.sensitive
235
- ? JSON.parse((0, crypto_js_1.decrypt)(entry.value))
236
- : entry.value;
237
301
  const result = {};
238
302
  for (const [key, rec] of byKey) {
239
303
  const lockedEntry = rec.lockedBy;
@@ -241,33 +305,15 @@ async function getConfigWithInheritance(pool, tenantId) {
241
305
  const ancestorEntry = rec.ancestorEntry;
242
306
  if (lockedEntry) {
243
307
  // Key is locked: show ancestor's locked value regardless of tenant override
244
- result[key] = {
245
- key,
246
- value: decryptEntryValue(lockedEntry),
247
- source_tenant_id: lockedEntry.source_tenant_id,
248
- inherited: true,
249
- locked: true,
250
- };
308
+ result[key] = toResolvedEntry(lockedEntry, tenantId, true, true, options);
251
309
  }
252
310
  else if (tenantEntry) {
253
311
  // Tenant has its own value (override or own entry)
254
- result[key] = {
255
- key,
256
- value: decryptEntryValue(tenantEntry),
257
- source_tenant_id: tenantEntry.source_tenant_id,
258
- inherited: false,
259
- locked: tenantEntry.locked,
260
- };
312
+ result[key] = toResolvedEntry(tenantEntry, tenantId, false, tenantEntry.locked, options);
261
313
  }
262
314
  else if (ancestorEntry) {
263
315
  // Inherited from ancestor
264
- result[key] = {
265
- key,
266
- value: decryptEntryValue(ancestorEntry),
267
- source_tenant_id: ancestorEntry.source_tenant_id,
268
- inherited: true,
269
- locked: ancestorEntry.locked,
270
- };
316
+ result[key] = toResolvedEntry(ancestorEntry, tenantId, true, ancestorEntry.locked, options);
271
317
  }
272
318
  }
273
319
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-service.d.ts","sourceRoot":"","sources":["../../src/services/tenant-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-service.d.ts","sourceRoot":"","sources":["../../src/services/tenant-service.ts"],"names":[],"mappings":"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"}
@@ -295,10 +295,10 @@ async function loadForTransition(client, id) {
295
295
  * and forces a leaf-first walk so no active tenant is ever left under a
296
296
  * non-active parent.
297
297
  */
298
- async function assertNoActiveChildren(client, id) {
298
+ async function assertNoActiveChildren(client, id, action) {
299
299
  const childrenRes = await client.query(`SELECT COUNT(*) as count FROM tenants WHERE parent_id = $1 AND status = 'active'`, [id]);
300
300
  if (parseInt(childrenRes.rows[0].count, 10) > 0) {
301
- throw new core_1.TenantHasChildrenError(id);
301
+ throw new core_1.TenantHasChildrenError(id, action);
302
302
  }
303
303
  }
304
304
  /**
@@ -311,7 +311,7 @@ async function suspendTenant(pool, id) {
311
311
  if (tenant.status !== "active") {
312
312
  throw new core_1.InvalidTenantStateError(id, tenant.status, "suspend", ["active"]);
313
313
  }
314
- await assertNoActiveChildren(client, id);
314
+ await assertNoActiveChildren(client, id, "suspend");
315
315
  const res = await client.query(`UPDATE tenants SET status = 'suspended', updated_at = now() WHERE id = $1 RETURNING *`, [id]);
316
316
  return res.rows[0];
317
317
  });
@@ -326,7 +326,7 @@ async function archiveTenant(pool, id) {
326
326
  if (tenant.status !== "active" && tenant.status !== "suspended") {
327
327
  throw new core_1.InvalidTenantStateError(id, tenant.status, "archive", ["active", "suspended"]);
328
328
  }
329
- await assertNoActiveChildren(client, id);
329
+ await assertNoActiveChildren(client, id, "archive");
330
330
  const res = await client.query(`UPDATE tenants SET status = 'archived', deleted_at = now(), updated_at = now() WHERE id = $1 RETURNING *`, [id]);
331
331
  return res.rows[0];
332
332
  });