@selvajs/supabase-provider 0.14.4-beta.1 → 0.15.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/data/SupabaseComputeServerStore.d.ts +14 -3
- package/dist/data/SupabaseComputeServerStore.d.ts.map +1 -1
- package/dist/data/SupabaseComputeServerStore.js +67 -16
- package/dist/data/SupabaseComputeServerStore.js.map +1 -1
- package/dist/data/SupabaseDataProvider.d.ts +24 -8
- package/dist/data/SupabaseDataProvider.d.ts.map +1 -1
- package/dist/data/SupabaseDataProvider.js +60 -15
- package/dist/data/SupabaseDataProvider.js.map +1 -1
- package/dist/data/SupabaseDefinitionStore.d.ts.map +1 -1
- package/dist/data/SupabaseDefinitionStore.js +14 -3
- package/dist/data/SupabaseDefinitionStore.js.map +1 -1
- package/dist/data/SupabaseEventSink.d.ts +5 -2
- package/dist/data/SupabaseEventSink.d.ts.map +1 -1
- package/dist/data/SupabaseEventSink.js +20 -3
- package/dist/data/SupabaseEventSink.js.map +1 -1
- package/dist/data/SupabaseSolveMetricSink.d.ts +49 -4
- package/dist/data/SupabaseSolveMetricSink.d.ts.map +1 -1
- package/dist/data/SupabaseSolveMetricSink.js +109 -19
- package/dist/data/SupabaseSolveMetricSink.js.map +1 -1
- package/dist/data/migrationHead.d.ts +1 -1
- package/dist/data/migrationHead.js +1 -1
- package/package.json +12 -2
- package/supabase/migrations/20260716120000_definition_status_and_audit_version.sql +36 -0
- package/supabase/migrations/20260716130000_erase_user_audit_email.sql +36 -0
- package/supabase/migrations/20260717120000_compute_server_has_api_key.sql +20 -0
- package/supabase/.branches/_current_branch +0 -1
- package/supabase/.temp/cli-latest +0 -1
package/README.md
CHANGED
|
@@ -93,6 +93,8 @@ The `supabase/migrations/` directory holds timestamp-prefixed files, applied in
|
|
|
93
93
|
| `20260425155514_selva_initial.sql` | Everything: `user_profiles` (+ auto-seed trigger), `orgs` / `org_members` / `projects` / `project_members` (+ RLS helpers), `definitions` / `definition_versions` (+ deletion-protection FKs and the atomic `increment_run_count` RPC), `invites` (+ `get_invite_by_token` RPC), `compute_servers` (+ per-org/instance defaults, spec §3 BYO compute), `share_links` (+ `try_increment_share_link_solve_count` RPC, spec §7), and the `selva-public` / `selva-private` storage policies. |
|
|
94
94
|
| `20260529202220_selva_definition_version_schema.sql` | Adds `definition_versions.schema` + `schema_extracted_at` (cached compute-extracted UI schema) and the previously-missing `change_note` column. All `add column if not exists`, so it's safe to re-run. |
|
|
95
95
|
|
|
96
|
+
These two are only the foundation — the directory ships further timestamp-prefixed migrations on top (solve metrics, org assets, definition status/audit, erasure functions, …). The table above is not the full list; `supabase/migrations/` in filename order is authoritative.
|
|
97
|
+
|
|
96
98
|
Future schema changes go in new timestamp-prefixed files: `<UTCtimestamp>_selva_<name>.sql` (e.g. `date -u +%Y%m%d%H%M%S` for the prefix). The `_selva_` infix and timestamp prefix let a consuming app's own migrations interleave by time without ever colliding with Selva's — see [Consuming migrations in an external app](#consuming-migrations-in-an-external-app).
|
|
97
99
|
|
|
98
100
|
The `supabase/seed.sql` file creates the two storage buckets (`selva-public`, `selva-private`).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type IComputeServerStore, type ComputeConfig, type ComputeServerConfig, type RequestContext, type SecretVerificationReport } from '@selvajs/platform';
|
|
1
|
+
import { type IComputeServerStore, type ComputeConfig, type ComputeServerConfig, type GetConfigOptions, type RequestContext, type SecretVerificationReport, type ILogger } from '@selvajs/platform';
|
|
2
2
|
import type { ClientBundle } from './client.js';
|
|
3
3
|
/**
|
|
4
4
|
* Compute-server config backed by three tables:
|
|
@@ -24,9 +24,20 @@ export declare class SupabaseComputeServerStore implements IComputeServerStore {
|
|
|
24
24
|
* local provider's on-disk envelope. Optional only for legacy construction
|
|
25
25
|
* paths (tests that never touch apiKeys); a store built without a key throws
|
|
26
26
|
* if asked to write or read a secret. Wire it via `SupabaseDataProvider`.
|
|
27
|
+
*
|
|
28
|
+
* `logger` is optional and defaults to `NoopLogger` — this is library code, so
|
|
29
|
+
* it stays silent unless the app wires a real logger in.
|
|
27
30
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
private readonly logger;
|
|
32
|
+
constructor(clients: ClientBundle, secretKey?: Buffer | undefined, logger?: ILogger);
|
|
33
|
+
getConfig(ctx: RequestContext, opts?: GetConfigOptions): Promise<ComputeConfig>;
|
|
34
|
+
/**
|
|
35
|
+
* One server's decrypted key — the solve path's entry point, replacing a
|
|
36
|
+
* whole-table read + N decrypts with a single-row lookup and one decrypt.
|
|
37
|
+
* Tolerant in the same way `decryptRowApiKey` is: an unknown id or an
|
|
38
|
+
* unreadable ciphertext yields `undefined` rather than throwing.
|
|
39
|
+
*/
|
|
40
|
+
getServerApiKey(ctx: RequestContext, serverId: string): Promise<string | undefined>;
|
|
30
41
|
savePlatformServers(ctx: RequestContext, servers: ComputeServerConfig[], defaultServerId: string | undefined): Promise<void>;
|
|
31
42
|
saveOrgServers(ctx: RequestContext, orgId: string, servers: ComputeServerConfig[], defaultServerId?: string | null): Promise<void>;
|
|
32
43
|
setOrgDefault(ctx: RequestContext, orgId: string, serverId: string | null): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseComputeServerStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseComputeServerStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseComputeServerStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseComputeServerStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,OAAO,EACZ,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsBhD;;;;;;;;;;;;;GAaG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAepE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAf5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAGf,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,MAAM,YAAA,EACnC,MAAM,CAAC,EAAE,OAAO;IAKX,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiDzF;;;;;OAKG;IACG,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAYnF,mBAAmB,CACxB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,eAAe,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,IAAI,CAAC;IAiCV,cAAc,CACnB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,EAAE,EAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC;IAgCV,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzF,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BpE;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC;CA0CxD"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { isOrgServer, isPlatformServer } from '@selvajs/platform';
|
|
2
|
+
import { NoopLogger } from '@selvajs/platform';
|
|
2
3
|
// Secret crypto functions come from the server-only subpath (they use
|
|
3
4
|
// `node:crypto`, kept out of the root barrel so client bundles don't pull it in).
|
|
4
5
|
import { decryptSecret, encryptSecret, isEncryptedSecret } from '@selvajs/platform/computeServer';
|
|
5
6
|
import { mapPostgrestError } from './errors.js';
|
|
6
|
-
/**
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Explicit column list for `compute_servers`, minus the encrypted `api_key`.
|
|
9
|
+
* Reading a key costs a decrypt per row, so the default projection leaves it
|
|
10
|
+
* out entirely and `getConfig` reports only whether one is set.
|
|
11
|
+
*/
|
|
12
|
+
const SERVER_COLUMNS = 'id, scope, owner_org_id, shared_with_all, label, server_url, timeout_ms, retry_count, has_api_key';
|
|
13
|
+
/**
|
|
14
|
+
* Projection for the `includeApiKeys` path — the base columns plus the secret.
|
|
15
|
+
* Spelled out rather than interpolated: supabase-js infers the row type from
|
|
16
|
+
* the literal column string, and a template literal degrades it to `string`.
|
|
17
|
+
*/
|
|
18
|
+
const SERVER_COLUMNS_WITH_KEY = 'id, scope, owner_org_id, shared_with_all, label, server_url, timeout_ms, retry_count, has_api_key, api_key';
|
|
8
19
|
/** Columns from the share join table read in `getConfig`. */
|
|
9
20
|
const SHARE_COLUMNS = 'server_id, org_id';
|
|
10
21
|
/** Columns from the per-org default table read in `getConfig`. */
|
|
@@ -33,15 +44,26 @@ export class SupabaseComputeServerStore {
|
|
|
33
44
|
* local provider's on-disk envelope. Optional only for legacy construction
|
|
34
45
|
* paths (tests that never touch apiKeys); a store built without a key throws
|
|
35
46
|
* if asked to write or read a secret. Wire it via `SupabaseDataProvider`.
|
|
47
|
+
*
|
|
48
|
+
* `logger` is optional and defaults to `NoopLogger` — this is library code, so
|
|
49
|
+
* it stays silent unless the app wires a real logger in.
|
|
36
50
|
*/
|
|
37
|
-
|
|
51
|
+
logger;
|
|
52
|
+
constructor(clients, secretKey, logger) {
|
|
38
53
|
this.clients = clients;
|
|
39
54
|
this.secretKey = secretKey;
|
|
55
|
+
this.logger = logger ?? new NoopLogger();
|
|
40
56
|
}
|
|
41
|
-
async getConfig(ctx) {
|
|
57
|
+
async getConfig(ctx, opts = {}) {
|
|
42
58
|
const client = this.clients.forRequest(ctx);
|
|
59
|
+
const withKeys = opts.includeApiKeys === true;
|
|
43
60
|
const [serversRes, sharesRes, orgDefRes, platDefRes] = await Promise.all([
|
|
44
|
-
|
|
61
|
+
// Two literal selects rather than one interpolated column string:
|
|
62
|
+
// supabase-js derives the row type from the literal, so a computed one
|
|
63
|
+
// resolves to a ParserError instead of a row.
|
|
64
|
+
withKeys
|
|
65
|
+
? client.from('compute_servers').select(SERVER_COLUMNS_WITH_KEY)
|
|
66
|
+
: client.from('compute_servers').select(SERVER_COLUMNS),
|
|
45
67
|
client.from('compute_server_shares').select(SHARE_COLUMNS),
|
|
46
68
|
client.from('compute_server_org_defaults').select(ORG_DEFAULT_COLUMNS),
|
|
47
69
|
client
|
|
@@ -65,7 +87,7 @@ export class SupabaseComputeServerStore {
|
|
|
65
87
|
list.push(row.org_id);
|
|
66
88
|
sharedByServer.set(row.server_id, list);
|
|
67
89
|
}
|
|
68
|
-
const servers = (serversRes.data ?? []).map((row) => rowToServer(this.decryptRowApiKey(row), sharedByServer));
|
|
90
|
+
const servers = (serversRes.data ?? []).map((row) => rowToServer(withKeys ? this.decryptRowApiKey(row) : row, sharedByServer, withKeys));
|
|
69
91
|
const orgDefaults = {};
|
|
70
92
|
for (const row of orgDefRes.data ?? []) {
|
|
71
93
|
if (row.default_server_id)
|
|
@@ -77,6 +99,25 @@ export class SupabaseComputeServerStore {
|
|
|
77
99
|
orgDefaults
|
|
78
100
|
};
|
|
79
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* One server's decrypted key — the solve path's entry point, replacing a
|
|
104
|
+
* whole-table read + N decrypts with a single-row lookup and one decrypt.
|
|
105
|
+
* Tolerant in the same way `decryptRowApiKey` is: an unknown id or an
|
|
106
|
+
* unreadable ciphertext yields `undefined` rather than throwing.
|
|
107
|
+
*/
|
|
108
|
+
async getServerApiKey(ctx, serverId) {
|
|
109
|
+
const { data, error } = await this.clients
|
|
110
|
+
.forRequest(ctx)
|
|
111
|
+
.from('compute_servers')
|
|
112
|
+
.select('id, label, api_key')
|
|
113
|
+
.eq('id', serverId)
|
|
114
|
+
.maybeSingle();
|
|
115
|
+
if (error)
|
|
116
|
+
throw mapPostgrestError(error);
|
|
117
|
+
if (!data)
|
|
118
|
+
return undefined;
|
|
119
|
+
return this.decryptRowApiKey(data).api_key ?? undefined;
|
|
120
|
+
}
|
|
80
121
|
async savePlatformServers(ctx, servers, defaultServerId) {
|
|
81
122
|
const client = this.clients.forRequest(ctx);
|
|
82
123
|
const platformOnly = servers.filter(isPlatformServer);
|
|
@@ -217,23 +258,25 @@ export class SupabaseComputeServerStore {
|
|
|
217
258
|
if (!isEncryptedSecret(row.api_key)) {
|
|
218
259
|
// Legacy/hand-inserted plaintext. Pass through so an existing key
|
|
219
260
|
// keeps working; verifySecrets() flags it for re-save via /admin/compute.
|
|
220
|
-
|
|
221
|
-
'Re-save it via /admin/compute so it is stored encrypted.');
|
|
261
|
+
this.logger.warn('Compute server row has a plaintext api_key; re-save it via /admin/compute so it is stored encrypted', { component: 'selva', serverLabel: row.label, serverId: row.id });
|
|
222
262
|
return row;
|
|
223
263
|
}
|
|
224
264
|
if (!this.secretKey) {
|
|
225
|
-
|
|
226
|
-
'SELVA_AT_REST_KEY is not configured. Returning without a key; solves will fail.');
|
|
265
|
+
this.logger.warn('Cannot decrypt api_key: SELVA_AT_REST_KEY is not configured. Returning without a key; solves will fail', { component: 'selva', serverLabel: row.label, serverId: row.id });
|
|
227
266
|
return { ...row, api_key: null };
|
|
228
267
|
}
|
|
229
268
|
try {
|
|
230
269
|
return { ...row, api_key: decryptSecret(row.api_key, this.secretKey) };
|
|
231
270
|
}
|
|
232
271
|
catch (cause) {
|
|
233
|
-
|
|
234
|
-
'
|
|
235
|
-
'
|
|
236
|
-
|
|
272
|
+
this.logger.warn('Could not decrypt api_key: the stored ciphertext does not match the current SELVA_AT_REST_KEY. ' +
|
|
273
|
+
'This server is returned without an apiKey and solves against it will fail. ' +
|
|
274
|
+
'Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY', {
|
|
275
|
+
component: 'selva',
|
|
276
|
+
serverLabel: row.label,
|
|
277
|
+
serverId: row.id,
|
|
278
|
+
err: cause instanceof Error ? (cause.stack ?? cause.message) : String(cause)
|
|
279
|
+
});
|
|
237
280
|
return { ...row, api_key: null };
|
|
238
281
|
}
|
|
239
282
|
}
|
|
@@ -286,12 +329,20 @@ export class SupabaseComputeServerStore {
|
|
|
286
329
|
return { ok: failures.length === 0, failures, plaintextFound };
|
|
287
330
|
}
|
|
288
331
|
}
|
|
289
|
-
|
|
332
|
+
/**
|
|
333
|
+
* `withKey` mirrors the projection the row was read with. It gates `apiKey`
|
|
334
|
+
* explicitly rather than trusting the row's shape, so a key can never ride along
|
|
335
|
+
* on a read that didn't ask for one.
|
|
336
|
+
*/
|
|
337
|
+
function rowToServer(row, sharedByServer, withKey) {
|
|
290
338
|
const common = {
|
|
291
339
|
id: row.id,
|
|
292
340
|
label: row.label,
|
|
293
341
|
serverUrl: row.server_url,
|
|
294
|
-
apiKey: row.api_key ?? undefined,
|
|
342
|
+
apiKey: withKey ? (row.api_key ?? undefined) : undefined,
|
|
343
|
+
// Prefer the generated column; fall back to the key itself for rows read
|
|
344
|
+
// with the key-bearing projection on a DB predating the column.
|
|
345
|
+
hasApiKey: row.has_api_key ?? !!row.api_key,
|
|
295
346
|
timeoutMs: row.timeout_ms ?? undefined,
|
|
296
347
|
retryCount: row.retry_count ?? undefined
|
|
297
348
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseComputeServerStore.js","sourceRoot":"","sources":["../../src/data/SupabaseComputeServerStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SupabaseComputeServerStore.js","sourceRoot":"","sources":["../../src/data/SupabaseComputeServerStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { IDataProvider, IEventSink, IPlatformProjectGrantStore, SchemaVersionReport } from '@selvajs/platform';
|
|
1
|
+
import type { IDataProvider, IEventSink, IPlatformProjectGrantStore, RequestContext, SchemaVersionReport, UserErasureOptions } from '@selvajs/platform';
|
|
2
|
+
import { type ILogger } from '@selvajs/platform';
|
|
2
3
|
import type { ClientBundle, BuildClientOptions } from './client.js';
|
|
3
4
|
import { SupabaseSolveMetricSink } from './SupabaseSolveMetricSink.js';
|
|
4
5
|
import { SupabaseAuditQuery } from './SupabaseAuditQuery.js';
|
|
@@ -36,8 +37,8 @@ export declare class SupabaseDataProvider implements IDataProvider {
|
|
|
36
37
|
*/
|
|
37
38
|
readonly solveMetrics: SupabaseSolveMetricSink;
|
|
38
39
|
private constructor();
|
|
39
|
-
static fromEnv(env: Record<string, string | undefined>, events?: IEventSink): SupabaseDataProvider;
|
|
40
|
-
static create(opts: BuildClientOptions, events?: IEventSink, secretKey?: Buffer): SupabaseDataProvider;
|
|
40
|
+
static fromEnv(env: Record<string, string | undefined>, events?: IEventSink, logger?: ILogger): SupabaseDataProvider;
|
|
41
|
+
static create(opts: BuildClientOptions, events?: IEventSink, secretKey?: Buffer, logger?: ILogger): SupabaseDataProvider;
|
|
41
42
|
/**
|
|
42
43
|
* Build from a pre-existing `ClientBundle`. Useful for tests or advanced
|
|
43
44
|
* cases that need to inject a custom event sink or share a bundle externally.
|
|
@@ -45,7 +46,7 @@ export declare class SupabaseDataProvider implements IDataProvider {
|
|
|
45
46
|
* compute-server apiKeys (writes without a key throw rather than persist
|
|
46
47
|
* plaintext).
|
|
47
48
|
*/
|
|
48
|
-
static fromBundle(bundle: ClientBundle, events?: IEventSink, secretKey?: Buffer): SupabaseDataProvider;
|
|
49
|
+
static fromBundle(bundle: ClientBundle, events?: IEventSink, secretKey?: Buffer, logger?: ILogger): SupabaseDataProvider;
|
|
49
50
|
/**
|
|
50
51
|
* Expose the underlying bundle so other providers in the same package
|
|
51
52
|
* (storage, user profile, auth) can share one set of clients per process.
|
|
@@ -68,10 +69,25 @@ export declare class SupabaseDataProvider implements IDataProvider {
|
|
|
68
69
|
*/
|
|
69
70
|
ensureUser(): Promise<void>;
|
|
70
71
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
72
|
+
* Erasure hook (audit P1). FK cascade against `auth.users` already removes
|
|
73
|
+
* the profile, memberships, and owned rows — but three classes of personal
|
|
74
|
+
* data are NOT reachable by those FKs and are scrubbed explicitly here with
|
|
75
|
+
* the RLS-bypassing service client (this runs as a system erasure op):
|
|
76
|
+
*
|
|
77
|
+
* 1. `audit_events` keyed by a plain-text `actor_id` (no FK) — the deleted
|
|
78
|
+
* user's own actions. Deleted.
|
|
79
|
+
* 2. The user's email in `invites.email` (invites addressed to them) and in
|
|
80
|
+
* `invite.created` audit payloads (`data->>'email'`). The invite rows are
|
|
81
|
+
* deleted; the audit email is redacted in place (the audit *fact* that an
|
|
82
|
+
* invite was created is preserved — only the PII is removed).
|
|
83
|
+
* 3. `solve_metrics` — deliberately not FK-cascaded (retention telemetry).
|
|
84
|
+
* `actor_id` is tombstoned to {@link ERASED_ACTOR_ID}, keeping the row's
|
|
85
|
+
* aggregate value without identifying the person.
|
|
86
|
+
*
|
|
87
|
+
* Each step tolerates missing rows so the hook is idempotent on retry. Email
|
|
88
|
+
* scrubs are skipped when `opts.email` is absent (the caller must capture it
|
|
89
|
+
* before `deleteUser`).
|
|
74
90
|
*/
|
|
75
|
-
onUserDeleted(): Promise<void>;
|
|
91
|
+
onUserDeleted(_ctx: RequestContext, userId: string, opts?: UserErasureOptions): Promise<void>;
|
|
76
92
|
}
|
|
77
93
|
//# sourceMappingURL=SupabaseDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,UAAU,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,UAAU,EACV,0BAA0B,EAC1B,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA8C,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG7F,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AA0BpG;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAqBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IApBzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;IACtD,QAAQ,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAE/C,OAAO;IAoBP,MAAM,CAAC,OAAO,CACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,GAAE,OAA0B,GAChC,oBAAoB;IAuBvB,MAAM,CAAC,MAAM,CACZ,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,OAA0B,GAChC,oBAAoB;IAUvB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,GAAE,OAA0B,GAChC,oBAAoB;IASvB;;;OAGG;IACH,eAAe,IAAI,YAAY;IAI/B;;;;;;;;OAQG;IACG,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAgDzD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;;;;;;;;;;;;;;;;OAmBG;IACG,aAAa,CAClB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC;CAiDhB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderError } from '@selvajs/platform';
|
|
1
|
+
import { ERASED_ACTOR_ID, NoopLogger, ProviderError } from '@selvajs/platform';
|
|
2
2
|
import { decodeSecretKey } from '@selvajs/platform/computeServer';
|
|
3
3
|
import { EXPECTED_MIGRATION_HEAD } from './migrationHead.js';
|
|
4
4
|
import { buildClientBundle, clientBundleFromEnv } from './client.js';
|
|
@@ -61,22 +61,22 @@ export class SupabaseDataProvider {
|
|
|
61
61
|
* constructing a second Supabase client.
|
|
62
62
|
*/
|
|
63
63
|
solveMetrics;
|
|
64
|
-
constructor(clients, events, secretKey) {
|
|
64
|
+
constructor(clients, events, secretKey, logger = new NoopLogger()) {
|
|
65
65
|
this.clients = clients;
|
|
66
66
|
this.events = events;
|
|
67
|
-
this.solveMetrics = new SupabaseSolveMetricSink(clients);
|
|
67
|
+
this.solveMetrics = new SupabaseSolveMetricSink(clients, { logger });
|
|
68
68
|
this.orgs = new SupabaseOrgStore(clients, events);
|
|
69
69
|
this.projects = new SupabaseProjectStore(clients, events);
|
|
70
70
|
this.definitions = new SupabaseDefinitionStore(clients, events);
|
|
71
71
|
this.invites = new SupabaseInviteStore(clients, events);
|
|
72
|
-
this.computeServer = new SupabaseComputeServerStore(clients, secretKey);
|
|
72
|
+
this.computeServer = new SupabaseComputeServerStore(clients, secretKey, logger);
|
|
73
73
|
this.shareLinks = new SupabaseShareLinkStore(clients, events);
|
|
74
74
|
this.userProfile = new SupabaseUserProfileProvider(clients);
|
|
75
75
|
this.permissions = new SupabasePlatformPermissionStore(clients);
|
|
76
76
|
this.platformProjectGrants = notImplementedGrantStore;
|
|
77
77
|
this.auditQuery = new SupabaseAuditQuery(clients);
|
|
78
78
|
}
|
|
79
|
-
static fromEnv(env, events) {
|
|
79
|
+
static fromEnv(env, events, logger = new NoopLogger()) {
|
|
80
80
|
// Bundle-only env parse (URL + anon + service-role) is shared with
|
|
81
81
|
// `clientBundleFromEnv`; the full data provider additionally requires the
|
|
82
82
|
// at-rest key below.
|
|
@@ -89,11 +89,11 @@ export class SupabaseDataProvider {
|
|
|
89
89
|
"Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"");
|
|
90
90
|
}
|
|
91
91
|
const secretKey = decodeSecretKey(env.SELVA_AT_REST_KEY);
|
|
92
|
-
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
92
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle, { logger }), secretKey, logger);
|
|
93
93
|
}
|
|
94
|
-
static create(opts, events, secretKey) {
|
|
94
|
+
static create(opts, events, secretKey, logger = new NoopLogger()) {
|
|
95
95
|
const bundle = buildClientBundle(opts);
|
|
96
|
-
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
96
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle, { logger }), secretKey, logger);
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Build from a pre-existing `ClientBundle`. Useful for tests or advanced
|
|
@@ -102,8 +102,8 @@ export class SupabaseDataProvider {
|
|
|
102
102
|
* compute-server apiKeys (writes without a key throw rather than persist
|
|
103
103
|
* plaintext).
|
|
104
104
|
*/
|
|
105
|
-
static fromBundle(bundle, events, secretKey) {
|
|
106
|
-
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
105
|
+
static fromBundle(bundle, events, secretKey, logger = new NoopLogger()) {
|
|
106
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle, { logger }), secretKey, logger);
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* Expose the underlying bundle so other providers in the same package
|
|
@@ -176,12 +176,57 @@ export class SupabaseDataProvider {
|
|
|
176
176
|
// Trigger handles it.
|
|
177
177
|
}
|
|
178
178
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
179
|
+
* Erasure hook (audit P1). FK cascade against `auth.users` already removes
|
|
180
|
+
* the profile, memberships, and owned rows — but three classes of personal
|
|
181
|
+
* data are NOT reachable by those FKs and are scrubbed explicitly here with
|
|
182
|
+
* the RLS-bypassing service client (this runs as a system erasure op):
|
|
183
|
+
*
|
|
184
|
+
* 1. `audit_events` keyed by a plain-text `actor_id` (no FK) — the deleted
|
|
185
|
+
* user's own actions. Deleted.
|
|
186
|
+
* 2. The user's email in `invites.email` (invites addressed to them) and in
|
|
187
|
+
* `invite.created` audit payloads (`data->>'email'`). The invite rows are
|
|
188
|
+
* deleted; the audit email is redacted in place (the audit *fact* that an
|
|
189
|
+
* invite was created is preserved — only the PII is removed).
|
|
190
|
+
* 3. `solve_metrics` — deliberately not FK-cascaded (retention telemetry).
|
|
191
|
+
* `actor_id` is tombstoned to {@link ERASED_ACTOR_ID}, keeping the row's
|
|
192
|
+
* aggregate value without identifying the person.
|
|
193
|
+
*
|
|
194
|
+
* Each step tolerates missing rows so the hook is idempotent on retry. Email
|
|
195
|
+
* scrubs are skipped when `opts.email` is absent (the caller must capture it
|
|
196
|
+
* before `deleteUser`).
|
|
182
197
|
*/
|
|
183
|
-
async onUserDeleted() {
|
|
184
|
-
|
|
198
|
+
async onUserDeleted(_ctx, userId, opts) {
|
|
199
|
+
const client = this.clients.serviceClient;
|
|
200
|
+
const email = opts?.email;
|
|
201
|
+
// 1. Audit rows the user authored (actor_id is plain text, no FK cascade).
|
|
202
|
+
const deletedActions = await client.from('audit_events').delete().eq('actor_id', userId);
|
|
203
|
+
if (deletedActions.error) {
|
|
204
|
+
throw new ProviderError(`Failed to erase audit_events for user: ${deletedActions.error.message}`, 500);
|
|
205
|
+
}
|
|
206
|
+
// 3. Anonymize retention telemetry rather than delete it.
|
|
207
|
+
const tombstoned = await client
|
|
208
|
+
.from('solve_metrics')
|
|
209
|
+
.update({ actor_id: ERASED_ACTOR_ID })
|
|
210
|
+
.eq('actor_id', userId);
|
|
211
|
+
if (tombstoned.error) {
|
|
212
|
+
throw new ProviderError(`Failed to anonymize solve_metrics for user: ${tombstoned.error.message}`, 500);
|
|
213
|
+
}
|
|
214
|
+
if (!email)
|
|
215
|
+
return;
|
|
216
|
+
// 2a. Invites addressed to the user's email (their PII, keyed by email
|
|
217
|
+
// not by FK). `invited_by` cascade only removes invites they SENT.
|
|
218
|
+
const deletedInvites = await client.from('invites').delete().eq('email', email);
|
|
219
|
+
if (deletedInvites.error) {
|
|
220
|
+
throw new ProviderError(`Failed to erase invites for user email: ${deletedInvites.error.message}`, 500);
|
|
221
|
+
}
|
|
222
|
+
// 2b. Redact the email out of surviving `invite.created` audit payloads
|
|
223
|
+
// (authored by the inviter, so the row itself must survive — only the
|
|
224
|
+
// embedded invitee email is scrubbed). The SQL function rewrites the
|
|
225
|
+
// `email` key in place and returns the redacted row count.
|
|
226
|
+
const redacted = await client.rpc('redact_audit_event_email', { p_email: email });
|
|
227
|
+
if (redacted.error) {
|
|
228
|
+
throw new ProviderError(`Failed to redact audit_events email payloads: ${redacted.error.message}`, 500);
|
|
229
|
+
}
|
|
185
230
|
}
|
|
186
231
|
}
|
|
187
232
|
//# sourceMappingURL=SupabaseDataProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDataProvider.js","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SupabaseDataProvider.js","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDefinitionStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDefinitionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EAGrB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseDefinitionStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDefinitionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,19 @@ import { nextCursorFromRange, toRange } from './pagination.js';
|
|
|
4
4
|
import { stampSoftDelete, stampUpdate } from './rowStamp.js';
|
|
5
5
|
/** Explicit column list for `definitions` — every field `rowToRecord` consumes. */
|
|
6
6
|
const DEFINITION_COLUMNS = 'guid, project_id, owner_id, created_by, updated_by, compute_server_id, solve_cache_limit, display_name, description, category, tags, cover_image, status, run_count, next_version_number, live_version_id, draft_version_id, created_at, updated_at, deleted_at';
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Explicit column list for `definition_versions`, minus the `schema` JSONB.
|
|
9
|
+
* `schema` can be hundreds of KB per row, so the list projection leaves it out
|
|
10
|
+
* and `listVersions` returns rows with `schema: undefined`; only `getVersion`
|
|
11
|
+
* (which reads one row, for a caller that needs the schema) pulls it in.
|
|
12
|
+
*/
|
|
13
|
+
const DEFINITION_VERSION_COLUMNS = 'id, definition_guid, version_number, file_ext, file_key, original_filename, uploaded_by, uploaded_at, change_note, schema_extracted_at';
|
|
14
|
+
/**
|
|
15
|
+
* `getVersion`'s projection — the list columns plus the `schema` JSONB. Spelled
|
|
16
|
+
* out rather than interpolated: supabase-js infers the row type from the literal
|
|
17
|
+
* column string, and a template literal degrades it to `string`.
|
|
18
|
+
*/
|
|
19
|
+
const DEFINITION_VERSION_COLUMNS_WITH_SCHEMA = 'id, definition_guid, version_number, file_ext, file_key, original_filename, uploaded_by, uploaded_at, change_note, schema_extracted_at, schema';
|
|
9
20
|
/**
|
|
10
21
|
* Definition metadata + version store backed by Postgres. Spec §6 versioning:
|
|
11
22
|
* `definitions` carries the parent record and the `live`/`draft` channel
|
|
@@ -221,7 +232,7 @@ export class SupabaseDefinitionStore {
|
|
|
221
232
|
const { data, error } = await this.clients
|
|
222
233
|
.forRequest(ctx)
|
|
223
234
|
.from('definition_versions')
|
|
224
|
-
.select(
|
|
235
|
+
.select(DEFINITION_VERSION_COLUMNS_WITH_SCHEMA)
|
|
225
236
|
.eq('id', versionId)
|
|
226
237
|
.maybeSingle();
|
|
227
238
|
if (error)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDefinitionStore.js","sourceRoot":"","sources":["../../src/data/SupabaseDefinitionStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SupabaseDefinitionStore.js","sourceRoot":"","sources":["../../src/data/SupabaseDefinitionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DomainEvent, type IEventSink, type ILogger } from '@selvajs/platform';
|
|
2
2
|
import type { ClientBundle } from './client.js';
|
|
3
3
|
/**
|
|
4
4
|
* Persists every domain event to `public.audit_events`. Writes use the
|
|
@@ -11,7 +11,10 @@ import type { ClientBundle } from './client.js';
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class SupabaseEventSink implements IEventSink {
|
|
13
13
|
private readonly clients;
|
|
14
|
-
|
|
14
|
+
private readonly logger;
|
|
15
|
+
constructor(clients: ClientBundle, opts?: {
|
|
16
|
+
logger?: ILogger;
|
|
17
|
+
});
|
|
15
18
|
emit(event: DomainEvent): Promise<void>;
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=SupabaseEventSink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseEventSink.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseEventSink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SupabaseEventSink.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseEventSink.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAGf,OAAO,EAAE,YAAY,EACtC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;IAK1B,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA4B7C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AUDIT_EVENT_VERSION, NoopLogger } from '@selvajs/platform';
|
|
1
2
|
/**
|
|
2
3
|
* Persists every domain event to `public.audit_events`. Writes use the
|
|
3
4
|
* service-role client so RLS does not gate the audit trail — the sink runs
|
|
@@ -9,22 +10,38 @@
|
|
|
9
10
|
*/
|
|
10
11
|
export class SupabaseEventSink {
|
|
11
12
|
clients;
|
|
12
|
-
|
|
13
|
+
logger;
|
|
14
|
+
constructor(clients, opts = {}) {
|
|
13
15
|
this.clients = clients;
|
|
16
|
+
this.logger = opts.logger ?? new NoopLogger();
|
|
14
17
|
}
|
|
15
18
|
async emit(event) {
|
|
16
19
|
try {
|
|
17
20
|
const { error } = await this.clients.serviceClient.from('audit_events').insert({
|
|
18
21
|
type: event.type,
|
|
19
22
|
actor_id: event.actorId,
|
|
23
|
+
event_version: AUDIT_EVENT_VERSION,
|
|
20
24
|
data: event
|
|
21
25
|
});
|
|
22
26
|
if (error) {
|
|
23
|
-
|
|
27
|
+
// Only the event's identifiers are logged, never the whole event: an
|
|
28
|
+
// `invite.created` payload embeds the invitee's email address, and log
|
|
29
|
+
// records outlive and out-travel the audit row itself.
|
|
30
|
+
this.logger.error('Audit event insert failed', {
|
|
31
|
+
component: 'SupabaseEventSink',
|
|
32
|
+
eventType: event.type,
|
|
33
|
+
actorId: event.actorId,
|
|
34
|
+
err: error.message
|
|
35
|
+
});
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
catch (err) {
|
|
27
|
-
|
|
39
|
+
this.logger.error('Unexpected error writing audit event', {
|
|
40
|
+
component: 'SupabaseEventSink',
|
|
41
|
+
eventType: event.type,
|
|
42
|
+
actorId: event.actorId,
|
|
43
|
+
err: err instanceof Error ? (err.stack ?? err.message) : String(err)
|
|
44
|
+
});
|
|
28
45
|
}
|
|
29
46
|
}
|
|
30
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseEventSink.js","sourceRoot":"","sources":["../../src/data/SupabaseEventSink.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SupabaseEventSink.js","sourceRoot":"","sources":["../../src/data/SupabaseEventSink.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,UAAU,EAIV,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAiB;IAIX;IAHD,MAAM,CAAU;IAEjC,YACkB,OAAqB,EACtC,OAA6B,EAAE;QADd,YAAO,GAAP,OAAO,CAAc;QAGtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAkB;QAC5B,IAAI,CAAC;YACJ,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;gBAC9E,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,OAAO;gBACvB,aAAa,EAAE,mBAAmB;gBAClC,IAAI,EAAE,KAAK;aACX,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACX,qEAAqE;gBACrE,uEAAuE;gBACvE,uDAAuD;gBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;oBAC9C,SAAS,EAAE,mBAAmB;oBAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,GAAG,EAAE,KAAK,CAAC,OAAO;iBAClB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACzD,SAAS,EAAE,mBAAmB;gBAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACpE,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD"}
|
|
@@ -1,17 +1,62 @@
|
|
|
1
1
|
import type { ISolveMetricSink, RequestContext, SolveMetric } from '@selvajs/platform';
|
|
2
|
+
import { type ILogger } from '@selvajs/platform';
|
|
2
3
|
import type { ClientBundle } from './client.js';
|
|
4
|
+
export interface SolveMetricSinkOptions {
|
|
5
|
+
/** Flush once this many rows are buffered. */
|
|
6
|
+
maxBatchSize?: number;
|
|
7
|
+
/** Flush a non-empty buffer after this many ms, even if under `maxBatchSize`. */
|
|
8
|
+
flushIntervalMs?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Hard cap on buffered rows. Past this, the oldest rows are dropped so a
|
|
11
|
+
* stalled or failing backend cannot grow the buffer without bound.
|
|
12
|
+
*/
|
|
13
|
+
maxBufferSize?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Structured logger for flush failures and buffer drops. Optional; defaults to
|
|
16
|
+
* `NoopLogger` so this library never writes to stdout unless the app wires one.
|
|
17
|
+
*/
|
|
18
|
+
logger?: ILogger;
|
|
19
|
+
}
|
|
3
20
|
/**
|
|
4
|
-
* Persists
|
|
21
|
+
* Persists solves' timings to `selva.solve_metrics`. Writes use the
|
|
5
22
|
* service-role client so RLS does not gate the telemetry — the sink runs as a
|
|
6
23
|
* system process attached to the compute route, not the requesting user.
|
|
7
24
|
*
|
|
25
|
+
* Rows are buffered and written in batches: slider scrubbing produces solves
|
|
26
|
+
* far faster than they are worth individual round-trips, and this Postgres also
|
|
27
|
+
* serves auth. A batch goes out when the buffer reaches `maxBatchSize` or when
|
|
28
|
+
* `flushIntervalMs` elapses with anything buffered, whichever comes first.
|
|
29
|
+
*
|
|
8
30
|
* Per the `ISolveMetricSink` contract, `record` MUST NOT throw. It sits on the
|
|
9
31
|
* hot path of every solve and the response has already been produced by the
|
|
10
|
-
* time we're here, so a failed
|
|
32
|
+
* time we're here, so it only buffers; a failed flush is logged and swallowed.
|
|
33
|
+
* Buffering means metrics are lost on an unclean shutdown — call `close()` to
|
|
34
|
+
* drain deliberately.
|
|
11
35
|
*/
|
|
12
36
|
export declare class SupabaseSolveMetricSink implements ISolveMetricSink {
|
|
13
37
|
private readonly clients;
|
|
14
|
-
|
|
15
|
-
|
|
38
|
+
private buffer;
|
|
39
|
+
private timer;
|
|
40
|
+
private inFlight;
|
|
41
|
+
private closed;
|
|
42
|
+
private readonly maxBatchSize;
|
|
43
|
+
private readonly flushIntervalMs;
|
|
44
|
+
private readonly maxBufferSize;
|
|
45
|
+
private readonly logger;
|
|
46
|
+
constructor(clients: ClientBundle, opts?: SolveMetricSinkOptions);
|
|
47
|
+
record(ctx: RequestContext, metric: SolveMetric): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Writes everything buffered and resolves once the write settles. Serialized
|
|
50
|
+
* against any in-flight flush so batches cannot interleave. Never throws.
|
|
51
|
+
*/
|
|
52
|
+
flush(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Stops the timer, drains the buffer, and rejects further records. Call on
|
|
55
|
+
* shutdown so the last partial batch is not lost.
|
|
56
|
+
*/
|
|
57
|
+
close(): Promise<void>;
|
|
58
|
+
private scheduleFlush;
|
|
59
|
+
private clearTimer;
|
|
60
|
+
private write;
|
|
16
61
|
}
|
|
17
62
|
//# sourceMappingURL=SupabaseSolveMetricSink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseSolveMetricSink.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseSolveMetricSink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseSolveMetricSink.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseSolveMetricSink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgBhD,MAAM,WAAW,sBAAsB;IACtC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAY9D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAGf,OAAO,EAAE,YAAY,EACtC,IAAI,GAAE,sBAA2B;IAQ5B,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCrE;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;YAMJ,KAAK;CAkBnB"}
|
|
@@ -1,38 +1,128 @@
|
|
|
1
|
+
import { NoopLogger } from '@selvajs/platform';
|
|
2
|
+
const DEFAULT_MAX_BATCH_SIZE = 100;
|
|
3
|
+
const DEFAULT_FLUSH_INTERVAL_MS = 2000;
|
|
4
|
+
const DEFAULT_MAX_BUFFER_SIZE = 10_000;
|
|
1
5
|
/**
|
|
2
|
-
* Persists
|
|
6
|
+
* Persists solves' timings to `selva.solve_metrics`. Writes use the
|
|
3
7
|
* service-role client so RLS does not gate the telemetry — the sink runs as a
|
|
4
8
|
* system process attached to the compute route, not the requesting user.
|
|
5
9
|
*
|
|
10
|
+
* Rows are buffered and written in batches: slider scrubbing produces solves
|
|
11
|
+
* far faster than they are worth individual round-trips, and this Postgres also
|
|
12
|
+
* serves auth. A batch goes out when the buffer reaches `maxBatchSize` or when
|
|
13
|
+
* `flushIntervalMs` elapses with anything buffered, whichever comes first.
|
|
14
|
+
*
|
|
6
15
|
* Per the `ISolveMetricSink` contract, `record` MUST NOT throw. It sits on the
|
|
7
16
|
* hot path of every solve and the response has already been produced by the
|
|
8
|
-
* time we're here, so a failed
|
|
17
|
+
* time we're here, so it only buffers; a failed flush is logged and swallowed.
|
|
18
|
+
* Buffering means metrics are lost on an unclean shutdown — call `close()` to
|
|
19
|
+
* drain deliberately.
|
|
9
20
|
*/
|
|
10
21
|
export class SupabaseSolveMetricSink {
|
|
11
22
|
clients;
|
|
12
|
-
|
|
23
|
+
buffer = [];
|
|
24
|
+
timer = null;
|
|
25
|
+
inFlight = Promise.resolve();
|
|
26
|
+
closed = false;
|
|
27
|
+
maxBatchSize;
|
|
28
|
+
flushIntervalMs;
|
|
29
|
+
maxBufferSize;
|
|
30
|
+
logger;
|
|
31
|
+
constructor(clients, opts = {}) {
|
|
13
32
|
this.clients = clients;
|
|
33
|
+
this.maxBatchSize = opts.maxBatchSize ?? DEFAULT_MAX_BATCH_SIZE;
|
|
34
|
+
this.flushIntervalMs = opts.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS;
|
|
35
|
+
this.maxBufferSize = opts.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE;
|
|
36
|
+
this.logger = opts.logger ?? new NoopLogger();
|
|
14
37
|
}
|
|
15
|
-
async record(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
async record(ctx, metric) {
|
|
39
|
+
if (this.closed)
|
|
40
|
+
return;
|
|
41
|
+
this.buffer.push({
|
|
42
|
+
actor_id: ctx.userId || 'system',
|
|
43
|
+
definition_url: metric.definitionUrl,
|
|
44
|
+
definition_id: metric.definitionId,
|
|
45
|
+
version_id: metric.versionId,
|
|
46
|
+
channel: metric.channel,
|
|
47
|
+
org_id: metric.orgId,
|
|
48
|
+
duration_ms: metric.durationMs,
|
|
49
|
+
ok: metric.ok,
|
|
50
|
+
failure_kind: metric.failureKind,
|
|
51
|
+
error_count: metric.errorCount,
|
|
52
|
+
warning_count: metric.warningCount
|
|
53
|
+
});
|
|
54
|
+
if (this.buffer.length > this.maxBufferSize) {
|
|
55
|
+
const dropped = this.buffer.length - this.maxBufferSize;
|
|
56
|
+
this.buffer.splice(0, dropped);
|
|
57
|
+
this.logger.error('Metric buffer full, dropped oldest metrics', {
|
|
58
|
+
component: 'SupabaseSolveMetricSink',
|
|
59
|
+
dropped
|
|
29
60
|
});
|
|
61
|
+
}
|
|
62
|
+
if (this.buffer.length >= this.maxBatchSize) {
|
|
63
|
+
void this.flush();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.scheduleFlush();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Writes everything buffered and resolves once the write settles. Serialized
|
|
70
|
+
* against any in-flight flush so batches cannot interleave. Never throws.
|
|
71
|
+
*/
|
|
72
|
+
async flush() {
|
|
73
|
+
// Claim the buffered rows synchronously, before yielding — otherwise a
|
|
74
|
+
// record() landing between here and the write joins a batch already
|
|
75
|
+
// counted as claimed, and the row is written twice or not at all.
|
|
76
|
+
const batch = this.buffer;
|
|
77
|
+
this.buffer = [];
|
|
78
|
+
this.clearTimer();
|
|
79
|
+
if (batch.length === 0)
|
|
80
|
+
return this.inFlight;
|
|
81
|
+
this.inFlight = this.inFlight.then(() => this.write(batch));
|
|
82
|
+
return this.inFlight;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Stops the timer, drains the buffer, and rejects further records. Call on
|
|
86
|
+
* shutdown so the last partial batch is not lost.
|
|
87
|
+
*/
|
|
88
|
+
async close() {
|
|
89
|
+
this.closed = true;
|
|
90
|
+
this.clearTimer();
|
|
91
|
+
await this.flush();
|
|
92
|
+
}
|
|
93
|
+
scheduleFlush() {
|
|
94
|
+
if (this.timer)
|
|
95
|
+
return;
|
|
96
|
+
this.timer = setTimeout(() => {
|
|
97
|
+
this.timer = null;
|
|
98
|
+
void this.flush();
|
|
99
|
+
}, this.flushIntervalMs);
|
|
100
|
+
// Never hold the process open for telemetry.
|
|
101
|
+
this.timer.unref?.();
|
|
102
|
+
}
|
|
103
|
+
clearTimer() {
|
|
104
|
+
if (!this.timer)
|
|
105
|
+
return;
|
|
106
|
+
clearTimeout(this.timer);
|
|
107
|
+
this.timer = null;
|
|
108
|
+
}
|
|
109
|
+
async write(batch) {
|
|
110
|
+
try {
|
|
111
|
+
const { error } = await this.clients.serviceClient.from('solve_metrics').insert(batch);
|
|
30
112
|
if (error) {
|
|
31
|
-
|
|
113
|
+
this.logger.error('Metric batch insert failed', {
|
|
114
|
+
component: 'SupabaseSolveMetricSink',
|
|
115
|
+
count: batch.length,
|
|
116
|
+
err: error.message
|
|
117
|
+
});
|
|
32
118
|
}
|
|
33
119
|
}
|
|
34
120
|
catch (err) {
|
|
35
|
-
|
|
121
|
+
this.logger.error('Unexpected error writing metric batch', {
|
|
122
|
+
component: 'SupabaseSolveMetricSink',
|
|
123
|
+
count: batch.length,
|
|
124
|
+
err: err instanceof Error ? (err.stack ?? err.message) : String(err)
|
|
125
|
+
});
|
|
36
126
|
}
|
|
37
127
|
}
|
|
38
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseSolveMetricSink.js","sourceRoot":"","sources":["../../src/data/SupabaseSolveMetricSink.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SupabaseSolveMetricSink.js","sourceRoot":"","sources":["../../src/data/SupabaseSolveMetricSink.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
* MUST be bumped whenever a migration is added — `migration-head.test.ts`
|
|
11
11
|
* asserts this constant matches the migrations directory, so CI catches drift.
|
|
12
12
|
*/
|
|
13
|
-
export declare const EXPECTED_MIGRATION_HEAD = "
|
|
13
|
+
export declare const EXPECTED_MIGRATION_HEAD = "20260717120000";
|
|
14
14
|
//# sourceMappingURL=migrationHead.d.ts.map
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
* MUST be bumped whenever a migration is added — `migration-head.test.ts`
|
|
11
11
|
* asserts this constant matches the migrations directory, so CI catches drift.
|
|
12
12
|
*/
|
|
13
|
-
export const EXPECTED_MIGRATION_HEAD = '
|
|
13
|
+
export const EXPECTED_MIGRATION_HEAD = '20260717120000';
|
|
14
14
|
//# sourceMappingURL=migrationHead.js.map
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@selvajs/supabase-provider",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0-beta.2",
|
|
4
4
|
"description": "Supabase (Auth + Postgres + Storage) implementations of @selvajs/platform interfaces",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"author": "VektorNode",
|
|
7
|
+
"homepage": "https://github.com/VektorNode/selva#readme",
|
|
8
|
+
"bugs": "https://github.com/VektorNode/selva/issues",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"selva",
|
|
11
|
+
"provider",
|
|
12
|
+
"supabase",
|
|
13
|
+
"auth",
|
|
14
|
+
"postgres"
|
|
15
|
+
],
|
|
6
16
|
"publishConfig": {
|
|
7
17
|
"access": "public"
|
|
8
18
|
},
|
|
@@ -56,7 +66,7 @@
|
|
|
56
66
|
"dependencies": {
|
|
57
67
|
"@supabase/supabase-js": "^2.104.1",
|
|
58
68
|
"sharp": "^0.34.5",
|
|
59
|
-
"@selvajs/platform": "^0.15.0-beta.
|
|
69
|
+
"@selvajs/platform": "^0.15.0-beta.2"
|
|
60
70
|
},
|
|
61
71
|
"devDependencies": {
|
|
62
72
|
"@types/node": "^22.20.1",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
-- ============================================================================
|
|
2
|
+
-- Definition-status enum cleanup (audit D2) + audit-event versioning (audit D3)
|
|
3
|
+
-- ============================================================================
|
|
4
|
+
|
|
5
|
+
-- D2. The definition-status CHECK admitted five values, but only four are real:
|
|
6
|
+
-- pending — metadata-first create window (DefinitionService.create writes it,
|
|
7
|
+
-- a partial reclaim index tracks it). REAL — kept.
|
|
8
|
+
-- draft — work in progress. REAL — kept.
|
|
9
|
+
-- published — live. REAL — kept.
|
|
10
|
+
-- archived — retired but preserved. REAL — kept.
|
|
11
|
+
-- review — never written or read anywhere in the codebase. DEAD — dropped.
|
|
12
|
+
-- Dropping `review` while the table holds no such rows is a zero-row change; do
|
|
13
|
+
-- it now, while it is a one-line CHECK swap rather than a data migration later.
|
|
14
|
+
-- (Postgres has no "alter check" — drop the old constraint and add the new one.
|
|
15
|
+
-- The constraint name is the Postgres-generated default `definitions_status_check`.)
|
|
16
|
+
|
|
17
|
+
alter table selva.definitions
|
|
18
|
+
drop constraint if exists definitions_status_check;
|
|
19
|
+
|
|
20
|
+
alter table selva.definitions
|
|
21
|
+
add constraint definitions_status_check
|
|
22
|
+
check (status in ('pending', 'draft', 'published', 'archived'));
|
|
23
|
+
|
|
24
|
+
-- D3. `audit_events` is append-only forever: every row written before a version
|
|
25
|
+
-- marker exists is a row whose payload shape must be inferred later. Add an
|
|
26
|
+
-- explicit `event_version` column now so the `data` envelope carries its schema
|
|
27
|
+
-- version out of band. Existing rows are the v1 shape by definition, so default
|
|
28
|
+
-- + backfill to 1; NOT NULL once populated.
|
|
29
|
+
|
|
30
|
+
alter table selva.audit_events
|
|
31
|
+
add column if not exists event_version integer not null default 1;
|
|
32
|
+
|
|
33
|
+
comment on column selva.audit_events.event_version is
|
|
34
|
+
'Schema version of the `data` payload (the DomainEvent envelope). Bump when '
|
|
35
|
+
'the persisted shape changes so readers can dispatch on version instead of '
|
|
36
|
+
'inferring it. v1 = the initial DomainEvent union.';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
-- ============================================================================
|
|
2
|
+
-- User-erasure helper: redact an email out of invite.created audit payloads
|
|
3
|
+
-- (audit P1)
|
|
4
|
+
-- ============================================================================
|
|
5
|
+
--
|
|
6
|
+
-- `invite.created` domain events embed the invitee's email in the audit
|
|
7
|
+
-- payload (`data->>'email'`). Those rows are authored by the INVITER, so on the
|
|
8
|
+
-- invitee's erasure the row must survive (it records the inviter's action) but
|
|
9
|
+
-- the invitee's email must be scrubbed. This function redacts the `email` key
|
|
10
|
+
-- in place for every matching row, in one statement.
|
|
11
|
+
--
|
|
12
|
+
-- SECURITY DEFINER so `onUserDeleted` can call it through the service-role
|
|
13
|
+
-- client without granting the caller direct UPDATE on audit_events. Scoped to
|
|
14
|
+
-- `type = 'invite.created'` — the only event shape that carries an email.
|
|
15
|
+
|
|
16
|
+
create or replace function selva.redact_audit_event_email(p_email text)
|
|
17
|
+
returns integer
|
|
18
|
+
language plpgsql
|
|
19
|
+
security definer
|
|
20
|
+
set search_path = selva, pg_temp
|
|
21
|
+
as $$
|
|
22
|
+
declare
|
|
23
|
+
affected integer;
|
|
24
|
+
begin
|
|
25
|
+
update selva.audit_events
|
|
26
|
+
set data = jsonb_set(data, '{email}', '"[erased]"'::jsonb)
|
|
27
|
+
where type = 'invite.created'
|
|
28
|
+
and data->>'email' = p_email;
|
|
29
|
+
get diagnostics affected = row_count;
|
|
30
|
+
return affected;
|
|
31
|
+
end;
|
|
32
|
+
$$;
|
|
33
|
+
|
|
34
|
+
comment on function selva.redact_audit_event_email(text) is
|
|
35
|
+
'Redacts an invitee email out of invite.created audit payloads on user '
|
|
36
|
+
'erasure (audit P1). Returns the number of rows redacted.';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- ============================================================================
|
|
2
|
+
-- selva.compute_servers.has_api_key — key presence without reading the key (audit 4b)
|
|
3
|
+
-- ============================================================================
|
|
4
|
+
--
|
|
5
|
+
-- Every solve resolves one compute server, but the store's only read was
|
|
6
|
+
-- `getConfig`, which selected `api_key` for EVERY row and decrypted each one on
|
|
7
|
+
-- the way out — N decrypts of secrets the solve path throws away, to use one.
|
|
8
|
+
--
|
|
9
|
+
-- The keys could not simply be dropped from the projection because the admin and
|
|
10
|
+
-- org compute pages render a "key is set" state, which was derived as `!!apiKey`
|
|
11
|
+
-- and so needed the plaintext. This generated column answers that question from
|
|
12
|
+
-- the ciphertext's presence alone, so the default projection can omit `api_key`
|
|
13
|
+
-- entirely: no secret leaves the database to decide whether a badge renders.
|
|
14
|
+
--
|
|
15
|
+
-- STORED (not a view or an expression index) because it is read on the same
|
|
16
|
+
-- projection as every other column and costs a byte per row.
|
|
17
|
+
|
|
18
|
+
alter table selva.compute_servers
|
|
19
|
+
add column if not exists has_api_key boolean
|
|
20
|
+
generated always as (api_key is not null and api_key <> '') stored;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
main
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
v2.102.0
|