@selvajs/supabase-provider 0.14.2 → 0.14.4-beta.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/auth/SupabaseAuthProvider.d.ts +57 -0
- package/dist/auth/SupabaseAuthProvider.d.ts.map +1 -1
- package/dist/auth/SupabaseAuthProvider.js +116 -4
- package/dist/auth/SupabaseAuthProvider.js.map +1 -1
- package/dist/auth/__tests__/token-verification.test.d.ts +13 -0
- package/dist/auth/__tests__/token-verification.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-verification.test.js +135 -0
- package/dist/auth/__tests__/token-verification.test.js.map +1 -0
- package/dist/data/SupabaseComputeServerStore.d.ts +34 -2
- package/dist/data/SupabaseComputeServerStore.d.ts.map +1 -1
- package/dist/data/SupabaseComputeServerStore.js +146 -39
- package/dist/data/SupabaseComputeServerStore.js.map +1 -1
- package/dist/data/SupabaseDataProvider.d.ts +5 -2
- package/dist/data/SupabaseDataProvider.d.ts.map +1 -1
- package/dist/data/SupabaseDataProvider.js +24 -18
- package/dist/data/SupabaseDataProvider.js.map +1 -1
- package/dist/data/SupabaseDefinitionStore.d.ts +2 -1
- package/dist/data/SupabaseDefinitionStore.d.ts.map +1 -1
- package/dist/data/SupabaseDefinitionStore.js +68 -67
- package/dist/data/SupabaseDefinitionStore.js.map +1 -1
- package/dist/data/SupabaseInviteStore.d.ts.map +1 -1
- package/dist/data/SupabaseInviteStore.js +11 -22
- package/dist/data/SupabaseInviteStore.js.map +1 -1
- package/dist/data/SupabaseOrgStore.d.ts +1 -1
- package/dist/data/SupabaseOrgStore.d.ts.map +1 -1
- package/dist/data/SupabaseOrgStore.js +54 -86
- package/dist/data/SupabaseOrgStore.js.map +1 -1
- package/dist/data/SupabaseProjectStore.d.ts.map +1 -1
- package/dist/data/SupabaseProjectStore.js +51 -70
- package/dist/data/SupabaseProjectStore.js.map +1 -1
- package/dist/data/SupabaseShareLinkStore.d.ts.map +1 -1
- package/dist/data/SupabaseShareLinkStore.js +13 -27
- package/dist/data/SupabaseShareLinkStore.js.map +1 -1
- package/dist/data/__tests__/compute-server-conformance.test.js +6 -1
- package/dist/data/__tests__/compute-server-conformance.test.js.map +1 -1
- package/dist/data/__tests__/compute-server-encryption.test.d.ts +12 -0
- package/dist/data/__tests__/compute-server-encryption.test.d.ts.map +1 -0
- package/dist/data/__tests__/compute-server-encryption.test.js +143 -0
- package/dist/data/__tests__/compute-server-encryption.test.js.map +1 -0
- package/dist/data/__tests__/share-link-concurrency.test.d.ts +22 -0
- package/dist/data/__tests__/share-link-concurrency.test.d.ts.map +1 -0
- package/dist/data/__tests__/share-link-concurrency.test.js +115 -0
- package/dist/data/__tests__/share-link-concurrency.test.js.map +1 -0
- package/dist/data/client.d.ts +35 -3
- package/dist/data/client.d.ts.map +1 -1
- package/dist/data/client.js +67 -16
- package/dist/data/client.js.map +1 -1
- package/dist/data/errors.d.ts +2 -0
- package/dist/data/errors.d.ts.map +1 -0
- package/dist/data/errors.js +23 -0
- package/dist/data/errors.js.map +1 -0
- package/dist/data/index.d.ts +7 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +5 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/query.d.ts +20 -0
- package/dist/data/query.d.ts.map +1 -0
- package/dist/data/query.js +13 -0
- package/dist/data/query.js.map +1 -0
- package/dist/data/rowStamp.d.ts +38 -0
- package/dist/data/rowStamp.d.ts.map +1 -0
- package/dist/data/rowStamp.js +43 -0
- package/dist/data/rowStamp.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/SupabaseStorageProvider.d.ts +7 -5
- package/dist/storage/SupabaseStorageProvider.d.ts.map +1 -1
- package/dist/storage/SupabaseStorageProvider.js +14 -7
- package/dist/storage/SupabaseStorageProvider.js.map +1 -1
- package/package.json +2 -2
- package/src/auth/SupabaseAuthProvider.ts +140 -4
- package/src/auth/__tests__/token-verification.test.ts +158 -0
- package/src/data/SupabaseComputeServerStore.ts +163 -43
- package/src/data/SupabaseDataProvider.ts +35 -15
- package/src/data/SupabaseDefinitionStore.ts +73 -66
- package/src/data/SupabaseInviteStore.ts +13 -25
- package/src/data/SupabaseOrgStore.ts +57 -96
- package/src/data/SupabaseProjectStore.ts +55 -78
- package/src/data/SupabaseShareLinkStore.ts +15 -30
- package/src/data/__tests__/compute-server-conformance.test.ts +7 -1
- package/src/data/__tests__/compute-server-encryption.test.ts +173 -0
- package/src/data/__tests__/share-link-concurrency.test.ts +124 -0
- package/src/data/client.ts +95 -20
- package/src/data/errors.ts +45 -0
- package/src/data/index.ts +19 -2
- package/src/data/query.ts +22 -0
- package/src/data/rowStamp.ts +48 -0
- package/src/index.ts +20 -2
- package/src/storage/SupabaseStorageProvider.ts +12 -7
- package/supabase/config.toml +6 -6
- package/supabase/migrations/20260630120000_org_assets.sql +19 -0
- package/supabase/migrations/20260711120000_selva_definition_schema_version.sql +18 -0
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { isOrgServer, isPlatformServer } from '@selvajs/platform';
|
|
2
|
-
|
|
2
|
+
// Secret crypto functions come from the server-only subpath (they use
|
|
3
|
+
// `node:crypto`, kept out of the root barrel so client bundles don't pull it in).
|
|
4
|
+
import { decryptSecret, encryptSecret, isEncryptedSecret } from '@selvajs/platform/computeServer';
|
|
5
|
+
import { mapPostgrestError } from './errors.js';
|
|
6
|
+
/** Explicit column list for `compute_servers` — every field `rowToServer` consumes. */
|
|
7
|
+
const SERVER_COLUMNS = 'id, scope, owner_org_id, shared_with_all, label, server_url, api_key, timeout_ms, retry_count';
|
|
8
|
+
/** Columns from the share join table read in `getConfig`. */
|
|
9
|
+
const SHARE_COLUMNS = 'server_id, org_id';
|
|
10
|
+
/** Columns from the per-org default table read in `getConfig`. */
|
|
11
|
+
const ORG_DEFAULT_COLUMNS = 'org_id, default_server_id';
|
|
3
12
|
/**
|
|
4
13
|
* Compute-server config backed by three tables:
|
|
5
14
|
* - `compute_servers`: one row per server. `scope = 'platform' | 'org'`.
|
|
@@ -16,15 +25,25 @@ import { ProviderError } from '@selvajs/platform';
|
|
|
16
25
|
*/
|
|
17
26
|
export class SupabaseComputeServerStore {
|
|
18
27
|
clients;
|
|
19
|
-
|
|
28
|
+
secretKey;
|
|
29
|
+
/**
|
|
30
|
+
* `secretKey` (from `SELVA_AT_REST_KEY`) encrypts `api_key` before it is
|
|
31
|
+
* written to `compute_servers.api_key` and decrypts it on read, so the
|
|
32
|
+
* Rhino.Compute credential never sits in the DB as plaintext — matching the
|
|
33
|
+
* local provider's on-disk envelope. Optional only for legacy construction
|
|
34
|
+
* paths (tests that never touch apiKeys); a store built without a key throws
|
|
35
|
+
* if asked to write or read a secret. Wire it via `SupabaseDataProvider`.
|
|
36
|
+
*/
|
|
37
|
+
constructor(clients, secretKey) {
|
|
20
38
|
this.clients = clients;
|
|
39
|
+
this.secretKey = secretKey;
|
|
21
40
|
}
|
|
22
41
|
async getConfig(ctx) {
|
|
23
42
|
const client = this.clients.forRequest(ctx);
|
|
24
43
|
const [serversRes, sharesRes, orgDefRes, platDefRes] = await Promise.all([
|
|
25
|
-
client.from('compute_servers').select(
|
|
26
|
-
client.from('compute_server_shares').select(
|
|
27
|
-
client.from('compute_server_org_defaults').select(
|
|
44
|
+
client.from('compute_servers').select(SERVER_COLUMNS),
|
|
45
|
+
client.from('compute_server_shares').select(SHARE_COLUMNS),
|
|
46
|
+
client.from('compute_server_org_defaults').select(ORG_DEFAULT_COLUMNS),
|
|
28
47
|
client
|
|
29
48
|
.from('compute_server_platform_default')
|
|
30
49
|
.select('default_server_id')
|
|
@@ -32,13 +51,13 @@ export class SupabaseComputeServerStore {
|
|
|
32
51
|
.maybeSingle()
|
|
33
52
|
]);
|
|
34
53
|
if (serversRes.error)
|
|
35
|
-
throw
|
|
54
|
+
throw mapPostgrestError(serversRes.error);
|
|
36
55
|
if (sharesRes.error)
|
|
37
|
-
throw
|
|
56
|
+
throw mapPostgrestError(sharesRes.error);
|
|
38
57
|
if (orgDefRes.error)
|
|
39
|
-
throw
|
|
58
|
+
throw mapPostgrestError(orgDefRes.error);
|
|
40
59
|
if (platDefRes.error)
|
|
41
|
-
throw
|
|
60
|
+
throw mapPostgrestError(platDefRes.error);
|
|
42
61
|
// Build per-server `sharedWith` allowlists from the join table.
|
|
43
62
|
const sharedByServer = new Map();
|
|
44
63
|
for (const row of sharesRes.data ?? []) {
|
|
@@ -46,7 +65,7 @@ export class SupabaseComputeServerStore {
|
|
|
46
65
|
list.push(row.org_id);
|
|
47
66
|
sharedByServer.set(row.server_id, list);
|
|
48
67
|
}
|
|
49
|
-
const servers = (serversRes.data ?? []).map((row) => rowToServer(row, sharedByServer));
|
|
68
|
+
const servers = (serversRes.data ?? []).map((row) => rowToServer(this.decryptRowApiKey(row), sharedByServer));
|
|
50
69
|
const orgDefaults = {};
|
|
51
70
|
for (const row of orgDefRes.data ?? []) {
|
|
52
71
|
if (row.default_server_id)
|
|
@@ -64,13 +83,13 @@ export class SupabaseComputeServerStore {
|
|
|
64
83
|
// Replace-all of platform rows.
|
|
65
84
|
const { error: delErr } = await client.from('compute_servers').delete().eq('scope', 'platform');
|
|
66
85
|
if (delErr)
|
|
67
|
-
throw
|
|
86
|
+
throw mapPostgrestError(delErr);
|
|
68
87
|
if (platformOnly.length > 0) {
|
|
69
88
|
const { error: insErr } = await client
|
|
70
89
|
.from('compute_servers')
|
|
71
|
-
.insert(platformOnly.map(serverToRow));
|
|
90
|
+
.insert(platformOnly.map((s) => serverToRow(this.encryptServerApiKey(s))));
|
|
72
91
|
if (insErr)
|
|
73
|
-
throw
|
|
92
|
+
throw mapPostgrestError(insErr);
|
|
74
93
|
// Rebuild the share rows for any non-`all` platform servers.
|
|
75
94
|
const shareRows = platformOnly.flatMap((s) => s.sharedWith === 'all'
|
|
76
95
|
? []
|
|
@@ -78,7 +97,7 @@ export class SupabaseComputeServerStore {
|
|
|
78
97
|
if (shareRows.length > 0) {
|
|
79
98
|
const { error: shErr } = await client.from('compute_server_shares').insert(shareRows);
|
|
80
99
|
if (shErr)
|
|
81
|
-
throw
|
|
100
|
+
throw mapPostgrestError(shErr);
|
|
82
101
|
}
|
|
83
102
|
}
|
|
84
103
|
const { error: defErr } = await client
|
|
@@ -86,7 +105,7 @@ export class SupabaseComputeServerStore {
|
|
|
86
105
|
.update({ default_server_id: defaultServerId ?? null })
|
|
87
106
|
.eq('singleton', true);
|
|
88
107
|
if (defErr)
|
|
89
|
-
throw
|
|
108
|
+
throw mapPostgrestError(defErr);
|
|
90
109
|
}
|
|
91
110
|
async saveOrgServers(ctx, orgId, servers, defaultServerId) {
|
|
92
111
|
const client = this.clients.forRequest(ctx);
|
|
@@ -97,13 +116,13 @@ export class SupabaseComputeServerStore {
|
|
|
97
116
|
.eq('scope', 'org')
|
|
98
117
|
.eq('owner_org_id', orgId);
|
|
99
118
|
if (delErr)
|
|
100
|
-
throw
|
|
119
|
+
throw mapPostgrestError(delErr);
|
|
101
120
|
if (orgOnly.length > 0) {
|
|
102
121
|
const { error: insErr } = await client
|
|
103
122
|
.from('compute_servers')
|
|
104
|
-
.insert(orgOnly.map(serverToRow));
|
|
123
|
+
.insert(orgOnly.map((s) => serverToRow(this.encryptServerApiKey(s))));
|
|
105
124
|
if (insErr)
|
|
106
|
-
throw
|
|
125
|
+
throw mapPostgrestError(insErr);
|
|
107
126
|
}
|
|
108
127
|
if (defaultServerId === null) {
|
|
109
128
|
const { error } = await client
|
|
@@ -111,14 +130,14 @@ export class SupabaseComputeServerStore {
|
|
|
111
130
|
.delete()
|
|
112
131
|
.eq('org_id', orgId);
|
|
113
132
|
if (error)
|
|
114
|
-
throw
|
|
133
|
+
throw mapPostgrestError(error);
|
|
115
134
|
}
|
|
116
135
|
else if (typeof defaultServerId === 'string') {
|
|
117
136
|
const { error } = await client
|
|
118
137
|
.from('compute_server_org_defaults')
|
|
119
138
|
.upsert({ org_id: orgId, default_server_id: defaultServerId });
|
|
120
139
|
if (error)
|
|
121
|
-
throw
|
|
140
|
+
throw mapPostgrestError(error);
|
|
122
141
|
}
|
|
123
142
|
}
|
|
124
143
|
async setOrgDefault(ctx, orgId, serverId) {
|
|
@@ -129,14 +148,14 @@ export class SupabaseComputeServerStore {
|
|
|
129
148
|
.delete()
|
|
130
149
|
.eq('org_id', orgId);
|
|
131
150
|
if (error)
|
|
132
|
-
throw
|
|
151
|
+
throw mapPostgrestError(error);
|
|
133
152
|
return;
|
|
134
153
|
}
|
|
135
154
|
const { error } = await client
|
|
136
155
|
.from('compute_server_org_defaults')
|
|
137
156
|
.upsert({ org_id: orgId, default_server_id: serverId });
|
|
138
157
|
if (error)
|
|
139
|
-
throw
|
|
158
|
+
throw mapPostgrestError(error);
|
|
140
159
|
}
|
|
141
160
|
async deleteByOrg(ctx, orgId) {
|
|
142
161
|
const client = this.clients.forRequest(ctx);
|
|
@@ -147,7 +166,7 @@ export class SupabaseComputeServerStore {
|
|
|
147
166
|
.delete()
|
|
148
167
|
.eq('org_id', orgId);
|
|
149
168
|
if (defErr)
|
|
150
|
-
throw
|
|
169
|
+
throw mapPostgrestError(defErr);
|
|
151
170
|
// Org-private servers owned by this org.
|
|
152
171
|
const { error: srvErr } = await client
|
|
153
172
|
.from('compute_servers')
|
|
@@ -155,14 +174,116 @@ export class SupabaseComputeServerStore {
|
|
|
155
174
|
.eq('scope', 'org')
|
|
156
175
|
.eq('owner_org_id', orgId);
|
|
157
176
|
if (srvErr)
|
|
158
|
-
throw
|
|
177
|
+
throw mapPostgrestError(srvErr);
|
|
159
178
|
// Strip this org from any platform server share allowlist.
|
|
160
179
|
const { error: shErr } = await client
|
|
161
180
|
.from('compute_server_shares')
|
|
162
181
|
.delete()
|
|
163
182
|
.eq('org_id', orgId);
|
|
164
183
|
if (shErr)
|
|
165
|
-
throw
|
|
184
|
+
throw mapPostgrestError(shErr);
|
|
185
|
+
}
|
|
186
|
+
// ==========================================================================
|
|
187
|
+
// At-rest secret handling
|
|
188
|
+
// ==========================================================================
|
|
189
|
+
/**
|
|
190
|
+
* Encrypt a server's `apiKey` before it is written to the DB. Idempotent —
|
|
191
|
+
* an already-enveloped value is passed through, so a round-trip (read →
|
|
192
|
+
* save) never double-encrypts. Throws if the store was built without a key
|
|
193
|
+
* but a real secret needs writing, so we never silently persist plaintext.
|
|
194
|
+
*/
|
|
195
|
+
encryptServerApiKey(s) {
|
|
196
|
+
if (!s.apiKey)
|
|
197
|
+
return s;
|
|
198
|
+
if (isEncryptedSecret(s.apiKey))
|
|
199
|
+
return s;
|
|
200
|
+
if (!this.secretKey) {
|
|
201
|
+
throw new Error('Cannot store a compute-server apiKey: SELVA_AT_REST_KEY is not configured. ' +
|
|
202
|
+
'Set it so secrets are encrypted at rest.');
|
|
203
|
+
}
|
|
204
|
+
return { ...s, apiKey: encryptSecret(s.apiKey, this.secretKey) };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Decrypt a row's `api_key` on read. Tolerant, mirroring the local provider:
|
|
208
|
+
* a row whose ciphertext can't be authenticated under the current key is
|
|
209
|
+
* returned with `api_key: null` and a warning logged, so the page keeps
|
|
210
|
+
* rendering (solves against that server fail later at Rhino.Compute). A
|
|
211
|
+
* plaintext value that predates encryption is passed through unchanged and
|
|
212
|
+
* surfaced by `verifySecrets()` — never silently dropped.
|
|
213
|
+
*/
|
|
214
|
+
decryptRowApiKey(row) {
|
|
215
|
+
if (!row.api_key)
|
|
216
|
+
return row;
|
|
217
|
+
if (!isEncryptedSecret(row.api_key)) {
|
|
218
|
+
// Legacy/hand-inserted plaintext. Pass through so an existing key
|
|
219
|
+
// keeps working; verifySecrets() flags it for re-save via /admin/compute.
|
|
220
|
+
console.warn(`[selva] compute_servers row "${row.label}" (${row.id}) has a plaintext api_key. ` +
|
|
221
|
+
'Re-save it via /admin/compute so it is stored encrypted.');
|
|
222
|
+
return row;
|
|
223
|
+
}
|
|
224
|
+
if (!this.secretKey) {
|
|
225
|
+
console.warn(`[selva] Cannot decrypt api_key for compute server "${row.label}" (${row.id}): ` +
|
|
226
|
+
'SELVA_AT_REST_KEY is not configured. Returning without a key; solves will fail.');
|
|
227
|
+
return { ...row, api_key: null };
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
return { ...row, api_key: decryptSecret(row.api_key, this.secretKey) };
|
|
231
|
+
}
|
|
232
|
+
catch (cause) {
|
|
233
|
+
console.warn(`[selva] Could not decrypt api_key for compute server "${row.label}" (${row.id}). ` +
|
|
234
|
+
'The stored ciphertext does not match the current SELVA_AT_REST_KEY. ' +
|
|
235
|
+
'This server will be returned without an apiKey; solves against it will fail. ' +
|
|
236
|
+
'Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY.', cause);
|
|
237
|
+
return { ...row, api_key: null };
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Boot-time integrity check over every `compute_servers` row. Uses the
|
|
242
|
+
* service client (no request context at boot) to read raw ciphertext, then
|
|
243
|
+
* attempts to decrypt each `api_key`. Does NOT throw — returns a structured
|
|
244
|
+
* report for boot health to drive `/api/health`.
|
|
245
|
+
*/
|
|
246
|
+
async verifySecrets() {
|
|
247
|
+
const { data, error } = await this.clients.serviceClient
|
|
248
|
+
.from('compute_servers')
|
|
249
|
+
.select('id, label, api_key');
|
|
250
|
+
if (error)
|
|
251
|
+
throw mapPostgrestError(error);
|
|
252
|
+
const failures = [];
|
|
253
|
+
let plaintextFound = false;
|
|
254
|
+
for (const row of data ?? []) {
|
|
255
|
+
const apiKey = row.api_key;
|
|
256
|
+
const id = row.id;
|
|
257
|
+
const label = row.label;
|
|
258
|
+
if (!apiKey)
|
|
259
|
+
continue;
|
|
260
|
+
if (!isEncryptedSecret(apiKey)) {
|
|
261
|
+
plaintextFound = true;
|
|
262
|
+
failures.push({ serverId: id, serverLabel: label, reason: 'plaintext_on_disk' });
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
if (!this.secretKey) {
|
|
266
|
+
failures.push({
|
|
267
|
+
serverId: id,
|
|
268
|
+
serverLabel: label,
|
|
269
|
+
reason: 'key_mismatch',
|
|
270
|
+
cause: 'SELVA_AT_REST_KEY is not configured'
|
|
271
|
+
});
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
decryptSecret(apiKey, this.secretKey);
|
|
276
|
+
}
|
|
277
|
+
catch (cause) {
|
|
278
|
+
failures.push({
|
|
279
|
+
serverId: id,
|
|
280
|
+
serverLabel: label,
|
|
281
|
+
reason: 'key_mismatch',
|
|
282
|
+
cause: cause instanceof Error ? cause.message : String(cause)
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return { ok: failures.length === 0, failures, plaintextFound };
|
|
166
287
|
}
|
|
167
288
|
}
|
|
168
289
|
function rowToServer(row, sharedByServer) {
|
|
@@ -210,18 +331,4 @@ function serverToRow(s) {
|
|
|
210
331
|
shared_with_all: false
|
|
211
332
|
};
|
|
212
333
|
}
|
|
213
|
-
function mapError(e) {
|
|
214
|
-
const pg = e;
|
|
215
|
-
if (pg?.code === '23505')
|
|
216
|
-
return new ProviderError(pg.message ?? 'Duplicate record', 409);
|
|
217
|
-
if (pg?.code === '23503')
|
|
218
|
-
return new ProviderError(pg.message ?? 'Foreign key violation', 409);
|
|
219
|
-
if (e instanceof Error)
|
|
220
|
-
return e;
|
|
221
|
-
if (e && typeof e === 'object') {
|
|
222
|
-
const obj = e;
|
|
223
|
-
return new Error(obj.code ? `[${obj.code}] ${obj.message ?? ''}` : (obj.message ?? String(e)));
|
|
224
|
-
}
|
|
225
|
-
return new Error(String(e));
|
|
226
|
-
}
|
|
227
334
|
//# sourceMappingURL=SupabaseComputeServerStore.js.map
|
|
@@ -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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"}
|
|
@@ -35,12 +35,15 @@ export declare class SupabaseDataProvider implements IDataProvider {
|
|
|
35
35
|
readonly solveMetrics: SupabaseSolveMetricSink;
|
|
36
36
|
private constructor();
|
|
37
37
|
static fromEnv(env: Record<string, string | undefined>, events?: IEventSink): SupabaseDataProvider;
|
|
38
|
-
static create(opts: BuildClientOptions, events?: IEventSink): SupabaseDataProvider;
|
|
38
|
+
static create(opts: BuildClientOptions, events?: IEventSink, secretKey?: Buffer): SupabaseDataProvider;
|
|
39
39
|
/**
|
|
40
40
|
* Build from a pre-existing `ClientBundle`. Useful for tests or advanced
|
|
41
41
|
* cases that need to inject a custom event sink or share a bundle externally.
|
|
42
|
+
* `secretKey` is optional here — omit it only when the caller never touches
|
|
43
|
+
* compute-server apiKeys (writes without a key throw rather than persist
|
|
44
|
+
* plaintext).
|
|
42
45
|
*/
|
|
43
|
-
static fromBundle(bundle: ClientBundle, events?: IEventSink): SupabaseDataProvider;
|
|
46
|
+
static fromBundle(bundle: ClientBundle, events?: IEventSink, secretKey?: Buffer): SupabaseDataProvider;
|
|
44
47
|
/**
|
|
45
48
|
* Expose the underlying bundle so other providers in the same package
|
|
46
49
|
* (storage, user profile, auth) can share one set of clients per process.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAG/F,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;IAmBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBzB,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;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAE/C,OAAO;IAkBP,MAAM,CAAC,OAAO,CACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,MAAM,CAAC,EAAE,UAAU,GACjB,oBAAoB;IAkBvB,MAAM,CAAC,MAAM,CACZ,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,MAAM,GAChB,oBAAoB;IAKvB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,MAAM,GAChB,oBAAoB;IAIvB;;;OAGG;IACH,eAAe,IAAI,YAAY;IAI/B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProviderError } from '@selvajs/platform';
|
|
2
|
-
import {
|
|
2
|
+
import { decodeSecretKey } from '@selvajs/platform/computeServer';
|
|
3
|
+
import { buildClientBundle, clientBundleFromEnv } from './client.js';
|
|
3
4
|
import { SupabaseEventSink } from './SupabaseEventSink.js';
|
|
4
5
|
import { SupabaseSolveMetricSink } from './SupabaseSolveMetricSink.js';
|
|
5
6
|
import { SupabaseAuditQuery } from './SupabaseAuditQuery.js';
|
|
@@ -57,14 +58,14 @@ export class SupabaseDataProvider {
|
|
|
57
58
|
* constructing a second Supabase client.
|
|
58
59
|
*/
|
|
59
60
|
solveMetrics;
|
|
60
|
-
constructor(clients, events) {
|
|
61
|
+
constructor(clients, events, secretKey) {
|
|
61
62
|
this.clients = clients;
|
|
62
63
|
this.solveMetrics = new SupabaseSolveMetricSink(clients);
|
|
63
64
|
this.orgs = new SupabaseOrgStore(clients, events);
|
|
64
65
|
this.projects = new SupabaseProjectStore(clients, events);
|
|
65
66
|
this.definitions = new SupabaseDefinitionStore(clients, events);
|
|
66
67
|
this.invites = new SupabaseInviteStore(clients, events);
|
|
67
|
-
this.computeServer = new SupabaseComputeServerStore(clients);
|
|
68
|
+
this.computeServer = new SupabaseComputeServerStore(clients, secretKey);
|
|
68
69
|
this.shareLinks = new SupabaseShareLinkStore(clients, events);
|
|
69
70
|
this.userProfile = new SupabaseUserProfileProvider(clients);
|
|
70
71
|
this.permissions = new SupabasePlatformPermissionStore(clients);
|
|
@@ -72,28 +73,33 @@ export class SupabaseDataProvider {
|
|
|
72
73
|
this.auditQuery = new SupabaseAuditQuery(clients);
|
|
73
74
|
}
|
|
74
75
|
static fromEnv(env, events) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
// Bundle-only env parse (URL + anon + service-role) is shared with
|
|
77
|
+
// `clientBundleFromEnv`; the full data provider additionally requires the
|
|
78
|
+
// at-rest key below.
|
|
79
|
+
const bundle = clientBundleFromEnv(env);
|
|
80
|
+
// Required so compute-server apiKeys are encrypted at rest in the DB —
|
|
81
|
+
// same guarantee (and same key) as the local provider's on-disk envelope.
|
|
82
|
+
if (!env.SELVA_AT_REST_KEY) {
|
|
83
|
+
throw new Error('Missing required env var: SELVA_AT_REST_KEY (32-byte hex or base64). ' +
|
|
84
|
+
'Required to encrypt compute-server API keys at rest. ' +
|
|
85
|
+
"Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"");
|
|
86
|
+
}
|
|
87
|
+
const secretKey = decodeSecretKey(env.SELVA_AT_REST_KEY);
|
|
88
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
86
89
|
}
|
|
87
|
-
static create(opts, events) {
|
|
90
|
+
static create(opts, events, secretKey) {
|
|
88
91
|
const bundle = buildClientBundle(opts);
|
|
89
|
-
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));
|
|
92
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
90
93
|
}
|
|
91
94
|
/**
|
|
92
95
|
* Build from a pre-existing `ClientBundle`. Useful for tests or advanced
|
|
93
96
|
* cases that need to inject a custom event sink or share a bundle externally.
|
|
97
|
+
* `secretKey` is optional here — omit it only when the caller never touches
|
|
98
|
+
* compute-server apiKeys (writes without a key throw rather than persist
|
|
99
|
+
* plaintext).
|
|
94
100
|
*/
|
|
95
|
-
static fromBundle(bundle, events) {
|
|
96
|
-
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));
|
|
101
|
+
static fromBundle(bundle, events, secretKey) {
|
|
102
|
+
return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);
|
|
97
103
|
}
|
|
98
104
|
/**
|
|
99
105
|
* Expose the underlying bundle so other providers in the same package
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseDataProvider.js","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseDataProvider.js","sourceRoot":"","sources":["../../src/data/SupabaseDataProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import type { ClientBundle } from './client.js';
|
|
|
7
7
|
*
|
|
8
8
|
* Deletion protection (§6) is enforced by FK constraints — `live_version_id`
|
|
9
9
|
* and `draft_version_id` are ON DELETE RESTRICT. Trying to delete a
|
|
10
|
-
* referenced version raises 23503 which `
|
|
10
|
+
* referenced version raises 23503 which `mapPostgrestError` turns into a 409.
|
|
11
11
|
*
|
|
12
12
|
* `incrementSolveCount` uses a SQL function for atomic UPDATE — no
|
|
13
13
|
* read-modify-write race like the local provider has.
|
|
@@ -26,6 +26,7 @@ export declare class SupabaseDefinitionStore implements IDefinitionStore {
|
|
|
26
26
|
create(ctx: RequestContext, record: DefinitionRecord): Promise<void>;
|
|
27
27
|
update(ctx: RequestContext, guid: string, patch: DefinitionRecordPatch): Promise<void>;
|
|
28
28
|
delete(ctx: RequestContext, guid: string): Promise<void>;
|
|
29
|
+
deleteByProject(ctx: RequestContext, projectId: string): Promise<void>;
|
|
29
30
|
incrementSolveCount(ctx: RequestContext, guid: string): Promise<void>;
|
|
30
31
|
createVersion(ctx: RequestContext, version: DefinitionVersion): Promise<void>;
|
|
31
32
|
listVersions(ctx: RequestContext, definitionId: string, opts?: ListOptions): Promise<Page<DefinitionVersion>>;
|
|
@@ -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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"}
|