@managemint-solutions/sdk 0.8.0 → 0.16.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.
Files changed (74) hide show
  1. package/README.md +73 -1
  2. package/dist/additional-details/index.d.ts +3 -1
  3. package/dist/additional-details/index.js +15 -28
  4. package/dist/additional-details/index.js.map +1 -1
  5. package/dist/audit/dto.d.ts +13 -0
  6. package/dist/audit/dto.js +90 -0
  7. package/dist/audit/dto.js.map +1 -0
  8. package/dist/audit/index.d.ts +104 -0
  9. package/dist/audit/index.js +308 -0
  10. package/dist/audit/index.js.map +1 -0
  11. package/dist/billing/dto.d.ts +33 -0
  12. package/dist/billing/dto.js +71 -0
  13. package/dist/billing/dto.js.map +1 -0
  14. package/dist/billing/index.d.ts +35 -0
  15. package/dist/billing/index.js +115 -0
  16. package/dist/billing/index.js.map +1 -0
  17. package/dist/client.d.ts +12 -0
  18. package/dist/client.js +23 -7
  19. package/dist/client.js.map +1 -1
  20. package/dist/clients/index.d.ts +3 -1
  21. package/dist/clients/index.js +25 -62
  22. package/dist/clients/index.js.map +1 -1
  23. package/dist/index.d.ts +8 -0
  24. package/dist/index.js +8 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/nest/index.d.ts +22 -0
  27. package/dist/nest/index.js +28 -1
  28. package/dist/nest/index.js.map +1 -1
  29. package/dist/notes/index.d.ts +3 -1
  30. package/dist/notes/index.js +16 -27
  31. package/dist/notes/index.js.map +1 -1
  32. package/dist/notifications/dto.d.ts +10 -0
  33. package/dist/notifications/dto.js +63 -0
  34. package/dist/notifications/dto.js.map +1 -0
  35. package/dist/notifications/index.d.ts +139 -0
  36. package/dist/notifications/index.js +354 -0
  37. package/dist/notifications/index.js.map +1 -0
  38. package/dist/organizations/dto.d.ts +62 -0
  39. package/dist/organizations/dto.js +445 -0
  40. package/dist/organizations/dto.js.map +1 -0
  41. package/dist/organizations/index.d.ts +72 -0
  42. package/dist/organizations/index.js +221 -0
  43. package/dist/organizations/index.js.map +1 -0
  44. package/dist/permissions/dto.d.ts +27 -0
  45. package/dist/permissions/dto.js +215 -0
  46. package/dist/permissions/dto.js.map +1 -0
  47. package/dist/permissions/index.d.ts +36 -0
  48. package/dist/permissions/index.js +110 -0
  49. package/dist/permissions/index.js.map +1 -0
  50. package/dist/projects/index.d.ts +3 -1
  51. package/dist/projects/index.js +25 -62
  52. package/dist/projects/index.js.map +1 -1
  53. package/dist/service-client/index.d.ts +72 -0
  54. package/dist/service-client/index.js +119 -0
  55. package/dist/service-client/index.js.map +1 -0
  56. package/dist/statuses/index.d.ts +3 -1
  57. package/dist/statuses/index.js +17 -28
  58. package/dist/statuses/index.js.map +1 -1
  59. package/dist/supporting-files/index.d.ts +3 -1
  60. package/dist/supporting-files/index.js +14 -20
  61. package/dist/supporting-files/index.js.map +1 -1
  62. package/dist/tasks/index.d.ts +3 -1
  63. package/dist/tasks/index.js +21 -50
  64. package/dist/tasks/index.js.map +1 -1
  65. package/dist/users/dto.d.ts +48 -0
  66. package/dist/users/dto.js +267 -0
  67. package/dist/users/dto.js.map +1 -0
  68. package/dist/users/index.d.ts +38 -0
  69. package/dist/users/index.js +144 -0
  70. package/dist/users/index.js.map +1 -0
  71. package/dist/webhook-events/index.d.ts +65 -0
  72. package/dist/webhook-events/index.js +109 -0
  73. package/dist/webhook-events/index.js.map +1 -0
  74. package/package.json +2 -2
@@ -15,6 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.TasksResource = void 0;
18
+ const enum_1 = require("@managemint-solutions/entities/audit-trail/enum");
19
+ const audit_1 = require("../audit");
18
20
  const errors_1 = require("../errors");
19
21
  __exportStar(require("./dto"), exports);
20
22
  // The public contract is the shared TaskSummary / TaskEntity from @managemint-solutions/entities;
@@ -66,9 +68,14 @@ const TASK_DETAIL_SELECT = `
66
68
  class TasksResource {
67
69
  supabase;
68
70
  auth;
69
- constructor(supabase, auth) {
71
+ table;
72
+ constructor(supabase, auth, audit) {
70
73
  this.supabase = supabase;
71
74
  this.auth = auth;
75
+ this.table = (0, audit_1.auditedTable)(supabase, auth, audit, {
76
+ table: 'tasks',
77
+ entityType: enum_1.AuditTrailEntityType.TASKS,
78
+ });
72
79
  }
73
80
  async list(query) {
74
81
  const page = query.page;
@@ -152,89 +159,53 @@ class TasksResource {
152
159
  async create(input) {
153
160
  // `task_id` (the per-organization task number) is left out: the table's `set_task_id`
154
161
  // BEFORE INSERT trigger fills it in when it arrives null.
155
- const { data, error } = await this.supabase
156
- .from('tasks')
157
- .insert({
162
+ const row = await this.table.insert({
158
163
  ...input,
159
164
  organization_id: this.auth.organization_id,
160
165
  created_by: this.auth.mms_id,
161
166
  created_at: new Date().toISOString(),
162
- })
163
- .select('mms_id')
164
- .single();
165
- if (error)
166
- throw (0, errors_1.mapPostgrestError)(error);
167
- return this.getById(data.mms_id);
167
+ });
168
+ return this.getById(row.mms_id);
168
169
  }
169
170
  async update(taskId, input) {
170
- const { error } = await this.supabase
171
- .from('tasks')
172
- .update({
171
+ await this.table.update(taskId, {
173
172
  ...input,
174
173
  last_updated_by: this.auth.mms_id,
175
174
  updated_at: new Date().toISOString(),
176
- })
177
- .eq('mms_id', taskId)
178
- .eq('organization_id', this.auth.organization_id);
179
- if (error)
180
- throw (0, errors_1.mapPostgrestError)(error);
175
+ });
181
176
  return this.getById(taskId);
182
177
  }
183
178
  async archive(taskId) {
184
- const { error } = await this.supabase
185
- .from('tasks')
186
- .update({
179
+ await this.table.transition(taskId, enum_1.AuditTrailAction.ARCHIVE, {
187
180
  archived: true,
188
181
  archived_at: new Date().toISOString(),
189
182
  archived_by: this.auth.mms_id,
190
- })
191
- .eq('organization_id', this.auth.organization_id)
192
- .eq('mms_id', taskId);
193
- if (error)
194
- throw (0, errors_1.mapPostgrestError)(error);
183
+ });
195
184
  return this.getById(taskId);
196
185
  }
197
186
  async unarchive(taskId) {
198
- const { error } = await this.supabase
199
- .from('tasks')
200
- .update({
187
+ await this.table.transition(taskId, enum_1.AuditTrailAction.UNARCHIVE, {
201
188
  archived: false,
202
189
  unarchived_at: new Date().toISOString(),
203
190
  unarchived_by: this.auth.mms_id,
204
- })
205
- .eq('organization_id', this.auth.organization_id)
206
- .eq('mms_id', taskId);
207
- if (error)
208
- throw (0, errors_1.mapPostgrestError)(error);
191
+ });
209
192
  return this.getById(taskId);
210
193
  }
211
194
  async restore(taskId) {
212
- const { error } = await this.supabase
213
- .from('tasks')
214
- .update({
195
+ await this.table.transition(taskId, enum_1.AuditTrailAction.RESTORE, {
215
196
  deleted: false,
216
197
  restored_at: new Date().toISOString(),
217
198
  restored_by: this.auth.mms_id,
218
- })
219
- .eq('organization_id', this.auth.organization_id)
220
- .eq('mms_id', taskId);
221
- if (error)
222
- throw (0, errors_1.mapPostgrestError)(error);
199
+ });
223
200
  return this.getById(taskId);
224
201
  }
225
202
  /** Soft delete — the row stays, flagged `deleted`, and `restore()` brings it back. */
226
203
  async remove(taskId) {
227
- const { error } = await this.supabase
228
- .from('tasks')
229
- .update({
204
+ await this.table.transition(taskId, enum_1.AuditTrailAction.DELETE, {
230
205
  deleted: true,
231
206
  deleted_at: new Date().toISOString(),
232
207
  deleted_by: this.auth.mms_id,
233
- })
234
- .eq('organization_id', this.auth.organization_id)
235
- .eq('mms_id', taskId);
236
- if (error)
237
- throw (0, errors_1.mapPostgrestError)(error);
208
+ });
238
209
  }
239
210
  }
240
211
  exports.TasksResource = TasksResource;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { CreateUserDto as CreateUserDtoType, GetUsersDto as GetUsersDtoType, UpdateUserDto as UpdateUserDtoType, UserIdDto as UserIdDtoType } from '@managemint-solutions/entities/users/dto';
2
+ import { EmergencyContactRelationship, EmploymentType } from '@managemint-solutions/entities/users/enum';
3
+ export declare class UserIdDto implements UserIdDtoType {
4
+ readonly userId: string;
5
+ }
6
+ export declare class AddUserDto implements CreateUserDtoType {
7
+ readonly email: string;
8
+ readonly password: string;
9
+ readonly name: string;
10
+ readonly surname: string;
11
+ readonly phone: string | null;
12
+ readonly profile_image: string | null;
13
+ readonly country_code: string;
14
+ /**
15
+ * The client's idempotency key for the pro-rata seat charge (principle 1).
16
+ * Optional: an internally created user - the owner at signup - has no client
17
+ * request behind it, and one is generated for it.
18
+ */
19
+ readonly idempotency_key?: string;
20
+ }
21
+ export declare class GetUsersQueryDto implements Omit<GetUsersDtoType, 'active_in'> {
22
+ readonly search?: string | null;
23
+ readonly page: number;
24
+ readonly page_size: number;
25
+ readonly active_in?: boolean[] | null;
26
+ }
27
+ export declare class UpdateUserDto implements UpdateUserDtoType {
28
+ readonly name: string;
29
+ readonly surname: string;
30
+ readonly phone: string;
31
+ readonly country_code: string;
32
+ readonly employment_type: EmploymentType;
33
+ readonly birthday?: string | null;
34
+ readonly start_date?: string | null;
35
+ readonly end_date?: string | null;
36
+ readonly job_title?: string | null;
37
+ readonly manager_id?: string | null;
38
+ readonly social_facebook?: string | null;
39
+ readonly social_linkedin?: string | null;
40
+ readonly social_twitter?: string | null;
41
+ readonly social_instagram?: string | null;
42
+ readonly social_github?: string | null;
43
+ readonly social_website?: string | null;
44
+ readonly emergency_contact_name?: string | null;
45
+ readonly emergency_contact_relationship?: EmergencyContactRelationship | null;
46
+ readonly emergency_contact_phone?: string | null;
47
+ readonly emergency_contact_email?: string | null;
48
+ }
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateUserDto = exports.GetUsersQueryDto = exports.AddUserDto = exports.UserIdDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const validators_1 = require("../validators");
16
+ const enum_1 = require("@managemint-solutions/entities/users/enum");
17
+ class UserIdDto {
18
+ userId;
19
+ }
20
+ exports.UserIdDto = UserIdDto;
21
+ __decorate([
22
+ (0, class_validator_1.IsUUID)('4', { message: 'Invalid user ID format' }),
23
+ __metadata("design:type", String)
24
+ ], UserIdDto.prototype, "userId", void 0);
25
+ class AddUserDto {
26
+ email;
27
+ password;
28
+ name;
29
+ surname;
30
+ phone;
31
+ profile_image;
32
+ country_code;
33
+ /**
34
+ * The client's idempotency key for the pro-rata seat charge (principle 1).
35
+ * Optional: an internally created user - the owner at signup - has no client
36
+ * request behind it, and one is generated for it.
37
+ */
38
+ idempotency_key;
39
+ }
40
+ exports.AddUserDto = AddUserDto;
41
+ __decorate([
42
+ (0, class_validator_1.IsEmail)({}, { message: 'Invalid email address' }),
43
+ __metadata("design:type", String)
44
+ ], AddUserDto.prototype, "email", void 0);
45
+ __decorate([
46
+ (0, class_validator_1.IsString)({ message: 'Password is required' }),
47
+ (0, class_validator_1.MinLength)(8, { message: 'Password must be at least 8 characters' }),
48
+ (0, class_validator_1.Matches)(/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*])/, { message: 'Password must contain at least 1 uppercase letter, 1 lowercase letter, 1 number, and 1 special character (!@#$%^&*)' }),
49
+ __metadata("design:type", String)
50
+ ], AddUserDto.prototype, "password", void 0);
51
+ __decorate([
52
+ (0, class_validator_1.IsString)({ message: 'Name is required' }),
53
+ (0, class_validator_1.MinLength)(1, { message: 'Name is required' }),
54
+ (0, class_validator_1.MaxLength)(50, { message: 'Name cannot be longer than 50 characters' }),
55
+ __metadata("design:type", String)
56
+ ], AddUserDto.prototype, "name", void 0);
57
+ __decorate([
58
+ (0, class_validator_1.IsString)({ message: 'Surname is required' }),
59
+ (0, class_validator_1.MinLength)(1, { message: 'Surname is required' }),
60
+ (0, class_validator_1.MaxLength)(50, { message: 'Surname cannot be longer than 50 characters' }),
61
+ __metadata("design:type", String)
62
+ ], AddUserDto.prototype, "surname", void 0);
63
+ __decorate([
64
+ (0, validators_1.IsNullable)(),
65
+ (0, class_validator_1.IsString)({ message: 'Phone number' }),
66
+ __metadata("design:type", Object)
67
+ ], AddUserDto.prototype, "phone", void 0);
68
+ __decorate([
69
+ (0, validators_1.IsNullable)(),
70
+ (0, class_validator_1.IsString)({ message: 'Profile image URL' }),
71
+ __metadata("design:type", Object)
72
+ ], AddUserDto.prototype, "profile_image", void 0);
73
+ __decorate([
74
+ (0, class_validator_1.IsString)({ message: 'Country code is required' }),
75
+ (0, class_validator_1.MinLength)(1, { message: 'Country code is required' }),
76
+ __metadata("design:type", String)
77
+ ], AddUserDto.prototype, "country_code", void 0);
78
+ __decorate([
79
+ (0, class_validator_1.IsOptional)(),
80
+ (0, class_validator_1.IsUUID)('4', { message: 'Invalid idempotency key format' }),
81
+ __metadata("design:type", String)
82
+ ], AddUserDto.prototype, "idempotency_key", void 0);
83
+ // `active_in` arrives as a CSV string and is transformed to booleans, so it is omitted from the
84
+ // implemented contract — the same exception GetClientsDto makes for status_id_in.
85
+ class GetUsersQueryDto {
86
+ search;
87
+ page = 1;
88
+ page_size = 10;
89
+ // Comma-joined booleans on the wire, e.g. "true,false". Absent = all users.
90
+ active_in;
91
+ }
92
+ exports.GetUsersQueryDto = GetUsersQueryDto;
93
+ __decorate([
94
+ (0, class_validator_1.IsOptional)(),
95
+ (0, validators_1.IsNullable)(),
96
+ (0, class_validator_1.IsString)({ message: 'Invalid search query' }),
97
+ (0, class_validator_1.MinLength)(1, { message: 'Search query cannot be empty' }),
98
+ (0, class_validator_1.MaxLength)(255, { message: 'Search query cannot exceed 255 characters' }),
99
+ __metadata("design:type", Object)
100
+ ], GetUsersQueryDto.prototype, "search", void 0);
101
+ __decorate([
102
+ (0, class_validator_1.IsOptional)(),
103
+ (0, class_transformer_1.Transform)(({ value }) => value ? Number(value) : 1, { toClassOnly: true }),
104
+ (0, class_validator_1.IsNumber)({}, { message: 'Page must be a number' }),
105
+ (0, class_validator_1.Min)(1, { message: 'Page must be at least 1' }),
106
+ __metadata("design:type", Number)
107
+ ], GetUsersQueryDto.prototype, "page", void 0);
108
+ __decorate([
109
+ (0, class_validator_1.IsOptional)(),
110
+ (0, class_transformer_1.Transform)(({ value }) => value ? Number(value) : 10, { toClassOnly: true }),
111
+ (0, class_validator_1.IsNumber)({}, { message: 'Page size must be a number' }),
112
+ (0, class_validator_1.Min)(1, { message: 'Page size must be at least 1' }),
113
+ (0, class_validator_1.Max)(100, { message: 'Page size cannot exceed 100' }),
114
+ __metadata("design:type", Number)
115
+ ], GetUsersQueryDto.prototype, "page_size", void 0);
116
+ __decorate([
117
+ (0, class_validator_1.IsOptional)(),
118
+ (0, validators_1.IsNullable)(),
119
+ (0, class_transformer_1.Transform)(({ value }) => value ? value.split(',').map((entry) => entry.trim() === 'true') : null, { toClassOnly: true }),
120
+ (0, class_validator_1.IsBoolean)({ each: true, message: 'Active filter values must be booleans' }),
121
+ __metadata("design:type", Object)
122
+ ], GetUsersQueryDto.prototype, "active_in", void 0);
123
+ class UpdateUserDto {
124
+ name;
125
+ surname;
126
+ phone;
127
+ country_code;
128
+ employment_type;
129
+ birthday;
130
+ start_date;
131
+ end_date;
132
+ job_title;
133
+ manager_id;
134
+ social_facebook;
135
+ social_linkedin;
136
+ social_twitter;
137
+ social_instagram;
138
+ social_github;
139
+ social_website;
140
+ emergency_contact_name;
141
+ emergency_contact_relationship;
142
+ emergency_contact_phone;
143
+ emergency_contact_email;
144
+ }
145
+ exports.UpdateUserDto = UpdateUserDto;
146
+ __decorate([
147
+ (0, class_validator_1.IsString)({ message: 'Invalid name' }),
148
+ (0, class_validator_1.MinLength)(1, { message: 'Name is required' }),
149
+ (0, class_validator_1.MaxLength)(50, { message: 'Name cannot be longer than 50 characters' }),
150
+ __metadata("design:type", String)
151
+ ], UpdateUserDto.prototype, "name", void 0);
152
+ __decorate([
153
+ (0, class_validator_1.IsString)({ message: 'Invalid surname' }),
154
+ (0, class_validator_1.MinLength)(1, { message: 'Surname is required' }),
155
+ (0, class_validator_1.MaxLength)(50, { message: 'Surname cannot be longer than 50 characters' }),
156
+ __metadata("design:type", String)
157
+ ], UpdateUserDto.prototype, "surname", void 0);
158
+ __decorate([
159
+ (0, class_validator_1.IsString)({ message: 'Invalid phone number' }),
160
+ __metadata("design:type", String)
161
+ ], UpdateUserDto.prototype, "phone", void 0);
162
+ __decorate([
163
+ (0, class_validator_1.IsString)({ message: 'Country code is required' }),
164
+ (0, class_validator_1.MinLength)(1, { message: 'Country code is required' }),
165
+ __metadata("design:type", String)
166
+ ], UpdateUserDto.prototype, "country_code", void 0);
167
+ __decorate([
168
+ (0, class_validator_1.IsOptional)(),
169
+ (0, class_validator_1.IsEnum)(enum_1.EmploymentType, { message: 'Invalid employment type' }),
170
+ __metadata("design:type", String)
171
+ ], UpdateUserDto.prototype, "employment_type", void 0);
172
+ __decorate([
173
+ (0, class_validator_1.IsOptional)(),
174
+ (0, validators_1.IsNullable)(),
175
+ (0, class_validator_1.IsDateString)({}, { message: 'Birthday must be a valid ISO 8601 date string' }),
176
+ __metadata("design:type", Object)
177
+ ], UpdateUserDto.prototype, "birthday", void 0);
178
+ __decorate([
179
+ (0, class_validator_1.IsOptional)(),
180
+ (0, validators_1.IsNullable)(),
181
+ (0, class_validator_1.IsDateString)({}, { message: 'Start date must be a valid ISO 8601 date string' }),
182
+ __metadata("design:type", Object)
183
+ ], UpdateUserDto.prototype, "start_date", void 0);
184
+ __decorate([
185
+ (0, class_validator_1.IsOptional)(),
186
+ (0, validators_1.IsNullable)(),
187
+ (0, class_validator_1.IsDateString)({}, { message: 'End date must be a valid ISO 8601 date string' }),
188
+ __metadata("design:type", Object)
189
+ ], UpdateUserDto.prototype, "end_date", void 0);
190
+ __decorate([
191
+ (0, class_validator_1.IsOptional)(),
192
+ (0, validators_1.IsNullable)(),
193
+ (0, class_validator_1.IsString)({ message: 'Invalid job title' }),
194
+ (0, class_validator_1.MaxLength)(100, { message: 'Job title cannot be longer than 100 characters' }),
195
+ __metadata("design:type", Object)
196
+ ], UpdateUserDto.prototype, "job_title", void 0);
197
+ __decorate([
198
+ (0, class_validator_1.IsOptional)(),
199
+ (0, validators_1.IsNullable)(),
200
+ (0, class_validator_1.IsUUID)('4', { message: 'Invalid manager ID format' }),
201
+ __metadata("design:type", Object)
202
+ ], UpdateUserDto.prototype, "manager_id", void 0);
203
+ __decorate([
204
+ (0, class_validator_1.IsOptional)(),
205
+ (0, validators_1.IsNullable)(),
206
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid Facebook URL' }),
207
+ __metadata("design:type", Object)
208
+ ], UpdateUserDto.prototype, "social_facebook", void 0);
209
+ __decorate([
210
+ (0, class_validator_1.IsOptional)(),
211
+ (0, validators_1.IsNullable)(),
212
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid LinkedIn URL' }),
213
+ __metadata("design:type", Object)
214
+ ], UpdateUserDto.prototype, "social_linkedin", void 0);
215
+ __decorate([
216
+ (0, class_validator_1.IsOptional)(),
217
+ (0, validators_1.IsNullable)(),
218
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid Twitter URL' }),
219
+ __metadata("design:type", Object)
220
+ ], UpdateUserDto.prototype, "social_twitter", void 0);
221
+ __decorate([
222
+ (0, class_validator_1.IsOptional)(),
223
+ (0, validators_1.IsNullable)(),
224
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid Instagram URL' }),
225
+ __metadata("design:type", Object)
226
+ ], UpdateUserDto.prototype, "social_instagram", void 0);
227
+ __decorate([
228
+ (0, class_validator_1.IsOptional)(),
229
+ (0, validators_1.IsNullable)(),
230
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid GitHub URL' }),
231
+ __metadata("design:type", Object)
232
+ ], UpdateUserDto.prototype, "social_github", void 0);
233
+ __decorate([
234
+ (0, class_validator_1.IsOptional)(),
235
+ (0, validators_1.IsNullable)(),
236
+ (0, class_validator_1.IsUrl)({}, { message: 'Invalid website URL' }),
237
+ __metadata("design:type", Object)
238
+ ], UpdateUserDto.prototype, "social_website", void 0);
239
+ __decorate([
240
+ (0, class_validator_1.IsOptional)(),
241
+ (0, validators_1.IsNullable)(),
242
+ (0, class_validator_1.IsString)({ message: 'Invalid emergency contact name' }),
243
+ (0, class_validator_1.MinLength)(1, { message: 'Emergency contact name is required' }),
244
+ (0, class_validator_1.MaxLength)(50, { message: 'Emergency contact name cannot be longer than 50 characters' }),
245
+ __metadata("design:type", Object)
246
+ ], UpdateUserDto.prototype, "emergency_contact_name", void 0);
247
+ __decorate([
248
+ (0, class_validator_1.IsOptional)(),
249
+ (0, validators_1.IsNullable)(),
250
+ (0, class_validator_1.IsEnum)(enum_1.EmergencyContactRelationship, { message: 'Invalid emergency contact relationship' }),
251
+ (0, class_validator_1.MinLength)(1, { message: 'Emergency contact relationship is required' }),
252
+ (0, class_validator_1.MaxLength)(50, { message: 'Emergency contact relationship cannot be longer than 50 characters' }),
253
+ __metadata("design:type", Object)
254
+ ], UpdateUserDto.prototype, "emergency_contact_relationship", void 0);
255
+ __decorate([
256
+ (0, class_validator_1.IsOptional)(),
257
+ (0, validators_1.IsNullable)(),
258
+ (0, class_validator_1.IsString)({ message: 'Invalid emergency contact phone number' }),
259
+ __metadata("design:type", Object)
260
+ ], UpdateUserDto.prototype, "emergency_contact_phone", void 0);
261
+ __decorate([
262
+ (0, class_validator_1.IsOptional)(),
263
+ (0, validators_1.IsNullable)(),
264
+ (0, class_validator_1.IsEmail)({}, { message: 'Invalid emergency contact email address' }),
265
+ __metadata("design:type", Object)
266
+ ], UpdateUserDto.prototype, "emergency_contact_email", void 0);
267
+ //# sourceMappingURL=dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/users/dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { MmsList } from '@managemint-solutions/entities/common';
2
+ import type { UserIdentity, UserSummary } from '@managemint-solutions/entities/users';
3
+ import { type AuditActor, type AuditResource, type AuditRow } from '../audit';
4
+ import type { TypedSupabaseClient } from '../client';
5
+ import type { GetUsersQueryDto } from './dto';
6
+ export * from './dto';
7
+ /** The full users row. The api resolves its manager/created_by/last_updated_by ids into identities. */
8
+ export type UserRow = Record<string, unknown> & {
9
+ mms_id: string;
10
+ manager_id: string | null;
11
+ created_by: string | null;
12
+ last_updated_by: string | null;
13
+ };
14
+ export declare class UsersResource {
15
+ private readonly supabase;
16
+ private readonly auth;
17
+ private readonly table;
18
+ constructor(supabase: TypedSupabaseClient, auth: AuditActor, audit: AuditResource);
19
+ list(query: GetUsersQueryDto): Promise<MmsList<UserSummary>>;
20
+ getRow(userId: string): Promise<UserRow>;
21
+ /**
22
+ * The public profile behind a `*_by` / `manager_id` column. `user_profiles` is a
23
+ * `security_invoker = off` view granted to `authenticated`, so this runs on the caller's own
24
+ * client — it needs no service role.
25
+ */
26
+ identityById(userId?: string | null): Promise<UserIdentity | null>;
27
+ /** Seats in use. Counts rows rather than fetching them. */
28
+ activeCount(): Promise<number>;
29
+ isActive(userId: string): Promise<boolean>;
30
+ update(userId: string, patch: AuditRow): Promise<UserRow>;
31
+ /** `active` is not an archive flag, so a deactivation is recorded as a plain UPDATE. */
32
+ setActive(userId: string, active: boolean): Promise<UserRow>;
33
+ /**
34
+ * Stamps who created a user. Runs on the service client during signup: the row is written by
35
+ * the `on_auth_user_created` trigger, so there is nothing to attribute it to until afterwards.
36
+ */
37
+ stampCreatedBy(userId: string, createdBy: string | null): Promise<AuditRow>;
38
+ }