@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,11 @@
|
|
|
1
|
-
import { ProviderError,
|
|
1
|
+
import { ProviderError, actorFrom, NoopEventSink } from '@selvajs/platform';
|
|
2
|
+
import { mapPostgrestError } from './errors.js';
|
|
2
3
|
import { nextCursorFromRange, orderColumn, toRange } from './pagination.js';
|
|
4
|
+
import { stampSoftDelete, stampUpdate } from './rowStamp.js';
|
|
5
|
+
/** Explicit column list for `projects` — every field `rowToProject` consumes. */
|
|
6
|
+
const PROJECT_COLUMNS = 'id, org_id, name, slug, description, visibility, owner_id, created_by, updated_by, auto_join_on_upload, created_at, updated_at, deleted_at';
|
|
7
|
+
/** Explicit column list for `project_members` — every field `rowToProjectMember` consumes. */
|
|
8
|
+
const PROJECT_MEMBER_COLUMNS = 'project_id, user_id, role, joined_at, updated_at, updated_by, deleted_at';
|
|
3
9
|
/**
|
|
4
10
|
* Project + project-membership store backed by Postgres. Visibility semantics
|
|
5
11
|
* (public / org / private) are enforced by the `visible_project()` helper in
|
|
@@ -23,13 +29,13 @@ export class SupabaseProjectStore {
|
|
|
23
29
|
const { data, error, count } = await this.clients
|
|
24
30
|
.forRequest(ctx)
|
|
25
31
|
.from('projects')
|
|
26
|
-
.select(
|
|
32
|
+
.select(PROJECT_COLUMNS, { count: 'exact' })
|
|
27
33
|
.eq('org_id', orgId)
|
|
28
34
|
.is('deleted_at', null)
|
|
29
35
|
.order(orderColumn(opts?.orderBy), { ascending: direction === 'asc' })
|
|
30
36
|
.range(range.from, range.to);
|
|
31
37
|
if (error)
|
|
32
|
-
throw
|
|
38
|
+
throw mapPostgrestError(error);
|
|
33
39
|
const items = (data ?? []).map(rowToProject);
|
|
34
40
|
return { items, nextCursor: nextCursorFromRange(range, items.length, count) };
|
|
35
41
|
}
|
|
@@ -37,32 +43,32 @@ export class SupabaseProjectStore {
|
|
|
37
43
|
const { data, error } = await this.clients
|
|
38
44
|
.forRequest(ctx)
|
|
39
45
|
.from('projects')
|
|
40
|
-
.select(
|
|
46
|
+
.select(PROJECT_COLUMNS)
|
|
41
47
|
.eq('id', id)
|
|
42
48
|
.is('deleted_at', null)
|
|
43
49
|
.maybeSingle();
|
|
44
50
|
if (error)
|
|
45
|
-
throw
|
|
51
|
+
throw mapPostgrestError(error);
|
|
46
52
|
return data ? rowToProject(data) : null;
|
|
47
53
|
}
|
|
48
54
|
async getProjectBySlug(ctx, orgId, slug) {
|
|
49
55
|
const { data, error } = await this.clients
|
|
50
56
|
.forRequest(ctx)
|
|
51
57
|
.from('projects')
|
|
52
|
-
.select(
|
|
58
|
+
.select(PROJECT_COLUMNS)
|
|
53
59
|
.eq('org_id', orgId)
|
|
54
60
|
.eq('slug', slug)
|
|
55
61
|
.is('deleted_at', null)
|
|
56
62
|
.maybeSingle();
|
|
57
63
|
if (error)
|
|
58
|
-
throw
|
|
64
|
+
throw mapPostgrestError(error);
|
|
59
65
|
return data ? rowToProject(data) : null;
|
|
60
66
|
}
|
|
61
67
|
async createProject(ctx, project) {
|
|
62
68
|
const client = this.clients.forRequest(ctx);
|
|
63
69
|
const { error } = await client.from('projects').insert(projectToRow(project));
|
|
64
70
|
if (error)
|
|
65
|
-
throw
|
|
71
|
+
throw mapPostgrestError(error);
|
|
66
72
|
// Seed owner membership so user-scoped reads see the project post-create.
|
|
67
73
|
// Upsert so a stale soft-deleted row from a prior project with the same id
|
|
68
74
|
// is reactivated rather than blocking creation.
|
|
@@ -74,7 +80,7 @@ export class SupabaseProjectStore {
|
|
|
74
80
|
deleted_at: null
|
|
75
81
|
}, { onConflict: 'project_id,user_id' });
|
|
76
82
|
if (memberError)
|
|
77
|
-
throw
|
|
83
|
+
throw mapPostgrestError(memberError);
|
|
78
84
|
await this.events.emit({
|
|
79
85
|
type: 'project.created',
|
|
80
86
|
projectId: project.id,
|
|
@@ -96,8 +102,7 @@ export class SupabaseProjectStore {
|
|
|
96
102
|
row.auto_join_on_upload = patch.autoJoinOnUpload;
|
|
97
103
|
if (Object.keys(row).length === 0)
|
|
98
104
|
return;
|
|
99
|
-
|
|
100
|
-
row.updated_by = ctx.userId;
|
|
105
|
+
Object.assign(row, stampUpdate(ctx));
|
|
101
106
|
const { data, error } = await this.clients
|
|
102
107
|
.forRequest(ctx)
|
|
103
108
|
.from('projects')
|
|
@@ -106,7 +111,7 @@ export class SupabaseProjectStore {
|
|
|
106
111
|
.is('deleted_at', null)
|
|
107
112
|
.select('id');
|
|
108
113
|
if (error)
|
|
109
|
-
throw
|
|
114
|
+
throw mapPostgrestError(error);
|
|
110
115
|
if (!data || data.length === 0)
|
|
111
116
|
throw new ProviderError(`Project '${id}' not found`, 404);
|
|
112
117
|
}
|
|
@@ -115,8 +120,7 @@ export class SupabaseProjectStore {
|
|
|
115
120
|
// project_members, definitions. FK CASCADE doesn't fire on soft-delete,
|
|
116
121
|
// so the cascade is in app code.
|
|
117
122
|
const client = this.clients.forRequest(ctx);
|
|
118
|
-
const
|
|
119
|
-
const stampRow = stampToRow(stamp);
|
|
123
|
+
const stampRow = stampSoftDelete(ctx);
|
|
120
124
|
const { data, error } = await client
|
|
121
125
|
.from('projects')
|
|
122
126
|
.update(stampRow)
|
|
@@ -124,7 +128,7 @@ export class SupabaseProjectStore {
|
|
|
124
128
|
.is('deleted_at', null)
|
|
125
129
|
.select('id');
|
|
126
130
|
if (error)
|
|
127
|
-
throw
|
|
131
|
+
throw mapPostgrestError(error);
|
|
128
132
|
if (!data || data.length === 0)
|
|
129
133
|
throw new ProviderError(`Project '${id}' not found`, 404);
|
|
130
134
|
const { error: pmErr } = await client
|
|
@@ -133,14 +137,28 @@ export class SupabaseProjectStore {
|
|
|
133
137
|
.eq('project_id', id)
|
|
134
138
|
.is('deleted_at', null);
|
|
135
139
|
if (pmErr)
|
|
136
|
-
throw
|
|
137
|
-
|
|
140
|
+
throw mapPostgrestError(pmErr);
|
|
141
|
+
// Cascade to definitions. `select('guid')` returns the tombstoned rows so
|
|
142
|
+
// we emit one `definition.deleted` per record — parity with the single
|
|
143
|
+
// `delete` path and with `SupabaseDefinitionStore.deleteByProject` /
|
|
144
|
+
// `LocalProjectStore.deleteProject`. (Kept inline rather than delegating to
|
|
145
|
+
// the definition store to avoid a cross-store constructor dependency; the
|
|
146
|
+
// behavior must stay identical to `deleteByProject`.)
|
|
147
|
+
const { data: deletedDefs, error: defErr } = await client
|
|
138
148
|
.from('definitions')
|
|
139
149
|
.update(stampRow)
|
|
140
150
|
.eq('project_id', id)
|
|
141
|
-
.is('deleted_at', null)
|
|
151
|
+
.is('deleted_at', null)
|
|
152
|
+
.select('guid');
|
|
142
153
|
if (defErr)
|
|
143
|
-
throw
|
|
154
|
+
throw mapPostgrestError(defErr);
|
|
155
|
+
for (const row of deletedDefs ?? []) {
|
|
156
|
+
await this.events.emit({
|
|
157
|
+
type: 'definition.deleted',
|
|
158
|
+
definitionId: row.guid,
|
|
159
|
+
actorId: actorFrom(ctx)
|
|
160
|
+
});
|
|
161
|
+
}
|
|
144
162
|
await this.events.emit({ type: 'project.deleted', projectId: id, actorId: actorFrom(ctx) });
|
|
145
163
|
}
|
|
146
164
|
async reactivateProject(ctx, orgId, slug) {
|
|
@@ -154,10 +172,10 @@ export class SupabaseProjectStore {
|
|
|
154
172
|
.eq('org_id', orgId)
|
|
155
173
|
.eq('slug', slug)
|
|
156
174
|
.not('deleted_at', 'is', null)
|
|
157
|
-
.select(
|
|
175
|
+
.select(PROJECT_COLUMNS)
|
|
158
176
|
.maybeSingle();
|
|
159
177
|
if (error)
|
|
160
|
-
throw
|
|
178
|
+
throw mapPostgrestError(error);
|
|
161
179
|
if (!data)
|
|
162
180
|
return null;
|
|
163
181
|
// Reactivate the owner's project_members row (deleteProject cascades to it).
|
|
@@ -168,7 +186,7 @@ export class SupabaseProjectStore {
|
|
|
168
186
|
.eq('user_id', data.owner_id)
|
|
169
187
|
.not('deleted_at', 'is', null);
|
|
170
188
|
if (pmErr)
|
|
171
|
-
throw
|
|
189
|
+
throw mapPostgrestError(pmErr);
|
|
172
190
|
const project = rowToProject(data);
|
|
173
191
|
await this.events.emit({
|
|
174
192
|
type: 'project.created',
|
|
@@ -186,13 +204,13 @@ export class SupabaseProjectStore {
|
|
|
186
204
|
const { data, error, count } = await this.clients
|
|
187
205
|
.forRequest(ctx)
|
|
188
206
|
.from('project_members')
|
|
189
|
-
.select(
|
|
207
|
+
.select(PROJECT_MEMBER_COLUMNS, { count: 'exact' })
|
|
190
208
|
.eq('project_id', projectId)
|
|
191
209
|
.is('deleted_at', null)
|
|
192
210
|
.order('joined_at', { ascending: (opts?.orderDir ?? 'desc') === 'asc' })
|
|
193
211
|
.range(range.from, range.to);
|
|
194
212
|
if (error)
|
|
195
|
-
throw
|
|
213
|
+
throw mapPostgrestError(error);
|
|
196
214
|
const items = (data ?? []).map(rowToProjectMember);
|
|
197
215
|
return { items, nextCursor: nextCursorFromRange(range, items.length, count) };
|
|
198
216
|
}
|
|
@@ -200,13 +218,13 @@ export class SupabaseProjectStore {
|
|
|
200
218
|
const { data, error } = await this.clients
|
|
201
219
|
.forRequest(ctx)
|
|
202
220
|
.from('project_members')
|
|
203
|
-
.select(
|
|
221
|
+
.select(PROJECT_MEMBER_COLUMNS)
|
|
204
222
|
.eq('project_id', projectId)
|
|
205
223
|
.eq('user_id', userId)
|
|
206
224
|
.is('deleted_at', null)
|
|
207
225
|
.maybeSingle();
|
|
208
226
|
if (error)
|
|
209
|
-
throw
|
|
227
|
+
throw mapPostgrestError(error);
|
|
210
228
|
return data ? rowToProjectMember(data) : null;
|
|
211
229
|
}
|
|
212
230
|
async addProjectMember(ctx, member) {
|
|
@@ -214,16 +232,15 @@ export class SupabaseProjectStore {
|
|
|
214
232
|
// duplicate-key. Mirrors LocalProjectStore.addProjectMember.
|
|
215
233
|
const row = {
|
|
216
234
|
...projectMemberToRow(member),
|
|
217
|
-
deleted_at: null
|
|
235
|
+
deleted_at: null,
|
|
236
|
+
...stampUpdate(ctx)
|
|
218
237
|
};
|
|
219
|
-
if (ctx.userId)
|
|
220
|
-
row.updated_by = ctx.userId;
|
|
221
238
|
const { error } = await this.clients
|
|
222
239
|
.forRequest(ctx)
|
|
223
240
|
.from('project_members')
|
|
224
241
|
.upsert(row, { onConflict: 'project_id,user_id' });
|
|
225
242
|
if (error)
|
|
226
|
-
throw
|
|
243
|
+
throw mapPostgrestError(error);
|
|
227
244
|
await this.events.emit({
|
|
228
245
|
type: 'project_member.added',
|
|
229
246
|
projectId: member.projectId,
|
|
@@ -232,9 +249,7 @@ export class SupabaseProjectStore {
|
|
|
232
249
|
});
|
|
233
250
|
}
|
|
234
251
|
async updateProjectMemberRole(ctx, projectId, userId, role) {
|
|
235
|
-
const row = { role };
|
|
236
|
-
if (ctx.userId)
|
|
237
|
-
row.updated_by = ctx.userId;
|
|
252
|
+
const row = { role, ...stampUpdate(ctx) };
|
|
238
253
|
const { data, error } = await this.clients
|
|
239
254
|
.forRequest(ctx)
|
|
240
255
|
.from('project_members')
|
|
@@ -244,7 +259,7 @@ export class SupabaseProjectStore {
|
|
|
244
259
|
.is('deleted_at', null)
|
|
245
260
|
.select('user_id');
|
|
246
261
|
if (error)
|
|
247
|
-
throw
|
|
262
|
+
throw mapPostgrestError(error);
|
|
248
263
|
if (!data || data.length === 0)
|
|
249
264
|
throw new ProviderError(`Project member '${userId}' not found`, 404);
|
|
250
265
|
await this.events.emit({
|
|
@@ -256,16 +271,15 @@ export class SupabaseProjectStore {
|
|
|
256
271
|
});
|
|
257
272
|
}
|
|
258
273
|
async removeProjectMember(ctx, projectId, userId) {
|
|
259
|
-
const stamp = auditSoftDelete(ctx, ctx.userId);
|
|
260
274
|
const { error } = await this.clients
|
|
261
275
|
.forRequest(ctx)
|
|
262
276
|
.from('project_members')
|
|
263
|
-
.update(
|
|
277
|
+
.update(stampSoftDelete(ctx))
|
|
264
278
|
.eq('project_id', projectId)
|
|
265
279
|
.eq('user_id', userId)
|
|
266
280
|
.is('deleted_at', null);
|
|
267
281
|
if (error)
|
|
268
|
-
throw
|
|
282
|
+
throw mapPostgrestError(error);
|
|
269
283
|
await this.events.emit({
|
|
270
284
|
type: 'project_member.removed',
|
|
271
285
|
projectId,
|
|
@@ -327,37 +341,4 @@ function projectMemberToRow(m) {
|
|
|
327
341
|
joined_at: m.joinedAt
|
|
328
342
|
};
|
|
329
343
|
}
|
|
330
|
-
/**
|
|
331
|
-
* Build a row payload from an audit-soft-delete stamp. `updated_by` only goes
|
|
332
|
-
* into the row when ctx.userId is set — passing `''` would violate the
|
|
333
|
-
* `references auth.users(id)` FK on system contexts. The DB trigger sets
|
|
334
|
-
* `updated_at`, but for soft-delete we set it explicitly so it matches
|
|
335
|
-
* `deleted_at` (single timestamp for the deletion event).
|
|
336
|
-
*/
|
|
337
|
-
function stampToRow(stamp) {
|
|
338
|
-
const row = {
|
|
339
|
-
deleted_at: stamp.deletedAt,
|
|
340
|
-
updated_at: stamp.updatedAt
|
|
341
|
-
};
|
|
342
|
-
if (stamp.updatedBy)
|
|
343
|
-
row.updated_by = stamp.updatedBy;
|
|
344
|
-
return row;
|
|
345
|
-
}
|
|
346
|
-
function mapError(e) {
|
|
347
|
-
const pg = e;
|
|
348
|
-
if (pg?.code === '23505')
|
|
349
|
-
return new ProviderError(pg.message ?? 'Duplicate record', 409);
|
|
350
|
-
if (pg?.code === '23503')
|
|
351
|
-
return new ProviderError(pg.message ?? 'Foreign key violation', 409);
|
|
352
|
-
if (e instanceof Error)
|
|
353
|
-
return e;
|
|
354
|
-
if (e && typeof e === 'object') {
|
|
355
|
-
const obj = e;
|
|
356
|
-
const msg = obj.message ?? obj.details ?? obj.hint ?? 'Unknown Postgres error';
|
|
357
|
-
const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);
|
|
358
|
-
Object.assign(err, obj);
|
|
359
|
-
return err;
|
|
360
|
-
}
|
|
361
|
-
return new Error(String(e));
|
|
362
|
-
}
|
|
363
344
|
//# sourceMappingURL=SupabaseProjectStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseProjectStore.js","sourceRoot":"","sources":["../../src/data/SupabaseProjectStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SupabaseProjectStore.js","sourceRoot":"","sources":["../../src/data/SupabaseProjectStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseShareLinkStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseShareLinkStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,IAAI,EACJ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseShareLinkStore.d.ts","sourceRoot":"","sources":["../../src/data/SupabaseShareLinkStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,IAAI,EACJ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAI5D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAGlB,OAAO,EAAE,YAAY,EACtC,MAAM,GAAE,UAAgC;IAKnC,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3D,gBAAgB,CACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAerB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAWnE,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAelF,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IActD,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAWtF"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { actorFrom, NoopEventSink } from '@selvajs/platform';
|
|
2
|
+
import { mapPostgrestError } from './errors.js';
|
|
2
3
|
import { nextCursorFromRange, toRange } from './pagination.js';
|
|
4
|
+
/** Explicit column list for `share_links` — every field `rowToLink` consumes. */
|
|
5
|
+
const SHARE_LINK_COLUMNS = 'id, definition_guid, channel, token_hash, name, created_by, created_at, expires_at, revoked_at, allow_solve, max_solves, solve_count';
|
|
3
6
|
/**
|
|
4
7
|
* Spec §7 — share-link store backed by Postgres.
|
|
5
8
|
*
|
|
@@ -25,7 +28,7 @@ export class SupabaseShareLinkStore {
|
|
|
25
28
|
.from('share_links')
|
|
26
29
|
.insert(linkToRow(link));
|
|
27
30
|
if (error)
|
|
28
|
-
throw
|
|
31
|
+
throw mapPostgrestError(error);
|
|
29
32
|
await this.events.emit({
|
|
30
33
|
type: 'share_link.minted',
|
|
31
34
|
linkId: link.id,
|
|
@@ -38,13 +41,13 @@ export class SupabaseShareLinkStore {
|
|
|
38
41
|
const { data, error, count } = await this.clients
|
|
39
42
|
.forRequest(ctx)
|
|
40
43
|
.from('share_links')
|
|
41
|
-
.select(
|
|
44
|
+
.select(SHARE_LINK_COLUMNS, { count: 'exact' })
|
|
42
45
|
.eq('definition_guid', definitionId)
|
|
43
46
|
.is('revoked_at', null)
|
|
44
47
|
.order('created_at', { ascending: false })
|
|
45
48
|
.range(range.from, range.to);
|
|
46
49
|
if (error)
|
|
47
|
-
throw
|
|
50
|
+
throw mapPostgrestError(error);
|
|
48
51
|
const items = (data ?? []).map(rowToLink);
|
|
49
52
|
return { items, nextCursor: nextCursorFromRange(range, items.length, count) };
|
|
50
53
|
}
|
|
@@ -52,11 +55,11 @@ export class SupabaseShareLinkStore {
|
|
|
52
55
|
const { data, error } = await this.clients
|
|
53
56
|
.forRequest(ctx)
|
|
54
57
|
.from('share_links')
|
|
55
|
-
.select(
|
|
58
|
+
.select(SHARE_LINK_COLUMNS)
|
|
56
59
|
.eq('id', id)
|
|
57
60
|
.maybeSingle();
|
|
58
61
|
if (error)
|
|
59
|
-
throw
|
|
62
|
+
throw mapPostgrestError(error);
|
|
60
63
|
return data ? rowToLink(data) : null;
|
|
61
64
|
}
|
|
62
65
|
async getByTokenHash(_ctx, tokenHash) {
|
|
@@ -65,13 +68,13 @@ export class SupabaseShareLinkStore {
|
|
|
65
68
|
// — exactly the wrong semantic for token-credentialed access.
|
|
66
69
|
const { data, error } = await this.clients.serviceClient
|
|
67
70
|
.from('share_links')
|
|
68
|
-
.select(
|
|
71
|
+
.select(`${SHARE_LINK_COLUMNS}, definitions!inner(deleted_at)`)
|
|
69
72
|
.eq('token_hash', tokenHash)
|
|
70
73
|
.is('revoked_at', null)
|
|
71
74
|
.is('definitions.deleted_at', null)
|
|
72
75
|
.maybeSingle();
|
|
73
76
|
if (error)
|
|
74
|
-
throw
|
|
77
|
+
throw mapPostgrestError(error);
|
|
75
78
|
return data ? rowToLink(data) : null;
|
|
76
79
|
}
|
|
77
80
|
async revoke(ctx, id) {
|
|
@@ -85,7 +88,7 @@ export class SupabaseShareLinkStore {
|
|
|
85
88
|
.eq('id', id)
|
|
86
89
|
.is('revoked_at', null);
|
|
87
90
|
if (error)
|
|
88
|
-
throw
|
|
91
|
+
throw mapPostgrestError(error);
|
|
89
92
|
await this.events.emit({ type: 'share_link.revoked', linkId: id, actorId: actorFrom(ctx) });
|
|
90
93
|
}
|
|
91
94
|
async tryIncrementSolveCount(_ctx, id) {
|
|
@@ -94,7 +97,7 @@ export class SupabaseShareLinkStore {
|
|
|
94
97
|
// row update is the only way to get a numeric return.
|
|
95
98
|
const { data, error } = await this.clients.serviceClient.rpc('try_increment_share_link_solve_count', { link_id: id });
|
|
96
99
|
if (error)
|
|
97
|
-
throw
|
|
100
|
+
throw mapPostgrestError(error);
|
|
98
101
|
return typeof data === 'number' ? data : null;
|
|
99
102
|
}
|
|
100
103
|
}
|
|
@@ -130,21 +133,4 @@ function linkToRow(l) {
|
|
|
130
133
|
solve_count: l.solveCount
|
|
131
134
|
};
|
|
132
135
|
}
|
|
133
|
-
function mapError(e) {
|
|
134
|
-
const pg = e;
|
|
135
|
-
if (pg?.code === '23505')
|
|
136
|
-
return new ProviderError(pg.message ?? 'Duplicate record', 409);
|
|
137
|
-
if (pg?.code === '23503')
|
|
138
|
-
return new ProviderError(pg.message ?? 'Foreign key violation', 409);
|
|
139
|
-
if (e instanceof Error)
|
|
140
|
-
return e;
|
|
141
|
-
if (e && typeof e === 'object') {
|
|
142
|
-
const obj = e;
|
|
143
|
-
const msg = obj.message ?? obj.details ?? obj.hint ?? 'Unknown Postgres error';
|
|
144
|
-
const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);
|
|
145
|
-
Object.assign(err, obj);
|
|
146
|
-
return err;
|
|
147
|
-
}
|
|
148
|
-
return new Error(String(e));
|
|
149
|
-
}
|
|
150
136
|
//# sourceMappingURL=SupabaseShareLinkStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseShareLinkStore.js","sourceRoot":"","sources":["../../src/data/SupabaseShareLinkStore.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"SupabaseShareLinkStore.js","sourceRoot":"","sources":["../../src/data/SupabaseShareLinkStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { describe, beforeEach, it } from 'vitest';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
2
3
|
import { runComputeServerStoreConformance } from '@selvajs/platform/testing';
|
|
3
4
|
import { SupabaseComputeServerStore } from '../SupabaseComputeServerStore.js';
|
|
4
5
|
import { readEnv, resetAllData, seedUser } from './test-helpers.js';
|
|
5
6
|
const envCtx = readEnv();
|
|
7
|
+
// A throwaway at-rest key so the store encrypts apiKeys during the suite. The
|
|
8
|
+
// round-trip (encrypt on write, decrypt on read) must be transparent to the
|
|
9
|
+
// conformance assertions, which compare plaintext apiKeys.
|
|
10
|
+
const TEST_SECRET_KEY = randomBytes(32);
|
|
6
11
|
if (!envCtx) {
|
|
7
12
|
describe.skip('SupabaseComputeServerStore (skipped: no live stack)', () => {
|
|
8
13
|
it('populate packages/providers/supabase/.env.test with Supabase creds to run these tests', () => { });
|
|
@@ -15,7 +20,7 @@ else {
|
|
|
15
20
|
});
|
|
16
21
|
runComputeServerStoreConformance({
|
|
17
22
|
name: 'SupabaseComputeServerStore',
|
|
18
|
-
createStore: () => new SupabaseComputeServerStore(envCtx.bundle),
|
|
23
|
+
createStore: () => new SupabaseComputeServerStore(envCtx.bundle, TEST_SECRET_KEY),
|
|
19
24
|
seedOrg: async (orgId) => {
|
|
20
25
|
// `compute_servers.owner_org_id` and `compute_server_org_defaults.org_id`
|
|
21
26
|
// FK to `orgs(id)`; the suite invents an `orgId` per org-scoped test,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute-server-conformance.test.js","sourceRoot":"","sources":["../../../src/data/__tests__/compute-server-conformance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;IACb,QAAQ,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QACzE,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC3C,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,gCAAgC,CAAC;YAChC,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"compute-server-conformance.test.js","sourceRoot":"","sources":["../../../src/data/__tests__/compute-server-conformance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAEzB,8EAA8E;AAC9E,4EAA4E;AAC5E,2DAA2D;AAC3D,MAAM,eAAe,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,EAAE,CAAC;IACb,QAAQ,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QACzE,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC3C,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,gCAAgC,CAAC;YAChC,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;YACjF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxB,0EAA0E;gBAC1E,sEAAsE;gBACtE,mEAAmE;gBACnE,+DAA+D;gBAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;oBAC9D,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,WAAW,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBACpC,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,GAAG;iBACf,CAAC,CAAC;gBACH,IAAI,KAAK;oBAAE,MAAM,KAAK,CAAC;YACxB,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI-runnable (no live stack) unit tests for at-rest encryption of
|
|
3
|
+
* `compute_servers.api_key`. Uses a minimal fake of the Supabase query builder
|
|
4
|
+
* that records `insert` payloads and serves canned `select` rows, so we can
|
|
5
|
+
* assert the exact bytes that would reach the DB without a real Postgres.
|
|
6
|
+
*
|
|
7
|
+
* The security property under test: a plaintext apiKey handed to the store is
|
|
8
|
+
* NEVER written verbatim — the DB only ever sees an `enc:v1:` envelope — and it
|
|
9
|
+
* round-trips back to plaintext on read.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=compute-server-encryption.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-server-encryption.test.d.ts","sourceRoot":"","sources":["../../../src/data/__tests__/compute-server-encryption.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|