@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
|
@@ -1,18 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.storagePath = exports.splitFileName = void 0;
|
|
3
|
+
exports.storagePath = exports.splitFileName = exports.sanitizeFileName = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
/** Longest object-key segment a file name may become. */
|
|
6
|
+
const MAX_FILE_NAME_LENGTH = 255;
|
|
7
|
+
/** What a file name may be made of — no separators, no control characters, no leading dot. */
|
|
8
|
+
const SAFE_FILE_NAME = /^[A-Za-z0-9][A-Za-z0-9 ._()\-]*$/;
|
|
9
|
+
const invalidFileName = () => new errors_1.SupabaseClientError({ status: 400, error: 'Storage Error', message: 'Invalid file name' });
|
|
4
10
|
/**
|
|
5
|
-
*
|
|
11
|
+
* The client-supplied file name, checked before it is allowed anywhere near an object key.
|
|
6
12
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
13
|
+
* The name is half of the key, so a separator or a `..` in it would let an upload escape its
|
|
14
|
+
* entity's folder — and, now that the key starts with the organization, its tenant's folder.
|
|
15
|
+
* Anything that is not a plain file name is rejected outright rather than rewritten, so what the
|
|
16
|
+
* `supporting_files` row records is exactly what was stored.
|
|
9
17
|
*/
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
const sanitizeFileName = (fileName) => {
|
|
19
|
+
const trimmed = fileName.trim();
|
|
20
|
+
if (trimmed === '' ||
|
|
21
|
+
trimmed.length > MAX_FILE_NAME_LENGTH ||
|
|
22
|
+
trimmed === '.' ||
|
|
23
|
+
trimmed === '..' ||
|
|
24
|
+
trimmed.includes('/') ||
|
|
25
|
+
trimmed.includes('\\') ||
|
|
26
|
+
trimmed.includes('\0') ||
|
|
27
|
+
!SAFE_FILE_NAME.test(trimmed)) {
|
|
28
|
+
throw invalidFileName();
|
|
29
|
+
}
|
|
30
|
+
return trimmed;
|
|
31
|
+
};
|
|
32
|
+
exports.sanitizeFileName = sanitizeFileName;
|
|
33
|
+
/**
|
|
34
|
+
* Splits an uploaded file name into the `name` / `extension` columns, on the *last* dot — so
|
|
35
|
+
* `archive.tar.gz` is name `archive.tar`, extension `gz`, and `storagePath` rebuilds the key it
|
|
36
|
+
* was stored under. A name with no dot has no extension.
|
|
37
|
+
*/
|
|
38
|
+
const splitFileName = (fileName) => {
|
|
39
|
+
const lastDot = fileName.lastIndexOf('.');
|
|
40
|
+
if (lastDot <= 0)
|
|
41
|
+
return { name: fileName, extension: '' };
|
|
42
|
+
return { name: fileName.slice(0, lastDot), extension: fileName.slice(lastDot + 1) };
|
|
43
|
+
};
|
|
14
44
|
exports.splitFileName = splitFileName;
|
|
15
|
-
/**
|
|
16
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Where an object lives in the `supporting-files` bucket. The organization leads the key so a
|
|
47
|
+
* storage policy can scope objects by tenant — nothing below it is trusted for that.
|
|
48
|
+
*
|
|
49
|
+
* A data migration renames the existing objects (keyed `entity/entityId/file`) into their
|
|
50
|
+
* organization's prefix; keys written from here already carry it.
|
|
51
|
+
*/
|
|
52
|
+
const storagePath = (organizationId, entityType, entityId, name, extension) => `${organizationId}/${entityType}/${entityId}/${name}${extension ? `.${extension}` : ''}`;
|
|
17
53
|
exports.storagePath = storagePath;
|
|
18
54
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/supporting-files/paths.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/supporting-files/paths.ts"],"names":[],"mappings":";;;AAAA,sCAAgD;AAEhD,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,8FAA8F;AAC9F,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,MAAM,eAAe,GAAG,GAAwB,EAAE,CAChD,IAAI,4BAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAEjG;;;;;;;GAOG;AACI,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEhC,IACE,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,MAAM,GAAG,oBAAoB;QACrC,OAAO,KAAK,GAAG;QACf,OAAO,KAAK,IAAI;QAChB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAC7B,CAAC;QACD,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAjBW,QAAA,gBAAgB,oBAiB3B;AAEF;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAuC,EAAE;IACrF,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAE3D,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC,CAAC;AALW,QAAA,aAAa,iBAKxB;AAEF;;;;;;GAMG;AACI,MAAM,WAAW,GAAG,CACzB,cAAsB,EACtB,UAAkB,EAClB,QAAgB,EAChB,IAAY,EACZ,SAAiB,EACT,EAAE,CACV,GAAG,cAAc,IAAI,UAAU,IAAI,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAP9E,QAAA,WAAW,eAOmE"}
|
package/dist/tasks/dto.js
CHANGED
|
@@ -21,7 +21,7 @@ class TaskIdDto {
|
|
|
21
21
|
}
|
|
22
22
|
exports.TaskIdDto = TaskIdDto;
|
|
23
23
|
__decorate([
|
|
24
|
-
(0, class_validator_1.IsUUID)('
|
|
24
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid project ID format' }) // sic — the api's message, kept for parity
|
|
25
25
|
,
|
|
26
26
|
__metadata("design:type", String)
|
|
27
27
|
], TaskIdDto.prototype, "taskId", void 0);
|
|
@@ -73,19 +73,22 @@ __decorate([
|
|
|
73
73
|
(0, class_validator_1.IsOptional)(),
|
|
74
74
|
(0, validators_1.IsNullable)(),
|
|
75
75
|
(0, class_transformer_1.Transform)(({ value }) => (0, transforms_1.parseEntityIdFilter)(value), { toClassOnly: true }),
|
|
76
|
-
(0, class_validator_1.IsUUID)('
|
|
76
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid client ID format' }),
|
|
77
77
|
__metadata("design:type", Object)
|
|
78
78
|
], GetTasksDto.prototype, "client_id", void 0);
|
|
79
79
|
__decorate([
|
|
80
80
|
(0, class_validator_1.IsOptional)(),
|
|
81
81
|
(0, validators_1.IsNullable)(),
|
|
82
82
|
(0, class_transformer_1.Transform)(({ value }) => (0, transforms_1.parseEntityIdFilter)(value), { toClassOnly: true }),
|
|
83
|
-
(0, class_validator_1.IsUUID)('
|
|
83
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid project ID format' }),
|
|
84
84
|
__metadata("design:type", Object)
|
|
85
85
|
], GetTasksDto.prototype, "project_id", void 0);
|
|
86
86
|
__decorate([
|
|
87
87
|
(0, class_validator_1.IsOptional)(),
|
|
88
|
-
(0, validators_1.IsNullable)()
|
|
88
|
+
(0, validators_1.IsNullable)()
|
|
89
|
+
// Still v4: the assignee is a `users.mms_id`, and that column carries the GoTrue auth uid the
|
|
90
|
+
// signup trigger copies out of `auth.users.id` — the table's uuidv7 default never fires.
|
|
91
|
+
,
|
|
89
92
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid assigned to ID format' }),
|
|
90
93
|
__metadata("design:type", Object)
|
|
91
94
|
], GetTasksDto.prototype, "assigned_to_id", void 0);
|
|
@@ -129,7 +132,7 @@ __decorate([
|
|
|
129
132
|
(0, class_validator_1.IsOptional)(),
|
|
130
133
|
(0, validators_1.IsNullable)(),
|
|
131
134
|
(0, class_transformer_1.Transform)(({ value }) => value ? value.split(',').map((id) => id.trim()) : null, { toClassOnly: true }),
|
|
132
|
-
(0, class_validator_1.IsUUID)('
|
|
135
|
+
(0, class_validator_1.IsUUID)('7', { each: true, message: 'Invalid status ID format' }),
|
|
133
136
|
__metadata("design:type", Object)
|
|
134
137
|
], GetTasksDto.prototype, "status_id_in", void 0);
|
|
135
138
|
__decorate([
|
|
@@ -187,7 +190,7 @@ __decorate([
|
|
|
187
190
|
__decorate([
|
|
188
191
|
(0, class_validator_1.IsOptional)(),
|
|
189
192
|
(0, validators_1.IsNullable)(),
|
|
190
|
-
(0, class_validator_1.IsUUID)('
|
|
193
|
+
(0, class_validator_1.IsUUID)('7', { each: true, message: 'Each status ID must be a valid UUID v7' }),
|
|
191
194
|
__metadata("design:type", Object)
|
|
192
195
|
], CreateTaskDto.prototype, "status_id", void 0);
|
|
193
196
|
__decorate([
|
|
@@ -199,20 +202,22 @@ __decorate([
|
|
|
199
202
|
], CreateTaskDto.prototype, "priority", void 0);
|
|
200
203
|
__decorate([
|
|
201
204
|
(0, class_validator_1.IsOptional)(),
|
|
202
|
-
(0, validators_1.IsNullable)()
|
|
205
|
+
(0, validators_1.IsNullable)()
|
|
206
|
+
// Still v4 — an assignee is a `users.mms_id`, the GoTrue auth uid (see GetTasksDto).
|
|
207
|
+
,
|
|
203
208
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid assigned to ID format' }),
|
|
204
209
|
__metadata("design:type", Object)
|
|
205
210
|
], CreateTaskDto.prototype, "assigned_to_id", void 0);
|
|
206
211
|
__decorate([
|
|
207
212
|
(0, class_validator_1.IsOptional)(),
|
|
208
213
|
(0, validators_1.IsNullable)(),
|
|
209
|
-
(0, class_validator_1.IsUUID)('
|
|
214
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid project ID format' }),
|
|
210
215
|
__metadata("design:type", Object)
|
|
211
216
|
], CreateTaskDto.prototype, "project_id", void 0);
|
|
212
217
|
__decorate([
|
|
213
218
|
(0, class_validator_1.IsOptional)(),
|
|
214
219
|
(0, validators_1.IsNullable)(),
|
|
215
|
-
(0, class_validator_1.IsUUID)('
|
|
220
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid client ID format' }),
|
|
216
221
|
__metadata("design:type", Object)
|
|
217
222
|
], CreateTaskDto.prototype, "client_id", void 0);
|
|
218
223
|
class UpdateTaskDto {
|
|
@@ -257,7 +262,7 @@ __decorate([
|
|
|
257
262
|
__decorate([
|
|
258
263
|
(0, class_validator_1.IsOptional)(),
|
|
259
264
|
(0, validators_1.IsNullable)(),
|
|
260
|
-
(0, class_validator_1.IsUUID)('
|
|
265
|
+
(0, class_validator_1.IsUUID)('7', { each: true, message: 'Each status ID must be a valid UUID v7' }),
|
|
261
266
|
__metadata("design:type", Object)
|
|
262
267
|
], UpdateTaskDto.prototype, "status_id", void 0);
|
|
263
268
|
__decorate([
|
|
@@ -269,20 +274,22 @@ __decorate([
|
|
|
269
274
|
], UpdateTaskDto.prototype, "priority", void 0);
|
|
270
275
|
__decorate([
|
|
271
276
|
(0, class_validator_1.IsOptional)(),
|
|
272
|
-
(0, validators_1.IsNullable)()
|
|
277
|
+
(0, validators_1.IsNullable)()
|
|
278
|
+
// Still v4 — an assignee is a `users.mms_id`, the GoTrue auth uid (see GetTasksDto).
|
|
279
|
+
,
|
|
273
280
|
(0, class_validator_1.IsUUID)('4', { message: 'Invalid assigned to ID format' }),
|
|
274
281
|
__metadata("design:type", Object)
|
|
275
282
|
], UpdateTaskDto.prototype, "assigned_to_id", void 0);
|
|
276
283
|
__decorate([
|
|
277
284
|
(0, class_validator_1.IsOptional)(),
|
|
278
285
|
(0, validators_1.IsNullable)(),
|
|
279
|
-
(0, class_validator_1.IsUUID)('
|
|
286
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid project ID format' }),
|
|
280
287
|
__metadata("design:type", Object)
|
|
281
288
|
], UpdateTaskDto.prototype, "project_id", void 0);
|
|
282
289
|
__decorate([
|
|
283
290
|
(0, class_validator_1.IsOptional)(),
|
|
284
291
|
(0, validators_1.IsNullable)(),
|
|
285
|
-
(0, class_validator_1.IsUUID)('
|
|
292
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid client ID format' }),
|
|
286
293
|
__metadata("design:type", Object)
|
|
287
294
|
], UpdateTaskDto.prototype, "client_id", void 0);
|
|
288
295
|
//# sourceMappingURL=dto.js.map
|
package/dist/tasks/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/tasks/dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA8I;AAC9I,yDAA8C;AAO9C,8CAAoD;AACpD,8CAA2C;AAE3C,+FAA+F;AAC/F,8BAA8B;AAE9B,MAAa,SAAS;IAEX,MAAM,CAAU;CAC1B;AAHD,8BAGC;AADU;IADR,IAAA,wBAAM,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC,2CAA2C;;;yCACzE;AAG3B,kGAAkG;AAClG,gGAAgG;AAChG,2EAA2E;AAC3E,MAAa,WAAW;IAMb,MAAM,CAAiB;IAMvB,IAAI,GAAW,CAAC,CAAC;IAOjB,SAAS,GAAW,EAAE,CAAC;IAMvB,SAAS,CAAiB;IAM1B,UAAU,CAAiB;
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/tasks/dto.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks/index.js
CHANGED
|
@@ -18,6 +18,7 @@ exports.TasksResource = 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 transforms_1 = require("../transforms");
|
|
21
22
|
__exportStar(require("./dto"), exports);
|
|
22
23
|
// The public contract is the shared TaskSummary / TaskEntity from @managemint-solutions/entities;
|
|
23
24
|
// the casts at the returns declare the shape the select strings below produce (the columns are
|
|
@@ -94,8 +95,7 @@ class TasksResource {
|
|
|
94
95
|
.order('created_at', { ascending: false })
|
|
95
96
|
.range(offset, offset + pageSize - 1);
|
|
96
97
|
if (trimmedSearch) {
|
|
97
|
-
|
|
98
|
-
tasksQuery = tasksQuery.or(`name.ilike.%${escapedSearch}%,description.ilike.%${escapedSearch}%`);
|
|
98
|
+
tasksQuery = tasksQuery.or((0, transforms_1.orIlike)(['name', 'description'], trimmedSearch));
|
|
99
99
|
}
|
|
100
100
|
if (query.client_id) {
|
|
101
101
|
tasksQuery = tasksQuery.eq('client_id', query.client_id);
|
|
@@ -133,17 +133,7 @@ class TasksResource {
|
|
|
133
133
|
const { data, error, count } = await tasksQuery;
|
|
134
134
|
if (error)
|
|
135
135
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
136
|
-
|
|
137
|
-
const totalPages = totalEstimated > 0 ? Math.ceil(totalEstimated / pageSize) : 0;
|
|
138
|
-
return {
|
|
139
|
-
results: (data ?? []),
|
|
140
|
-
page,
|
|
141
|
-
per_page: pageSize,
|
|
142
|
-
count: totalEstimated,
|
|
143
|
-
total_pages: totalPages,
|
|
144
|
-
has_next_page: page < totalPages,
|
|
145
|
-
has_previous_page: page > 1,
|
|
146
|
-
};
|
|
136
|
+
return (0, transforms_1.toMmsList)(data, page, pageSize, count);
|
|
147
137
|
}
|
|
148
138
|
async getById(taskId) {
|
|
149
139
|
const { data, error } = await this.supabase
|
|
@@ -176,36 +166,20 @@ class TasksResource {
|
|
|
176
166
|
return this.getById(taskId);
|
|
177
167
|
}
|
|
178
168
|
async archive(taskId) {
|
|
179
|
-
await this.table.transition(taskId, enum_1.AuditTrailAction.ARCHIVE,
|
|
180
|
-
archived: true,
|
|
181
|
-
archived_at: new Date().toISOString(),
|
|
182
|
-
archived_by: this.auth.mms_id,
|
|
183
|
-
});
|
|
169
|
+
await this.table.transition(taskId, enum_1.AuditTrailAction.ARCHIVE, (0, transforms_1.archivedPatch)(this.auth.mms_id));
|
|
184
170
|
return this.getById(taskId);
|
|
185
171
|
}
|
|
186
172
|
async unarchive(taskId) {
|
|
187
|
-
await this.table.transition(taskId, enum_1.AuditTrailAction.UNARCHIVE,
|
|
188
|
-
archived: false,
|
|
189
|
-
unarchived_at: new Date().toISOString(),
|
|
190
|
-
unarchived_by: this.auth.mms_id,
|
|
191
|
-
});
|
|
173
|
+
await this.table.transition(taskId, enum_1.AuditTrailAction.UNARCHIVE, (0, transforms_1.unarchivedPatch)(this.auth.mms_id));
|
|
192
174
|
return this.getById(taskId);
|
|
193
175
|
}
|
|
194
176
|
async restore(taskId) {
|
|
195
|
-
await this.table.transition(taskId, enum_1.AuditTrailAction.RESTORE,
|
|
196
|
-
deleted: false,
|
|
197
|
-
restored_at: new Date().toISOString(),
|
|
198
|
-
restored_by: this.auth.mms_id,
|
|
199
|
-
});
|
|
177
|
+
await this.table.transition(taskId, enum_1.AuditTrailAction.RESTORE, (0, transforms_1.restoredPatch)(this.auth.mms_id));
|
|
200
178
|
return this.getById(taskId);
|
|
201
179
|
}
|
|
202
180
|
/** Soft delete — the row stays, flagged `deleted`, and `restore()` brings it back. */
|
|
203
181
|
async remove(taskId) {
|
|
204
|
-
await this.table.transition(taskId, enum_1.AuditTrailAction.DELETE,
|
|
205
|
-
deleted: true,
|
|
206
|
-
deleted_at: new Date().toISOString(),
|
|
207
|
-
deleted_by: this.auth.mms_id,
|
|
208
|
-
});
|
|
182
|
+
await this.table.transition(taskId, enum_1.AuditTrailAction.DELETE, (0, transforms_1.deletedPatch)(this.auth.mms_id));
|
|
209
183
|
}
|
|
210
184
|
}
|
|
211
185
|
exports.TasksResource = TasksResource;
|
package/dist/tasks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,0EAGyD;AAEzD,oCAA+E;AAE/E,sCAA8C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"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"}
|
package/dist/transforms.d.ts
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import type { MmsList } from '@managemint-solutions/entities/common';
|
|
1
2
|
/**
|
|
2
|
-
* The `client_id` / `project_id` list filters accept either a plain UUID
|
|
3
|
+
* The `client_id` / `project_id` list filters accept either a plain UUID v7 or the base64-JSON
|
|
3
4
|
* option value the portal's selects send (`{ mms_id }`, or `{ id }` as a fallback). Anything that
|
|
4
|
-
* is not one of those — including a value that decodes to JSON without a UUID
|
|
5
|
+
* is not one of those — including a value that decodes to JSON without a UUID v7 — cannot filter
|
|
5
6
|
* anything, so it becomes `null` and the filter is skipped.
|
|
6
7
|
*/
|
|
7
8
|
export declare const parseEntityIdFilter: (value: unknown) => string | null;
|
|
9
|
+
/**
|
|
10
|
+
* A `%value%` ilike pattern, double-quoted for PostgREST's `or=(...)` grammar so `,`, `(`, `)`,
|
|
11
|
+
* `.`, `"` and `\` in the search stay literal instead of being read as more filters. Inside the
|
|
12
|
+
* quotes only `"` and `\` need escaping, which is what PostgREST defines — the `\,` the list
|
|
13
|
+
* endpoints used to emit was never an escape at all. LIKE's own wildcards `%` and `_` are left
|
|
14
|
+
* alone and still match as wildcards; they only widen the caller's own search, never its scope.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ilikeContains: (value: string) => string;
|
|
17
|
+
/** The `or=(...)` argument matching `search` against any of `columns` — `name.ilike."%x%",…`. */
|
|
18
|
+
export declare const orIlike: (columns: readonly string[], search: string) => string;
|
|
8
19
|
/**
|
|
9
20
|
* `date` columns take an ISO string. The shared `CreateProjectDto`/`UpdateProjectDto` types
|
|
10
21
|
* declare `Date`, but over the wire the value is the validated `@IsDateString` string — which
|
|
@@ -12,3 +23,35 @@ export declare const parseEntityIdFilter: (value: unknown) => string | null;
|
|
|
12
23
|
* real `Date` (a portal caller) is serialized.
|
|
13
24
|
*/
|
|
14
25
|
export declare const toDateInput: (value: Date | string | null | undefined) => string | null | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* The `user_profiles` embed the detail selects name column by column, parentheses included. Its
|
|
28
|
+
* indentation is part of the string so the select strings it is spliced into read as they did
|
|
29
|
+
* when each one spelled the columns out.
|
|
30
|
+
*/
|
|
31
|
+
export declare const USER_PROFILE_EMBED: "(\n mms_id,\n name,\n surname,\n email,\n profile_image\n )";
|
|
32
|
+
/**
|
|
33
|
+
* The `MmsList` envelope every paginated read returns. `rows` is `unknown` because each select
|
|
34
|
+
* string produces its own row shape — the caller's `T` is what declares it. `count` is
|
|
35
|
+
* PostgREST's estimate, so an empty page reports 0 total pages rather than 1.
|
|
36
|
+
*/
|
|
37
|
+
export declare const toMmsList: <T>(rows: unknown, page: number, pageSize: number, count: number | null) => MmsList<T>;
|
|
38
|
+
export declare const archivedPatch: (by: string) => {
|
|
39
|
+
archived: boolean;
|
|
40
|
+
archived_at: string;
|
|
41
|
+
archived_by: string;
|
|
42
|
+
};
|
|
43
|
+
export declare const unarchivedPatch: (by: string) => {
|
|
44
|
+
archived: boolean;
|
|
45
|
+
unarchived_at: string;
|
|
46
|
+
unarchived_by: string;
|
|
47
|
+
};
|
|
48
|
+
export declare const deletedPatch: (by: string) => {
|
|
49
|
+
deleted: boolean;
|
|
50
|
+
deleted_at: string;
|
|
51
|
+
deleted_by: string;
|
|
52
|
+
};
|
|
53
|
+
export declare const restoredPatch: (by: string) => {
|
|
54
|
+
deleted: boolean;
|
|
55
|
+
restored_at: string;
|
|
56
|
+
restored_by: string;
|
|
57
|
+
};
|
package/dist/transforms.js
CHANGED
|
@@ -1,32 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Small conversions shared by the DTOs' `@Transform`s
|
|
2
|
+
// Small conversions shared by the DTOs' `@Transform`s, the resources' write payloads, their
|
|
3
|
+
// select strings and their list results.
|
|
3
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.toDateInput = exports.parseEntityIdFilter = void 0;
|
|
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
|
+
// 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;
|
|
6
11
|
/**
|
|
7
|
-
* 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
|
|
8
13
|
* option value the portal's selects send (`{ mms_id }`, or `{ id }` as a fallback). Anything that
|
|
9
|
-
* 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
|
|
10
15
|
* anything, so it becomes `null` and the filter is skipped.
|
|
11
16
|
*/
|
|
12
17
|
const parseEntityIdFilter = (value) => {
|
|
13
18
|
if (!value)
|
|
14
19
|
return null;
|
|
15
|
-
// If the incoming value is already a UUID
|
|
16
|
-
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))
|
|
17
22
|
return value;
|
|
18
23
|
// Otherwise attempt to decode as base64 JSON and extract mms_id
|
|
19
24
|
try {
|
|
20
25
|
const decoded = atob(value);
|
|
21
26
|
const parsed = JSON.parse(decoded);
|
|
22
27
|
const id = parsed?.mms_id ?? parsed?.id ?? null;
|
|
23
|
-
return (typeof id === 'string' &&
|
|
28
|
+
return (typeof id === 'string' && UUID_V7.test(id)) ? id : null;
|
|
24
29
|
}
|
|
25
30
|
catch {
|
|
26
31
|
return null;
|
|
27
32
|
}
|
|
28
33
|
};
|
|
29
34
|
exports.parseEntityIdFilter = parseEntityIdFilter;
|
|
35
|
+
/**
|
|
36
|
+
* A `%value%` ilike pattern, double-quoted for PostgREST's `or=(...)` grammar so `,`, `(`, `)`,
|
|
37
|
+
* `.`, `"` and `\` in the search stay literal instead of being read as more filters. Inside the
|
|
38
|
+
* quotes only `"` and `\` need escaping, which is what PostgREST defines — the `\,` the list
|
|
39
|
+
* endpoints used to emit was never an escape at all. LIKE's own wildcards `%` and `_` are left
|
|
40
|
+
* alone and still match as wildcards; they only widen the caller's own search, never its scope.
|
|
41
|
+
*/
|
|
42
|
+
const ilikeContains = (value) => `"%${value.replace(/[\\"]/g, '\\$&')}%"`;
|
|
43
|
+
exports.ilikeContains = ilikeContains;
|
|
44
|
+
/** The `or=(...)` argument matching `search` against any of `columns` — `name.ilike."%x%",…`. */
|
|
45
|
+
const orIlike = (columns, search) => columns.map((column) => `${column}.ilike.${(0, exports.ilikeContains)(search)}`).join(',');
|
|
46
|
+
exports.orIlike = orIlike;
|
|
30
47
|
/**
|
|
31
48
|
* `date` columns take an ISO string. The shared `CreateProjectDto`/`UpdateProjectDto` types
|
|
32
49
|
* declare `Date`, but over the wire the value is the validated `@IsDateString` string — which
|
|
@@ -35,4 +52,62 @@ exports.parseEntityIdFilter = parseEntityIdFilter;
|
|
|
35
52
|
*/
|
|
36
53
|
const toDateInput = (value) => value instanceof Date ? value.toISOString() : value;
|
|
37
54
|
exports.toDateInput = toDateInput;
|
|
55
|
+
/**
|
|
56
|
+
* The `user_profiles` embed the detail selects name column by column, parentheses included. Its
|
|
57
|
+
* indentation is part of the string so the select strings it is spliced into read as they did
|
|
58
|
+
* when each one spelled the columns out.
|
|
59
|
+
*/
|
|
60
|
+
exports.USER_PROFILE_EMBED = `(
|
|
61
|
+
mms_id,
|
|
62
|
+
name,
|
|
63
|
+
surname,
|
|
64
|
+
email,
|
|
65
|
+
profile_image
|
|
66
|
+
)`;
|
|
67
|
+
/**
|
|
68
|
+
* The `MmsList` envelope every paginated read returns. `rows` is `unknown` because each select
|
|
69
|
+
* string produces its own row shape — the caller's `T` is what declares it. `count` is
|
|
70
|
+
* PostgREST's estimate, so an empty page reports 0 total pages rather than 1.
|
|
71
|
+
*/
|
|
72
|
+
const toMmsList = (rows, page, pageSize, count) => {
|
|
73
|
+
const totalEstimated = count ?? 0;
|
|
74
|
+
const totalPages = totalEstimated > 0 ? Math.ceil(totalEstimated / pageSize) : 0;
|
|
75
|
+
return {
|
|
76
|
+
results: (rows ?? []),
|
|
77
|
+
page,
|
|
78
|
+
per_page: pageSize,
|
|
79
|
+
count: totalEstimated,
|
|
80
|
+
total_pages: totalPages,
|
|
81
|
+
has_next_page: page < totalPages,
|
|
82
|
+
has_previous_page: page > 1,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.toMmsList = toMmsList;
|
|
86
|
+
// The soft archive/delete patches projects, tasks and clients all write: the flag the transition
|
|
87
|
+
// sets, plus the who/when stamps named after it. `unarchived`/`restored` clear the flag their
|
|
88
|
+
// counterpart set and stamp their own columns — the earlier ones stay as the history.
|
|
89
|
+
const archivedPatch = (by) => ({
|
|
90
|
+
archived: true,
|
|
91
|
+
archived_at: new Date().toISOString(),
|
|
92
|
+
archived_by: by,
|
|
93
|
+
});
|
|
94
|
+
exports.archivedPatch = archivedPatch;
|
|
95
|
+
const unarchivedPatch = (by) => ({
|
|
96
|
+
archived: false,
|
|
97
|
+
unarchived_at: new Date().toISOString(),
|
|
98
|
+
unarchived_by: by,
|
|
99
|
+
});
|
|
100
|
+
exports.unarchivedPatch = unarchivedPatch;
|
|
101
|
+
const deletedPatch = (by) => ({
|
|
102
|
+
deleted: true,
|
|
103
|
+
deleted_at: new Date().toISOString(),
|
|
104
|
+
deleted_by: by,
|
|
105
|
+
});
|
|
106
|
+
exports.deletedPatch = deletedPatch;
|
|
107
|
+
const restoredPatch = (by) => ({
|
|
108
|
+
deleted: false,
|
|
109
|
+
restored_at: new Date().toISOString(),
|
|
110
|
+
restored_by: by,
|
|
111
|
+
});
|
|
112
|
+
exports.restoredPatch = restoredPatch;
|
|
38
113
|
//# sourceMappingURL=transforms.js.map
|
package/dist/transforms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"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"}
|
package/dist/users/dto.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/users/dto.js
CHANGED
|
@@ -15,6 +15,9 @@ 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);
|
package/dist/users/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/users/dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,qDAeyB;AACzB,yDAA8C;AAC9C,8CAA2C;AAC3C,oEAAyG;AAEzG,MAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/users/dto.ts"],"names":[],"mappings":"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"}
|