@managemint-solutions/sdk 0.18.0 → 0.20.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/billing/dto.d.ts +4 -0
- package/dist/billing/dto.js +5 -1
- package/dist/billing/dto.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/clients/dto.js +4 -4
- package/dist/index.d.ts +4 -1
- package/dist/index.js +12 -1
- package/dist/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 +8 -0
- package/dist/notifications/index.js +17 -2
- package/dist/notifications/index.js.map +1 -1
- package/dist/organizations/dto.js +1 -1
- package/dist/projects/dto.js +14 -9
- package/dist/projects/dto.js.map +1 -1
- package/dist/service-client/index.d.ts +2 -0
- package/dist/service-client/index.js +7 -0
- package/dist/service-client/index.js.map +1 -1
- package/dist/statuses/dto.js +1 -1
- package/dist/support/tickets/dto.d.ts +33 -0
- package/dist/support/tickets/dto.js +141 -0
- package/dist/support/tickets/dto.js.map +1 -0
- package/dist/support/tickets/index.d.ts +161 -0
- package/dist/support/tickets/index.js +443 -0
- package/dist/support/tickets/index.js.map +1 -0
- package/dist/supporting-files/dto.js +2 -2
- package/dist/tasks/dto.js +20 -13
- package/dist/tasks/dto.js.map +1 -1
- package/dist/transforms.d.ts +2 -2
- package/dist/transforms.js +10 -6
- package/dist/transforms.js.map +1 -1
- package/dist/users/dto.d.ts +30 -1
- package/dist/users/dto.js +126 -2
- package/dist/users/dto.js.map +1 -1
- package/dist/users/index.d.ts +13 -0
- package/dist/users/index.js +32 -0
- package/dist/users/index.js.map +1 -1
- package/dist/users/paths.d.ts +24 -0
- package/dist/users/paths.js +39 -0
- package/dist/users/paths.js.map +1 -0
- package/package.json +8 -3
package/dist/transforms.js
CHANGED
|
@@ -3,25 +3,29 @@
|
|
|
3
3
|
// select strings and their list results.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.restoredPatch = exports.deletedPatch = exports.unarchivedPatch = exports.archivedPatch = exports.toMmsList = exports.USER_PROFILE_EMBED = exports.toDateInput = exports.orIlike = exports.ilikeContains = exports.parseEntityIdFilter = void 0;
|
|
6
|
-
|
|
6
|
+
// v7, to match the `mms_id` columns these filters compare against — `public.uuidv7()` is the
|
|
7
|
+
// default on every table. This is the gate in front of `@IsUUID('7')`, so a stricter version
|
|
8
|
+
// here would null the id out before validation ever saw it, and a looser one would let a value
|
|
9
|
+
// through that the DTO then rejects.
|
|
10
|
+
const UUID_V7 = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
7
11
|
/**
|
|
8
|
-
* The `client_id` / `project_id` list filters accept either a plain UUID
|
|
12
|
+
* The `client_id` / `project_id` list filters accept either a plain UUID v7 or the base64-JSON
|
|
9
13
|
* option value the portal's selects send (`{ mms_id }`, or `{ id }` as a fallback). Anything that
|
|
10
|
-
* is not one of those — including a value that decodes to JSON without a UUID
|
|
14
|
+
* is not one of those — including a value that decodes to JSON without a UUID v7 — cannot filter
|
|
11
15
|
* anything, so it becomes `null` and the filter is skipped.
|
|
12
16
|
*/
|
|
13
17
|
const parseEntityIdFilter = (value) => {
|
|
14
18
|
if (!value)
|
|
15
19
|
return null;
|
|
16
|
-
// If the incoming value is already a UUID
|
|
17
|
-
if (typeof value === 'string' &&
|
|
20
|
+
// If the incoming value is already a UUID v7, use it directly
|
|
21
|
+
if (typeof value === 'string' && UUID_V7.test(value))
|
|
18
22
|
return value;
|
|
19
23
|
// Otherwise attempt to decode as base64 JSON and extract mms_id
|
|
20
24
|
try {
|
|
21
25
|
const decoded = atob(value);
|
|
22
26
|
const parsed = JSON.parse(decoded);
|
|
23
27
|
const id = parsed?.mms_id ?? parsed?.id ?? null;
|
|
24
|
-
return (typeof id === 'string' &&
|
|
28
|
+
return (typeof id === 'string' && UUID_V7.test(id)) ? id : null;
|
|
25
29
|
}
|
|
26
30
|
catch {
|
|
27
31
|
return null;
|
package/dist/transforms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"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"}
|
package/dist/users/dto.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateUserDto as CreateUserDtoType, GetUsersDto as GetUsersDtoType, UpdateUserDto as UpdateUserDtoType, UserIdDto as UserIdDtoType } from '@managemint-solutions/entities/users/dto';
|
|
1
|
+
import type { CreateUserDto as CreateUserDtoType, GetUsersDto as GetUsersDtoType, UpdateMyProfileDto as UpdateMyProfileDtoType, UpdateUserDto as UpdateUserDtoType, UserIdDto as UserIdDtoType } from '@managemint-solutions/entities/users/dto';
|
|
2
2
|
import { EmergencyContactRelationship, EmploymentType } from '@managemint-solutions/entities/users/enum';
|
|
3
3
|
export declare class UserIdDto implements UserIdDtoType {
|
|
4
4
|
readonly userId: string;
|
|
@@ -15,6 +15,9 @@ export declare class AddUserDto implements CreateUserDtoType {
|
|
|
15
15
|
* The client's idempotency key for the pro-rata seat charge (principle 1).
|
|
16
16
|
* Optional: an internally created user - the owner at signup - has no client
|
|
17
17
|
* request behind it, and one is generated for it.
|
|
18
|
+
*
|
|
19
|
+
* Still v4: the key is not an `mms_id` — the column is `text` — and the api fills a missing
|
|
20
|
+
* one with `randomUUID()`, which is v4.
|
|
18
21
|
*/
|
|
19
22
|
readonly idempotency_key?: string;
|
|
20
23
|
}
|
|
@@ -46,3 +49,29 @@ export declare class UpdateUserDto implements UpdateUserDtoType {
|
|
|
46
49
|
readonly emergency_contact_phone?: string | null;
|
|
47
50
|
readonly emergency_contact_email?: string | null;
|
|
48
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* `PATCH /users/me` — what a member may change about themselves.
|
|
54
|
+
*
|
|
55
|
+
* Every field here also appears on UpdateUserDto with the same constraints; what makes
|
|
56
|
+
* this a separate class is what it *omits*. The api's ValidationPipe runs
|
|
57
|
+
* `whitelist + forbidNonWhitelisted`, so a self-service request carrying `job_title`,
|
|
58
|
+
* `manager_id`, `employment_type`, `start_date`, `end_date` or `profile_image` is
|
|
59
|
+
* rejected with a 400 rather than silently ignored — the narrowing is the guard.
|
|
60
|
+
*/
|
|
61
|
+
export declare class UpdateMyProfileDto implements UpdateMyProfileDtoType {
|
|
62
|
+
readonly name: string;
|
|
63
|
+
readonly surname: string;
|
|
64
|
+
readonly phone: string;
|
|
65
|
+
readonly country_code: string;
|
|
66
|
+
readonly birthday?: string | null;
|
|
67
|
+
readonly social_facebook?: string | null;
|
|
68
|
+
readonly social_linkedin?: string | null;
|
|
69
|
+
readonly social_twitter?: string | null;
|
|
70
|
+
readonly social_instagram?: string | null;
|
|
71
|
+
readonly social_github?: string | null;
|
|
72
|
+
readonly social_website?: string | null;
|
|
73
|
+
readonly emergency_contact_name?: string | null;
|
|
74
|
+
readonly emergency_contact_relationship?: EmergencyContactRelationship | null;
|
|
75
|
+
readonly emergency_contact_phone?: string | null;
|
|
76
|
+
readonly emergency_contact_email?: string | null;
|
|
77
|
+
}
|
package/dist/users/dto.js
CHANGED
|
@@ -9,12 +9,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.UpdateUserDto = exports.GetUsersQueryDto = exports.AddUserDto = exports.UserIdDto = void 0;
|
|
12
|
+
exports.UpdateMyProfileDto = exports.UpdateUserDto = exports.GetUsersQueryDto = exports.AddUserDto = exports.UserIdDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
15
|
const validators_1 = require("../validators");
|
|
16
16
|
const enum_1 = require("@managemint-solutions/entities/users/enum");
|
|
17
17
|
class UserIdDto {
|
|
18
|
+
// Still v4, and not an oversight: `users.mms_id` *is* the GoTrue auth uid. The
|
|
19
|
+
// `on_auth_user_created` trigger inserts the row with `mms_id := auth.users.id`, so the
|
|
20
|
+
// column's `uuidv7()` default never fires and every user id is whatever GoTrue minted.
|
|
18
21
|
userId;
|
|
19
22
|
}
|
|
20
23
|
exports.UserIdDto = UserIdDto;
|
|
@@ -34,6 +37,9 @@ class AddUserDto {
|
|
|
34
37
|
* The client's idempotency key for the pro-rata seat charge (principle 1).
|
|
35
38
|
* Optional: an internally created user - the owner at signup - has no client
|
|
36
39
|
* request behind it, and one is generated for it.
|
|
40
|
+
*
|
|
41
|
+
* Still v4: the key is not an `mms_id` — the column is `text` — and the api fills a missing
|
|
42
|
+
* one with `randomUUID()`, which is v4.
|
|
37
43
|
*/
|
|
38
44
|
idempotency_key;
|
|
39
45
|
}
|
|
@@ -196,7 +202,9 @@ __decorate([
|
|
|
196
202
|
], UpdateUserDto.prototype, "job_title", void 0);
|
|
197
203
|
__decorate([
|
|
198
204
|
(0, class_validator_1.IsOptional)(),
|
|
199
|
-
(0, validators_1.IsNullable)()
|
|
205
|
+
(0, validators_1.IsNullable)()
|
|
206
|
+
// Still v4: a manager is a `users.mms_id`, which is the GoTrue auth uid (see UserIdDto).
|
|
207
|
+
,
|
|
200
208
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid manager ID format' }),
|
|
201
209
|
__metadata("design:type", Object)
|
|
202
210
|
], UpdateUserDto.prototype, "manager_id", void 0);
|
|
@@ -264,4 +272,120 @@ __decorate([
|
|
|
264
272
|
(0, class_validator_1.IsEmail)({}, { message: 'Invalid emergency contact email address' }),
|
|
265
273
|
__metadata("design:type", Object)
|
|
266
274
|
], UpdateUserDto.prototype, "emergency_contact_email", void 0);
|
|
275
|
+
/**
|
|
276
|
+
* `PATCH /users/me` — what a member may change about themselves.
|
|
277
|
+
*
|
|
278
|
+
* Every field here also appears on UpdateUserDto with the same constraints; what makes
|
|
279
|
+
* this a separate class is what it *omits*. The api's ValidationPipe runs
|
|
280
|
+
* `whitelist + forbidNonWhitelisted`, so a self-service request carrying `job_title`,
|
|
281
|
+
* `manager_id`, `employment_type`, `start_date`, `end_date` or `profile_image` is
|
|
282
|
+
* rejected with a 400 rather than silently ignored — the narrowing is the guard.
|
|
283
|
+
*/
|
|
284
|
+
class UpdateMyProfileDto {
|
|
285
|
+
name;
|
|
286
|
+
surname;
|
|
287
|
+
phone;
|
|
288
|
+
country_code;
|
|
289
|
+
birthday;
|
|
290
|
+
social_facebook;
|
|
291
|
+
social_linkedin;
|
|
292
|
+
social_twitter;
|
|
293
|
+
social_instagram;
|
|
294
|
+
social_github;
|
|
295
|
+
social_website;
|
|
296
|
+
emergency_contact_name;
|
|
297
|
+
emergency_contact_relationship;
|
|
298
|
+
emergency_contact_phone;
|
|
299
|
+
emergency_contact_email;
|
|
300
|
+
}
|
|
301
|
+
exports.UpdateMyProfileDto = UpdateMyProfileDto;
|
|
302
|
+
__decorate([
|
|
303
|
+
(0, class_validator_1.IsString)({ message: 'Invalid name' }),
|
|
304
|
+
(0, class_validator_1.MinLength)(1, { message: 'Name is required' }),
|
|
305
|
+
(0, class_validator_1.MaxLength)(50, { message: 'Name cannot be longer than 50 characters' }),
|
|
306
|
+
__metadata("design:type", String)
|
|
307
|
+
], UpdateMyProfileDto.prototype, "name", void 0);
|
|
308
|
+
__decorate([
|
|
309
|
+
(0, class_validator_1.IsString)({ message: 'Invalid surname' }),
|
|
310
|
+
(0, class_validator_1.MinLength)(1, { message: 'Surname is required' }),
|
|
311
|
+
(0, class_validator_1.MaxLength)(50, { message: 'Surname cannot be longer than 50 characters' }),
|
|
312
|
+
__metadata("design:type", String)
|
|
313
|
+
], UpdateMyProfileDto.prototype, "surname", void 0);
|
|
314
|
+
__decorate([
|
|
315
|
+
(0, class_validator_1.IsString)({ message: 'Invalid phone number' }),
|
|
316
|
+
__metadata("design:type", String)
|
|
317
|
+
], UpdateMyProfileDto.prototype, "phone", void 0);
|
|
318
|
+
__decorate([
|
|
319
|
+
(0, class_validator_1.IsString)({ message: 'Country code is required' }),
|
|
320
|
+
(0, class_validator_1.MinLength)(1, { message: 'Country code is required' }),
|
|
321
|
+
__metadata("design:type", String)
|
|
322
|
+
], UpdateMyProfileDto.prototype, "country_code", void 0);
|
|
323
|
+
__decorate([
|
|
324
|
+
(0, class_validator_1.IsOptional)(),
|
|
325
|
+
(0, validators_1.IsNullable)(),
|
|
326
|
+
(0, class_validator_1.IsDateString)({}, { message: 'Birthday must be a valid ISO 8601 date string' }),
|
|
327
|
+
__metadata("design:type", Object)
|
|
328
|
+
], UpdateMyProfileDto.prototype, "birthday", void 0);
|
|
329
|
+
__decorate([
|
|
330
|
+
(0, class_validator_1.IsOptional)(),
|
|
331
|
+
(0, validators_1.IsNullable)(),
|
|
332
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid Facebook URL' }),
|
|
333
|
+
__metadata("design:type", Object)
|
|
334
|
+
], UpdateMyProfileDto.prototype, "social_facebook", void 0);
|
|
335
|
+
__decorate([
|
|
336
|
+
(0, class_validator_1.IsOptional)(),
|
|
337
|
+
(0, validators_1.IsNullable)(),
|
|
338
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid LinkedIn URL' }),
|
|
339
|
+
__metadata("design:type", Object)
|
|
340
|
+
], UpdateMyProfileDto.prototype, "social_linkedin", void 0);
|
|
341
|
+
__decorate([
|
|
342
|
+
(0, class_validator_1.IsOptional)(),
|
|
343
|
+
(0, validators_1.IsNullable)(),
|
|
344
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid Twitter URL' }),
|
|
345
|
+
__metadata("design:type", Object)
|
|
346
|
+
], UpdateMyProfileDto.prototype, "social_twitter", void 0);
|
|
347
|
+
__decorate([
|
|
348
|
+
(0, class_validator_1.IsOptional)(),
|
|
349
|
+
(0, validators_1.IsNullable)(),
|
|
350
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid Instagram URL' }),
|
|
351
|
+
__metadata("design:type", Object)
|
|
352
|
+
], UpdateMyProfileDto.prototype, "social_instagram", void 0);
|
|
353
|
+
__decorate([
|
|
354
|
+
(0, class_validator_1.IsOptional)(),
|
|
355
|
+
(0, validators_1.IsNullable)(),
|
|
356
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid GitHub URL' }),
|
|
357
|
+
__metadata("design:type", Object)
|
|
358
|
+
], UpdateMyProfileDto.prototype, "social_github", void 0);
|
|
359
|
+
__decorate([
|
|
360
|
+
(0, class_validator_1.IsOptional)(),
|
|
361
|
+
(0, validators_1.IsNullable)(),
|
|
362
|
+
(0, class_validator_1.IsUrl)({}, { message: 'Invalid website URL' }),
|
|
363
|
+
__metadata("design:type", Object)
|
|
364
|
+
], UpdateMyProfileDto.prototype, "social_website", void 0);
|
|
365
|
+
__decorate([
|
|
366
|
+
(0, class_validator_1.IsOptional)(),
|
|
367
|
+
(0, validators_1.IsNullable)(),
|
|
368
|
+
(0, class_validator_1.IsString)({ message: 'Invalid emergency contact name' }),
|
|
369
|
+
(0, class_validator_1.MinLength)(1, { message: 'Emergency contact name is required' }),
|
|
370
|
+
(0, class_validator_1.MaxLength)(50, { message: 'Emergency contact name cannot be longer than 50 characters' }),
|
|
371
|
+
__metadata("design:type", Object)
|
|
372
|
+
], UpdateMyProfileDto.prototype, "emergency_contact_name", void 0);
|
|
373
|
+
__decorate([
|
|
374
|
+
(0, class_validator_1.IsOptional)(),
|
|
375
|
+
(0, validators_1.IsNullable)(),
|
|
376
|
+
(0, class_validator_1.IsEnum)(enum_1.EmergencyContactRelationship, { message: 'Invalid emergency contact relationship' }),
|
|
377
|
+
__metadata("design:type", Object)
|
|
378
|
+
], UpdateMyProfileDto.prototype, "emergency_contact_relationship", void 0);
|
|
379
|
+
__decorate([
|
|
380
|
+
(0, class_validator_1.IsOptional)(),
|
|
381
|
+
(0, validators_1.IsNullable)(),
|
|
382
|
+
(0, class_validator_1.IsString)({ message: 'Invalid emergency contact phone number' }),
|
|
383
|
+
__metadata("design:type", Object)
|
|
384
|
+
], UpdateMyProfileDto.prototype, "emergency_contact_phone", void 0);
|
|
385
|
+
__decorate([
|
|
386
|
+
(0, class_validator_1.IsOptional)(),
|
|
387
|
+
(0, validators_1.IsNullable)(),
|
|
388
|
+
(0, class_validator_1.IsEmail)({}, { message: 'Invalid emergency contact email address' }),
|
|
389
|
+
__metadata("design:type", Object)
|
|
390
|
+
], UpdateMyProfileDto.prototype, "emergency_contact_email", void 0);
|
|
267
391
|
//# sourceMappingURL=dto.js.map
|
package/dist/users/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/users/dto.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/users/dto.ts"],"names":[],"mappings":"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"}
|
package/dist/users/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type AuditActor, type AuditResource, type AuditRow } from '../audit';
|
|
|
4
4
|
import type { TypedSupabaseClient } from '../client';
|
|
5
5
|
import type { GetUsersQueryDto } from './dto';
|
|
6
6
|
export * from './dto';
|
|
7
|
+
export * from './paths';
|
|
7
8
|
/** The full users row. The api resolves its manager/created_by/last_updated_by ids into identities. */
|
|
8
9
|
export type UserRow = Record<string, unknown> & {
|
|
9
10
|
mms_id: string;
|
|
@@ -28,6 +29,18 @@ export declare class UsersResource {
|
|
|
28
29
|
activeCount(): Promise<number>;
|
|
29
30
|
isActive(userId: string): Promise<boolean>;
|
|
30
31
|
update(userId: string, patch: AuditRow): Promise<UserRow>;
|
|
32
|
+
/**
|
|
33
|
+
* Stores a member's avatar and puts its public URL on their row.
|
|
34
|
+
*
|
|
35
|
+
* Runs on the caller's own client: the storage policies scope writes to
|
|
36
|
+
* `organizationId/userId/`, and `profile_image` is in the `authenticated` column grant, so
|
|
37
|
+
* nothing here needs the service role. The row write goes through `update`, which means the
|
|
38
|
+
* avatar change is audited like any other.
|
|
39
|
+
*
|
|
40
|
+
* The previous object is removed *after* the new URL is committed, and a failed cleanup is
|
|
41
|
+
* swallowed — an orphaned object is a storage bill, a failed upload is a broken avatar.
|
|
42
|
+
*/
|
|
43
|
+
setProfileImage(userId: string, file: File): Promise<UserRow>;
|
|
31
44
|
/** `active` is not an archive flag, so a deactivation is recorded as a plain UPDATE. */
|
|
32
45
|
setActive(userId: string, active: boolean): Promise<UserRow>;
|
|
33
46
|
/**
|
package/dist/users/index.js
CHANGED
|
@@ -18,8 +18,11 @@ exports.UsersResource = void 0;
|
|
|
18
18
|
const enum_1 = require("@managemint-solutions/entities/audit-trail/enum");
|
|
19
19
|
const audit_1 = require("../audit");
|
|
20
20
|
const errors_1 = require("../errors");
|
|
21
|
+
const paths_1 = require("../supporting-files/paths");
|
|
21
22
|
const transforms_1 = require("../transforms");
|
|
23
|
+
const paths_2 = require("./paths");
|
|
22
24
|
__exportStar(require("./dto"), exports);
|
|
25
|
+
__exportStar(require("./paths"), exports);
|
|
23
26
|
const USERS_TABLE = {
|
|
24
27
|
table: 'users',
|
|
25
28
|
entityType: enum_1.AuditTrailEntityType.USER,
|
|
@@ -118,6 +121,35 @@ class UsersResource {
|
|
|
118
121
|
});
|
|
119
122
|
return this.getRow(userId);
|
|
120
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Stores a member's avatar and puts its public URL on their row.
|
|
126
|
+
*
|
|
127
|
+
* Runs on the caller's own client: the storage policies scope writes to
|
|
128
|
+
* `organizationId/userId/`, and `profile_image` is in the `authenticated` column grant, so
|
|
129
|
+
* nothing here needs the service role. The row write goes through `update`, which means the
|
|
130
|
+
* avatar change is audited like any other.
|
|
131
|
+
*
|
|
132
|
+
* The previous object is removed *after* the new URL is committed, and a failed cleanup is
|
|
133
|
+
* swallowed — an orphaned object is a storage bill, a failed upload is a broken avatar.
|
|
134
|
+
*/
|
|
135
|
+
async setProfileImage(userId, file) {
|
|
136
|
+
const { name, extension } = (0, paths_1.splitFileName)((0, paths_1.sanitizeFileName)(file.name));
|
|
137
|
+
const path = (0, paths_2.profileImagePath)(this.auth.organization_id, userId, name, extension);
|
|
138
|
+
const previous = (0, paths_2.profileImageObjectPath)((await this.getRow(userId)).profile_image);
|
|
139
|
+
const { error } = await this.supabase.storage
|
|
140
|
+
.from(paths_2.PROFILE_PICTURES_BUCKET)
|
|
141
|
+
.upload(path, file, { cacheControl: '3600', upsert: true });
|
|
142
|
+
if (error)
|
|
143
|
+
throw (0, errors_1.mapStorageError)(error, `Failed to upload profile image: ${file.name}`);
|
|
144
|
+
const row = await this.update(userId, {
|
|
145
|
+
profile_image: this.supabase.storage.from(paths_2.PROFILE_PICTURES_BUCKET).getPublicUrl(path).data
|
|
146
|
+
.publicUrl,
|
|
147
|
+
});
|
|
148
|
+
if (previous && previous !== path) {
|
|
149
|
+
await this.supabase.storage.from(paths_2.PROFILE_PICTURES_BUCKET).remove([previous]);
|
|
150
|
+
}
|
|
151
|
+
return row;
|
|
152
|
+
}
|
|
121
153
|
/** `active` is not an archive flag, so a deactivation is recorded as a plain UPDATE. */
|
|
122
154
|
async setActive(userId, active) {
|
|
123
155
|
return this.update(userId, { active });
|
package/dist/users/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/users/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0EAAuF;AAGvF,oCAOkB;AAElB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/users/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Storage bucket every profile picture lives in. Public-read; writes are policy-scoped. */
|
|
2
|
+
export declare const PROFILE_PICTURES_BUCKET = "profile-pictures";
|
|
3
|
+
/**
|
|
4
|
+
* Where a member's avatar lives in the `profile-pictures` bucket.
|
|
5
|
+
*
|
|
6
|
+
* `organizationId/userId/timestamp-file` — the organization leads so the storage policy can
|
|
7
|
+
* scope by tenant, and the user id follows so it can scope by owner. Neither segment comes
|
|
8
|
+
* from the client.
|
|
9
|
+
*
|
|
10
|
+
* The timestamp is what makes each upload a *new* key. The bucket is public, so the stored
|
|
11
|
+
* URL is served straight from the CDN with a year-long cache; overwriting a stable key in
|
|
12
|
+
* place would leave every viewer looking at the old avatar. The previous object is removed
|
|
13
|
+
* once the new URL is on the row.
|
|
14
|
+
*/
|
|
15
|
+
export declare const profileImagePath: (organizationId: string, userId: string, name: string, extension: string) => string;
|
|
16
|
+
/**
|
|
17
|
+
* The object key behind a stored `users.profile_image` URL, so the previous avatar can be
|
|
18
|
+
* removed when a new one replaces it.
|
|
19
|
+
*
|
|
20
|
+
* Returns null for anything that is not one of our own public URLs — the column also holds
|
|
21
|
+
* whatever `raw_user_meta_data` carried at signup (a Google or Gravatar URL), and those are
|
|
22
|
+
* not ours to delete.
|
|
23
|
+
*/
|
|
24
|
+
export declare const profileImageObjectPath: (profileImage: unknown) => string | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.profileImageObjectPath = exports.profileImagePath = exports.PROFILE_PICTURES_BUCKET = void 0;
|
|
4
|
+
/** Storage bucket every profile picture lives in. Public-read; writes are policy-scoped. */
|
|
5
|
+
exports.PROFILE_PICTURES_BUCKET = 'profile-pictures';
|
|
6
|
+
/**
|
|
7
|
+
* Where a member's avatar lives in the `profile-pictures` bucket.
|
|
8
|
+
*
|
|
9
|
+
* `organizationId/userId/timestamp-file` — the organization leads so the storage policy can
|
|
10
|
+
* scope by tenant, and the user id follows so it can scope by owner. Neither segment comes
|
|
11
|
+
* from the client.
|
|
12
|
+
*
|
|
13
|
+
* The timestamp is what makes each upload a *new* key. The bucket is public, so the stored
|
|
14
|
+
* URL is served straight from the CDN with a year-long cache; overwriting a stable key in
|
|
15
|
+
* place would leave every viewer looking at the old avatar. The previous object is removed
|
|
16
|
+
* once the new URL is on the row.
|
|
17
|
+
*/
|
|
18
|
+
const profileImagePath = (organizationId, userId, name, extension) => `${organizationId}/${userId}/${Date.now()}-${name}${extension ? `.${extension}` : ''}`;
|
|
19
|
+
exports.profileImagePath = profileImagePath;
|
|
20
|
+
/**
|
|
21
|
+
* The object key behind a stored `users.profile_image` URL, so the previous avatar can be
|
|
22
|
+
* removed when a new one replaces it.
|
|
23
|
+
*
|
|
24
|
+
* Returns null for anything that is not one of our own public URLs — the column also holds
|
|
25
|
+
* whatever `raw_user_meta_data` carried at signup (a Google or Gravatar URL), and those are
|
|
26
|
+
* not ours to delete.
|
|
27
|
+
*/
|
|
28
|
+
const profileImageObjectPath = (profileImage) => {
|
|
29
|
+
if (typeof profileImage !== 'string')
|
|
30
|
+
return null;
|
|
31
|
+
const marker = `/storage/v1/object/public/${exports.PROFILE_PICTURES_BUCKET}/`;
|
|
32
|
+
const index = profileImage.indexOf(marker);
|
|
33
|
+
if (index === -1)
|
|
34
|
+
return null;
|
|
35
|
+
const path = profileImage.slice(index + marker.length).split('?')[0];
|
|
36
|
+
return path ? decodeURIComponent(path) : null;
|
|
37
|
+
};
|
|
38
|
+
exports.profileImageObjectPath = profileImageObjectPath;
|
|
39
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/users/paths.ts"],"names":[],"mappings":";;;AAAA,4FAA4F;AAC/E,QAAA,uBAAuB,GAAG,kBAAkB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACI,MAAM,gBAAgB,GAAG,CAC9B,cAAsB,EACtB,MAAc,EACd,IAAY,EACZ,SAAiB,EACT,EAAE,CACV,GAAG,cAAc,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAN5E,QAAA,gBAAgB,oBAM4D;AAEzF;;;;;;;GAOG;AACI,MAAM,sBAAsB,GAAG,CAAC,YAAqB,EAAiB,EAAE;IAC7E,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,MAAM,GAAG,6BAA6B,+BAAuB,GAAG,CAAC;IACvE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC,CAAC;AATW,QAAA,sBAAsB,0BASjC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@managemint-solutions/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Typed Supabase data-access SDK for ManageMint Solutions",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Scott Bebington <scottbebington@gmail.com>",
|
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
"ts"
|
|
38
38
|
],
|
|
39
39
|
"rootDir": "src",
|
|
40
|
+
"setupFiles": [
|
|
41
|
+
"reflect-metadata"
|
|
42
|
+
],
|
|
40
43
|
"testRegex": ".*\\.spec\\.ts$",
|
|
41
44
|
"transform": {
|
|
42
45
|
"^.+\\.(t|j)s$": "ts-jest"
|
|
@@ -44,13 +47,14 @@
|
|
|
44
47
|
"testEnvironment": "node"
|
|
45
48
|
},
|
|
46
49
|
"dependencies": {
|
|
47
|
-
"@managemint-solutions/entities": "^1.
|
|
50
|
+
"@managemint-solutions/entities": "^1.5.0"
|
|
48
51
|
},
|
|
49
52
|
"peerDependencies": {
|
|
50
53
|
"@nestjs/common": "^11.0.0",
|
|
51
54
|
"@supabase/supabase-js": "^2.103.0",
|
|
52
55
|
"class-transformer": "^0.5.1",
|
|
53
|
-
"class-validator": "^0.15.0"
|
|
56
|
+
"class-validator": "^0.15.0",
|
|
57
|
+
"reflect-metadata": "^0.2.0"
|
|
54
58
|
},
|
|
55
59
|
"peerDependenciesMeta": {
|
|
56
60
|
"@nestjs/common": {
|
|
@@ -66,6 +70,7 @@
|
|
|
66
70
|
"class-transformer": "^0.5.1",
|
|
67
71
|
"class-validator": "^0.15.1",
|
|
68
72
|
"jest": "^30.0.0",
|
|
73
|
+
"reflect-metadata": "^0.2.2",
|
|
69
74
|
"ts-jest": "^29.2.5",
|
|
70
75
|
"typescript": "^5.7.3"
|
|
71
76
|
}
|