@managemint-solutions/sdk 0.17.0 → 0.19.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/additional-details/dto.js +2 -2
- package/dist/audit/dto.js +10 -3
- package/dist/audit/dto.js.map +1 -1
- package/dist/audit/index.d.ts +23 -2
- package/dist/audit/index.js +56 -21
- package/dist/audit/index.js.map +1 -1
- package/dist/auth-client/index.d.ts +1 -6
- package/dist/auth-client/index.js +3 -18
- package/dist/auth-client/index.js.map +1 -1
- package/dist/auth.d.ts +36 -1
- package/dist/auth.js +52 -22
- package/dist/auth.js.map +1 -1
- package/dist/billing/dto.d.ts +4 -0
- package/dist/billing/dto.js +5 -1
- package/dist/billing/dto.js.map +1 -1
- package/dist/billing/index.d.ts +0 -1
- package/dist/billing/index.js +2 -12
- package/dist/billing/index.js.map +1 -1
- package/dist/client.d.ts +16 -1
- package/dist/client.js +8 -6
- package/dist/client.js.map +1 -1
- package/dist/clients/dto.js +4 -4
- package/dist/clients/index.js +13 -75
- package/dist/clients/index.js.map +1 -1
- package/dist/errors.d.ts +4 -1
- package/dist/errors.js +7 -58
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +48 -22
- package/dist/index.js +116 -36
- package/dist/index.js.map +1 -1
- package/dist/nest/index.d.ts +26 -3
- package/dist/nest/index.js +54 -15
- package/dist/nest/index.js.map +1 -1
- package/dist/notes/dto.js +2 -2
- package/dist/notifications/dto.js +1 -1
- package/dist/notifications/index.d.ts +0 -1
- package/dist/notifications/index.js +4 -16
- package/dist/notifications/index.js.map +1 -1
- package/dist/organization-invites/index.d.ts +29 -0
- package/dist/organization-invites/index.js +48 -0
- package/dist/organization-invites/index.js.map +1 -0
- package/dist/organizations/dto.js +1 -1
- package/dist/organizations/index.js +4 -9
- package/dist/organizations/index.js.map +1 -1
- package/dist/permissions/index.d.ts +8 -0
- package/dist/permissions/index.js +16 -1
- package/dist/permissions/index.js.map +1 -1
- package/dist/projects/dto.js +14 -9
- package/dist/projects/dto.js.map +1 -1
- package/dist/projects/index.js +12 -75
- package/dist/projects/index.js.map +1 -1
- package/dist/service-client/index.d.ts +2 -0
- package/dist/service-client/index.js +7 -6
- package/dist/service-client/index.js.map +1 -1
- package/dist/statuses/dto.js +1 -1
- package/dist/supporting-files/dto.js +2 -2
- package/dist/supporting-files/index.js +31 -15
- package/dist/supporting-files/index.js.map +1 -1
- package/dist/supporting-files/paths.d.ts +19 -5
- package/dist/supporting-files/paths.js +46 -10
- package/dist/supporting-files/paths.js.map +1 -1
- package/dist/tasks/dto.js +20 -13
- package/dist/tasks/dto.js.map +1 -1
- package/dist/tasks/index.js +7 -33
- package/dist/tasks/index.js.map +1 -1
- package/dist/transforms.d.ts +45 -2
- package/dist/transforms.js +83 -8
- package/dist/transforms.js.map +1 -1
- package/dist/users/dto.d.ts +3 -0
- package/dist/users/dto.js +9 -1
- package/dist/users/dto.js.map +1 -1
- package/dist/users/index.js +4 -14
- package/dist/users/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -17,11 +17,19 @@ export declare class PermissionsResource {
|
|
|
17
17
|
private readonly auth;
|
|
18
18
|
private readonly table;
|
|
19
19
|
constructor(supabase: TypedSupabaseClient, auth: AuditActor, audit: AuditResource);
|
|
20
|
+
/**
|
|
21
|
+
* The whole permissions row. `*` rather than a select string — the alternative is naming the
|
|
22
|
+
* two role flags and all 78 permission flags — so the internal `id` is dropped on the way out.
|
|
23
|
+
*/
|
|
20
24
|
getForUser(userId: string): Promise<PermissionsEntity>;
|
|
21
25
|
/**
|
|
22
26
|
* The one lookup `PermissionsGuard` makes per gated request: the flag the route asked for,
|
|
23
27
|
* plus the two that bypass it. Returns null when the caller has no permissions row, which the
|
|
24
28
|
* guard treats as a denial.
|
|
29
|
+
*
|
|
30
|
+
* `flag` is interpolated into the select string, so it is checked against the shape a column
|
|
31
|
+
* name can take first — a flag never comes from a request, only from a route's own decorator,
|
|
32
|
+
* so anything else is a bug rather than a bad request.
|
|
25
33
|
*/
|
|
26
34
|
flagsFor(userId: string, flag: string): Promise<PermissionFlags | null>;
|
|
27
35
|
/** Whether a user owns the organization — the guard behind "you cannot deactivate the owner". */
|
|
@@ -37,6 +37,10 @@ class PermissionsResource {
|
|
|
37
37
|
this.auth = auth;
|
|
38
38
|
this.table = (0, audit_1.auditedTable)(supabase, auth, audit, PERMISSIONS_TABLE);
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* The whole permissions row. `*` rather than a select string — the alternative is naming the
|
|
42
|
+
* two role flags and all 78 permission flags — so the internal `id` is dropped on the way out.
|
|
43
|
+
*/
|
|
40
44
|
async getForUser(userId) {
|
|
41
45
|
const { data, error } = await this.supabase
|
|
42
46
|
.from('permissions')
|
|
@@ -46,14 +50,25 @@ class PermissionsResource {
|
|
|
46
50
|
.single();
|
|
47
51
|
if (error)
|
|
48
52
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
49
|
-
return data;
|
|
53
|
+
return (0, audit_1.withoutInternalId)(data);
|
|
50
54
|
}
|
|
51
55
|
/**
|
|
52
56
|
* The one lookup `PermissionsGuard` makes per gated request: the flag the route asked for,
|
|
53
57
|
* plus the two that bypass it. Returns null when the caller has no permissions row, which the
|
|
54
58
|
* guard treats as a denial.
|
|
59
|
+
*
|
|
60
|
+
* `flag` is interpolated into the select string, so it is checked against the shape a column
|
|
61
|
+
* name can take first — a flag never comes from a request, only from a route's own decorator,
|
|
62
|
+
* so anything else is a bug rather than a bad request.
|
|
55
63
|
*/
|
|
56
64
|
async flagsFor(userId, flag) {
|
|
65
|
+
if (!/^[a-z][a-z0-9_]*$/.test(flag)) {
|
|
66
|
+
throw new errors_1.SupabaseClientError({
|
|
67
|
+
status: 500,
|
|
68
|
+
error: 'Internal Error',
|
|
69
|
+
message: 'Invalid permission flag',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
57
72
|
const { data, error } = await this.supabase
|
|
58
73
|
.from('permissions')
|
|
59
74
|
.select(`is_owner, is_admin, ${flag}`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0EAAuF;AAEvF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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"}
|
package/dist/projects/dto.js
CHANGED
|
@@ -96,14 +96,14 @@ __decorate([
|
|
|
96
96
|
(0, class_validator_1.IsOptional)(),
|
|
97
97
|
(0, validators_1.IsNullable)(),
|
|
98
98
|
(0, class_transformer_1.Transform)(({ value }) => value ? value.split(',').map((id) => id.trim()) : null, { toClassOnly: true }),
|
|
99
|
-
(0, class_validator_1.IsUUID)('
|
|
99
|
+
(0, class_validator_1.IsUUID)('7', { each: true, message: 'Each status ID must be a valid UUID v7' }),
|
|
100
100
|
__metadata("design:type", Object)
|
|
101
101
|
], GetProjectsDto.prototype, "status_id_in", void 0);
|
|
102
102
|
__decorate([
|
|
103
103
|
(0, class_validator_1.IsOptional)(),
|
|
104
104
|
(0, validators_1.IsNullable)(),
|
|
105
105
|
(0, class_transformer_1.Transform)(({ value }) => (0, transforms_1.parseEntityIdFilter)(value), { toClassOnly: true }),
|
|
106
|
-
(0, class_validator_1.IsUUID)('
|
|
106
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Each client ID must be a valid UUID v7' }),
|
|
107
107
|
__metadata("design:type", Object)
|
|
108
108
|
], GetProjectsDto.prototype, "client_id", void 0);
|
|
109
109
|
__decorate([
|
|
@@ -118,7 +118,7 @@ class ProjectIdDto {
|
|
|
118
118
|
}
|
|
119
119
|
exports.ProjectIdDto = ProjectIdDto;
|
|
120
120
|
__decorate([
|
|
121
|
-
(0, class_validator_1.IsUUID)('
|
|
121
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid project ID format' }),
|
|
122
122
|
__metadata("design:type", String)
|
|
123
123
|
], ProjectIdDto.prototype, "projectId", void 0);
|
|
124
124
|
class CreateProjectDto {
|
|
@@ -163,18 +163,21 @@ __decorate([
|
|
|
163
163
|
__decorate([
|
|
164
164
|
(0, class_validator_1.IsOptional)(),
|
|
165
165
|
(0, validators_1.IsNullable)(),
|
|
166
|
-
(0, class_validator_1.IsUUID)('
|
|
166
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid status ID format' }),
|
|
167
167
|
__metadata("design:type", Object)
|
|
168
168
|
], CreateProjectDto.prototype, "status_id", void 0);
|
|
169
169
|
__decorate([
|
|
170
170
|
(0, class_validator_1.IsOptional)(),
|
|
171
171
|
(0, validators_1.IsNullable)(),
|
|
172
|
-
(0, class_validator_1.IsUUID)('
|
|
172
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid client ID format' }),
|
|
173
173
|
__metadata("design:type", Object)
|
|
174
174
|
], CreateProjectDto.prototype, "client_id", void 0);
|
|
175
175
|
__decorate([
|
|
176
176
|
(0, class_validator_1.IsOptional)(),
|
|
177
|
-
(0, validators_1.IsNullable)()
|
|
177
|
+
(0, validators_1.IsNullable)()
|
|
178
|
+
// Still v4: a manager is a `users.mms_id`, and that column carries the GoTrue auth uid the
|
|
179
|
+
// signup trigger copies out of `auth.users.id` — the table's uuidv7 default never fires.
|
|
180
|
+
,
|
|
178
181
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid manager ID format' }),
|
|
179
182
|
__metadata("design:type", Object)
|
|
180
183
|
], CreateProjectDto.prototype, "manager_id", void 0);
|
|
@@ -220,18 +223,20 @@ __decorate([
|
|
|
220
223
|
__decorate([
|
|
221
224
|
(0, class_validator_1.IsOptional)(),
|
|
222
225
|
(0, validators_1.IsNullable)(),
|
|
223
|
-
(0, class_validator_1.IsUUID)('
|
|
226
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid status ID format' }),
|
|
224
227
|
__metadata("design:type", Object)
|
|
225
228
|
], UpdateProjectDto.prototype, "status_id", void 0);
|
|
226
229
|
__decorate([
|
|
227
230
|
(0, class_validator_1.IsOptional)(),
|
|
228
231
|
(0, validators_1.IsNullable)(),
|
|
229
|
-
(0, class_validator_1.IsUUID)('
|
|
232
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid client ID format' }),
|
|
230
233
|
__metadata("design:type", Object)
|
|
231
234
|
], UpdateProjectDto.prototype, "client_id", void 0);
|
|
232
235
|
__decorate([
|
|
233
236
|
(0, class_validator_1.IsOptional)(),
|
|
234
|
-
(0, validators_1.IsNullable)()
|
|
237
|
+
(0, validators_1.IsNullable)()
|
|
238
|
+
// Still v4 — a manager is a `users.mms_id`, the GoTrue auth uid (see CreateProjectDto).
|
|
239
|
+
,
|
|
235
240
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid manager ID format' }),
|
|
236
241
|
__metadata("design:type", Object)
|
|
237
242
|
], UpdateProjectDto.prototype, "manager_id", void 0);
|
package/dist/projects/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/projects/dto.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/projects/dto.ts"],"names":[],"mappings":"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"}
|
package/dist/projects/index.js
CHANGED
|
@@ -54,54 +54,18 @@ const PROJECT_DETAIL_SELECT = `
|
|
|
54
54
|
client:client_profiles!client_id (*),
|
|
55
55
|
manager:user_profiles!manager_id (*),
|
|
56
56
|
updated_at,
|
|
57
|
-
last_updated_by:user_profiles!last_updated_by
|
|
58
|
-
|
|
59
|
-
name,
|
|
60
|
-
surname,
|
|
61
|
-
email,
|
|
62
|
-
profile_image
|
|
63
|
-
),
|
|
64
|
-
created_by:user_profiles!created_by (
|
|
65
|
-
mms_id,
|
|
66
|
-
name,
|
|
67
|
-
surname,
|
|
68
|
-
email,
|
|
69
|
-
profile_image
|
|
70
|
-
),
|
|
57
|
+
last_updated_by:user_profiles!last_updated_by ${transforms_1.USER_PROFILE_EMBED},
|
|
58
|
+
created_by:user_profiles!created_by ${transforms_1.USER_PROFILE_EMBED},
|
|
71
59
|
archived,
|
|
72
60
|
archived_at,
|
|
73
|
-
archived_by:user_profiles!archived_by
|
|
74
|
-
mms_id,
|
|
75
|
-
name,
|
|
76
|
-
surname,
|
|
77
|
-
email,
|
|
78
|
-
profile_image
|
|
79
|
-
),
|
|
61
|
+
archived_by:user_profiles!archived_by ${transforms_1.USER_PROFILE_EMBED},
|
|
80
62
|
unarchived_at,
|
|
81
|
-
unarchived_by:user_profiles!unarchived_by
|
|
82
|
-
mms_id,
|
|
83
|
-
name,
|
|
84
|
-
surname,
|
|
85
|
-
email,
|
|
86
|
-
profile_image
|
|
87
|
-
),
|
|
63
|
+
unarchived_by:user_profiles!unarchived_by ${transforms_1.USER_PROFILE_EMBED},
|
|
88
64
|
deleted,
|
|
89
65
|
deleted_at,
|
|
90
|
-
deleted_by:user_profiles!deleted_by
|
|
91
|
-
mms_id,
|
|
92
|
-
name,
|
|
93
|
-
surname,
|
|
94
|
-
email,
|
|
95
|
-
profile_image
|
|
96
|
-
),
|
|
66
|
+
deleted_by:user_profiles!deleted_by ${transforms_1.USER_PROFILE_EMBED},
|
|
97
67
|
restored_at,
|
|
98
|
-
restored_by:user_profiles!restored_by
|
|
99
|
-
mms_id,
|
|
100
|
-
name,
|
|
101
|
-
surname,
|
|
102
|
-
email,
|
|
103
|
-
profile_image
|
|
104
|
-
)
|
|
68
|
+
restored_by:user_profiles!restored_by ${transforms_1.USER_PROFILE_EMBED}
|
|
105
69
|
`;
|
|
106
70
|
class ProjectsResource {
|
|
107
71
|
supabase;
|
|
@@ -131,8 +95,7 @@ class ProjectsResource {
|
|
|
131
95
|
.range(offset, offset + pageSize - 1)
|
|
132
96
|
.order('created_at', { ascending: false });
|
|
133
97
|
if (trimmedSearch) {
|
|
134
|
-
|
|
135
|
-
projectsQuery = projectsQuery.or(`name.ilike.%${escapedSearch}%,specification.ilike.%${escapedSearch}%`);
|
|
98
|
+
projectsQuery = projectsQuery.or((0, transforms_1.orIlike)(['name', 'specification'], trimmedSearch));
|
|
136
99
|
}
|
|
137
100
|
if (query.created_after) {
|
|
138
101
|
projectsQuery = projectsQuery.gte('created_at', query.created_after);
|
|
@@ -161,17 +124,7 @@ class ProjectsResource {
|
|
|
161
124
|
const { data, error, count } = await projectsQuery;
|
|
162
125
|
if (error)
|
|
163
126
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
164
|
-
|
|
165
|
-
const totalPages = totalEstimated > 0 ? Math.ceil(totalEstimated / pageSize) : 0;
|
|
166
|
-
return {
|
|
167
|
-
results: (data ?? []),
|
|
168
|
-
page,
|
|
169
|
-
per_page: pageSize,
|
|
170
|
-
count: totalEstimated,
|
|
171
|
-
total_pages: totalPages,
|
|
172
|
-
has_next_page: page < totalPages,
|
|
173
|
-
has_previous_page: page > 1,
|
|
174
|
-
};
|
|
127
|
+
return (0, transforms_1.toMmsList)(data, page, pageSize, count);
|
|
175
128
|
}
|
|
176
129
|
async getById(projectId) {
|
|
177
130
|
const { data, error } = await this.supabase
|
|
@@ -226,36 +179,20 @@ class ProjectsResource {
|
|
|
226
179
|
return this.getById(projectId);
|
|
227
180
|
}
|
|
228
181
|
async archive(projectId) {
|
|
229
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.ARCHIVE,
|
|
230
|
-
archived: true,
|
|
231
|
-
archived_at: new Date().toISOString(),
|
|
232
|
-
archived_by: this.auth.mms_id,
|
|
233
|
-
});
|
|
182
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.ARCHIVE, (0, transforms_1.archivedPatch)(this.auth.mms_id));
|
|
234
183
|
return this.getById(projectId);
|
|
235
184
|
}
|
|
236
185
|
async unarchive(projectId) {
|
|
237
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.UNARCHIVE,
|
|
238
|
-
archived: false,
|
|
239
|
-
unarchived_at: new Date().toISOString(),
|
|
240
|
-
unarchived_by: this.auth.mms_id,
|
|
241
|
-
});
|
|
186
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.UNARCHIVE, (0, transforms_1.unarchivedPatch)(this.auth.mms_id));
|
|
242
187
|
return this.getById(projectId);
|
|
243
188
|
}
|
|
244
189
|
async restore(projectId) {
|
|
245
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.RESTORE,
|
|
246
|
-
deleted: false,
|
|
247
|
-
restored_at: new Date().toISOString(),
|
|
248
|
-
restored_by: this.auth.mms_id,
|
|
249
|
-
});
|
|
190
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.RESTORE, (0, transforms_1.restoredPatch)(this.auth.mms_id));
|
|
250
191
|
return this.getById(projectId);
|
|
251
192
|
}
|
|
252
193
|
/** Soft delete — the row stays, flagged `deleted`, and `restore()` brings it back. */
|
|
253
194
|
async remove(projectId) {
|
|
254
|
-
await this.table.transition(projectId, enum_1.AuditTrailAction.DELETE,
|
|
255
|
-
deleted: true,
|
|
256
|
-
deleted_at: new Date().toISOString(),
|
|
257
|
-
deleted_by: this.auth.mms_id,
|
|
258
|
-
});
|
|
195
|
+
await this.table.transition(projectId, enum_1.AuditTrailAction.DELETE, (0, transforms_1.deletedPatch)(this.auth.mms_id));
|
|
259
196
|
}
|
|
260
197
|
}
|
|
261
198
|
exports.ProjectsResource = ProjectsResource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,0EAGyD;AAEzD,oCAA+E;AAE/E,sCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/projects/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { AuditResource, type AuditActor, type AuditedTable, type AuditedTableOpt
|
|
|
2
2
|
import type { TypedSupabaseClient } from '../client';
|
|
3
3
|
import { BillingResource } from '../billing';
|
|
4
4
|
import { NotificationsOutboxResource } from '../notifications';
|
|
5
|
+
import { OrganizationInvitesResource } from '../organization-invites';
|
|
5
6
|
import { OrganizationsResource, OrganizationSignupResource } from '../organizations';
|
|
6
7
|
import { PermissionsResource } from '../permissions';
|
|
7
8
|
import { UsersResource } from '../users';
|
|
@@ -23,6 +24,7 @@ export declare class SupabaseOrganizationScope {
|
|
|
23
24
|
readonly actor: AuditActor;
|
|
24
25
|
readonly audit: AuditResource;
|
|
25
26
|
readonly billing: BillingResource;
|
|
27
|
+
readonly invites: OrganizationInvitesResource;
|
|
26
28
|
readonly organizations: OrganizationsResource;
|
|
27
29
|
readonly permissions: PermissionsResource;
|
|
28
30
|
readonly users: UsersResource;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSupabaseServiceClient = exports.SupabaseServiceClient = exports.SupabaseOrganizationScope = void 0;
|
|
4
|
-
const
|
|
4
|
+
const auth_1 = require("../auth");
|
|
5
5
|
const audit_1 = require("../audit");
|
|
6
6
|
const enum_1 = require("@managemint-solutions/entities/audit-trail/enum");
|
|
7
7
|
const billing_1 = require("../billing");
|
|
8
8
|
const notifications_1 = require("../notifications");
|
|
9
9
|
const errors_1 = require("../errors");
|
|
10
|
+
const organization_invites_1 = require("../organization-invites");
|
|
10
11
|
const organizations_1 = require("../organizations");
|
|
11
12
|
const permissions_1 = require("../permissions");
|
|
12
13
|
const users_1 = require("../users");
|
|
@@ -21,6 +22,7 @@ class SupabaseOrganizationScope {
|
|
|
21
22
|
actor;
|
|
22
23
|
audit;
|
|
23
24
|
billing;
|
|
25
|
+
invites;
|
|
24
26
|
organizations;
|
|
25
27
|
permissions;
|
|
26
28
|
users;
|
|
@@ -29,6 +31,7 @@ class SupabaseOrganizationScope {
|
|
|
29
31
|
this.actor = actor;
|
|
30
32
|
this.audit = new audit_1.AuditResource(supabase, actor, onAuditError);
|
|
31
33
|
this.billing = new billing_1.BillingResource(supabase, actor, this.audit);
|
|
34
|
+
this.invites = new organization_invites_1.OrganizationInvitesResource(supabase, actor);
|
|
32
35
|
this.organizations = new organizations_1.OrganizationsResource(supabase, actor, this.audit);
|
|
33
36
|
this.permissions = new permissions_1.PermissionsResource(supabase, actor, this.audit);
|
|
34
37
|
this.users = new users_1.UsersResource(supabase, actor, this.audit);
|
|
@@ -62,9 +65,7 @@ class SupabaseServiceClient {
|
|
|
62
65
|
resendEvents;
|
|
63
66
|
constructor(config) {
|
|
64
67
|
this.config = config;
|
|
65
|
-
this.supabase = (0,
|
|
66
|
-
auth: { persistSession: false, autoRefreshToken: false, detectSessionInUrl: false },
|
|
67
|
-
});
|
|
68
|
+
this.supabase = (0, auth_1.createRawClient)(config.url, config.serviceRoleKey);
|
|
68
69
|
this.paystackEvents = new webhook_events_1.WebhookEventsResource(this.supabase, 'paystack_webhook_events');
|
|
69
70
|
this.resendEvents = new webhook_events_1.WebhookEventsResource(this.supabase, 'resend_webhook_events');
|
|
70
71
|
this.signup = new organizations_1.OrganizationSignupResource(this.supabase, (organizationId) => this.forOrganization(organizationId).audit);
|
|
@@ -96,7 +97,7 @@ class SupabaseServiceClient {
|
|
|
96
97
|
.maybeSingle();
|
|
97
98
|
if (error)
|
|
98
99
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
99
|
-
return (data
|
|
100
|
+
return data ? (0, audit_1.withoutInternalId)(data) : null;
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
102
103
|
* A ledger row by id alone. Also unscoped by necessity: a `charge.success` carries the
|
|
@@ -110,7 +111,7 @@ class SupabaseServiceClient {
|
|
|
110
111
|
.maybeSingle();
|
|
111
112
|
if (error)
|
|
112
113
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
113
|
-
return (data
|
|
114
|
+
return data ? (0, audit_1.withoutInternalId)(data) : null;
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
exports.SupabaseServiceClient = SupabaseServiceClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service-client/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service-client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/statuses/dto.js
CHANGED
|
@@ -19,7 +19,7 @@ class StatusIdDto {
|
|
|
19
19
|
}
|
|
20
20
|
exports.StatusIdDto = StatusIdDto;
|
|
21
21
|
__decorate([
|
|
22
|
-
(0, class_validator_1.IsUUID)('
|
|
22
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid status ID format' }),
|
|
23
23
|
__metadata("design:type", String)
|
|
24
24
|
], StatusIdDto.prototype, "statusId", void 0);
|
|
25
25
|
class GetStatusesDto {
|
|
@@ -20,7 +20,7 @@ class SupportingFileIdDto {
|
|
|
20
20
|
}
|
|
21
21
|
exports.SupportingFileIdDto = SupportingFileIdDto;
|
|
22
22
|
__decorate([
|
|
23
|
-
(0, class_validator_1.IsUUID)('
|
|
23
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid supporting file ID format' }),
|
|
24
24
|
__metadata("design:type", String)
|
|
25
25
|
], SupportingFileIdDto.prototype, "supportingFileId", void 0);
|
|
26
26
|
class GetSupportingFilesDto {
|
|
@@ -33,7 +33,7 @@ __decorate([
|
|
|
33
33
|
__metadata("design:type", String)
|
|
34
34
|
], GetSupportingFilesDto.prototype, "entity", void 0);
|
|
35
35
|
__decorate([
|
|
36
|
-
(0, class_validator_1.IsUUID)('
|
|
36
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid entity ID format' }),
|
|
37
37
|
__metadata("design:type", String)
|
|
38
38
|
], GetSupportingFilesDto.prototype, "entityId", void 0);
|
|
39
39
|
//# sourceMappingURL=dto.js.map
|
|
@@ -27,9 +27,15 @@ const BUCKET = 'supporting-files';
|
|
|
27
27
|
const SIGNED_URL_TTL_SECONDS = 300;
|
|
28
28
|
/** Uploads run concurrently in batches of this size. */
|
|
29
29
|
const UPLOAD_BATCH_SIZE = 5;
|
|
30
|
+
/** The `name`/`extension` pair rendered back into the file name it was split from. */
|
|
31
|
+
const fileNameOf = (file) => file.extension ? `${file.name}.${file.extension}` : file.name;
|
|
30
32
|
// The public contract is the shared SupportingFileEntity from @managemint-solutions/entities; the
|
|
31
33
|
// casts at the returns declare the shape the select strings below produce (the columns are
|
|
32
34
|
// defined in the api's supabase/migrations).
|
|
35
|
+
//
|
|
36
|
+
// Object keys are `organizationId/entityType/entityId/file` — the organization leads so a storage
|
|
37
|
+
// policy can scope by tenant. A data migration renames the pre-existing objects, which have no
|
|
38
|
+
// organization segment, into that prefix.
|
|
33
39
|
class SupportingFilesResource {
|
|
34
40
|
supabase;
|
|
35
41
|
auth;
|
|
@@ -53,7 +59,7 @@ class SupportingFilesResource {
|
|
|
53
59
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
54
60
|
const { data: signed, error: signedError } = await this.supabase.storage
|
|
55
61
|
.from(BUCKET)
|
|
56
|
-
.createSignedUrl((0, paths_1.storagePath)(data.entity_type, data.entity_id, data.name, data.extension), SIGNED_URL_TTL_SECONDS);
|
|
62
|
+
.createSignedUrl((0, paths_1.storagePath)(this.auth.organization_id, data.entity_type, data.entity_id, data.name, data.extension), SIGNED_URL_TTL_SECONDS);
|
|
57
63
|
if (signedError)
|
|
58
64
|
throw (0, errors_1.mapStorageError)(signedError);
|
|
59
65
|
return { url: signed.signedUrl, ttl: SIGNED_URL_TTL_SECONDS };
|
|
@@ -79,25 +85,31 @@ class SupportingFilesResource {
|
|
|
79
85
|
.eq('organization_id', this.auth.organization_id);
|
|
80
86
|
if (existingError)
|
|
81
87
|
throw (0, errors_1.mapPostgrestError)(existingError);
|
|
82
|
-
const existingFileNames = existing.map(
|
|
88
|
+
const existingFileNames = existing.map(fileNameOf);
|
|
89
|
+
// Each client name is validated once here, and the object key, the duplicate check and the
|
|
90
|
+
// row are all built from that same split — so what is stored is what presign and remove
|
|
91
|
+
// rebuild later.
|
|
92
|
+
const uploads = input.files.map((file) => ({
|
|
93
|
+
file,
|
|
94
|
+
...(0, paths_1.splitFileName)((0, paths_1.sanitizeFileName)(file.name)),
|
|
95
|
+
}));
|
|
83
96
|
// Every file is written to the bucket, duplicates included — an upsert refreshes the object.
|
|
84
|
-
for (let index = 0; index <
|
|
85
|
-
await Promise.all(
|
|
97
|
+
for (let index = 0; index < uploads.length; index += UPLOAD_BATCH_SIZE) {
|
|
98
|
+
await Promise.all(uploads.slice(index, index + UPLOAD_BATCH_SIZE).map(async ({ file, name, extension }) => {
|
|
86
99
|
const { error } = await this.supabase.storage
|
|
87
100
|
.from(BUCKET)
|
|
88
|
-
.upload(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
if (error)
|
|
93
|
-
throw (0, errors_1.mapStorageError)(error, `Failed to upload file: ${file.name}`);
|
|
101
|
+
.upload((0, paths_1.storagePath)(this.auth.organization_id, entity, entityId, name, extension), file, { cacheControl: '3600', upsert: true });
|
|
102
|
+
if (error) {
|
|
103
|
+
throw (0, errors_1.mapStorageError)(error, `Failed to upload file: ${fileNameOf({ name, extension })}`);
|
|
104
|
+
}
|
|
94
105
|
}));
|
|
95
106
|
}
|
|
96
107
|
// Only files without an existing row get one — the rest were refreshed in place above.
|
|
97
|
-
const newFiles =
|
|
108
|
+
const newFiles = uploads.filter((file) => !existingFileNames.includes(fileNameOf(file)));
|
|
98
109
|
if (newFiles.length > 0) {
|
|
99
|
-
await this.table.insertMany(newFiles.map((
|
|
100
|
-
|
|
110
|
+
await this.table.insertMany(newFiles.map(({ name, extension }) => ({
|
|
111
|
+
name,
|
|
112
|
+
extension,
|
|
101
113
|
entity_type: entity,
|
|
102
114
|
entity_id: entityId,
|
|
103
115
|
organization_id: this.auth.organization_id,
|
|
@@ -113,10 +125,14 @@ class SupportingFilesResource {
|
|
|
113
125
|
const { error: storageError } = await this.supabase.storage
|
|
114
126
|
.from(BUCKET)
|
|
115
127
|
.remove([
|
|
116
|
-
(0, paths_1.storagePath)(data.entity_type, data.entity_id, data.name, data.extension),
|
|
128
|
+
(0, paths_1.storagePath)(this.auth.organization_id, data.entity_type, data.entity_id, data.name, data.extension),
|
|
117
129
|
]);
|
|
118
130
|
if (storageError) {
|
|
119
|
-
|
|
131
|
+
const fileName = fileNameOf({
|
|
132
|
+
name: data.name,
|
|
133
|
+
extension: data.extension,
|
|
134
|
+
});
|
|
135
|
+
throw (0, errors_1.mapStorageError)(storageError, `Failed to delete file: ${fileName}`);
|
|
120
136
|
}
|
|
121
137
|
}
|
|
122
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supporting-files/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMA,0EAAuF;AAEvF,oCAA+E;AAE/E,sCAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supporting-files/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The client-supplied file name, checked before it is allowed anywhere near an object key.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The name is half of the key, so a separator or a `..` in it would let an upload escape its
|
|
5
|
+
* entity's folder — and, now that the key starts with the organization, its tenant's folder.
|
|
6
|
+
* Anything that is not a plain file name is rejected outright rather than rewritten, so what the
|
|
7
|
+
* `supporting_files` row records is exactly what was stored.
|
|
8
|
+
*/
|
|
9
|
+
export declare const sanitizeFileName: (fileName: string) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Splits an uploaded file name into the `name` / `extension` columns, on the *last* dot — so
|
|
12
|
+
* `archive.tar.gz` is name `archive.tar`, extension `gz`, and `storagePath` rebuilds the key it
|
|
13
|
+
* was stored under. A name with no dot has no extension.
|
|
6
14
|
*/
|
|
7
15
|
export declare const splitFileName: (fileName: string) => {
|
|
8
16
|
name: string;
|
|
9
17
|
extension: string;
|
|
10
18
|
};
|
|
11
|
-
/**
|
|
12
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Where an object lives in the `supporting-files` bucket. The organization leads the key so a
|
|
21
|
+
* storage policy can scope objects by tenant — nothing below it is trusted for that.
|
|
22
|
+
*
|
|
23
|
+
* A data migration renames the existing objects (keyed `entity/entityId/file`) into their
|
|
24
|
+
* organization's prefix; keys written from here already carry it.
|
|
25
|
+
*/
|
|
26
|
+
export declare const storagePath: (organizationId: string, entityType: string, entityId: string, name: string, extension: string) => string;
|