@temboplus/afloat 0.1.77-beta.8 → 0.1.77
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/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/lib/query/query.builder.d.ts +5 -1
- package/dist/modules/auth/auth.contract.d.ts +2 -2
- package/dist/modules/auth/company-membership.model.d.ts +122 -9
- package/dist/modules/auth/user.model.d.ts +238 -15
- package/dist/modules/contact/contact-info.model.d.ts +102 -60
- package/dist/modules/contact/contact.model.d.ts +171 -26
- package/dist/modules/login/login.model.d.ts +53 -23
- package/dist/modules/payout/payout.dtos.d.ts +19 -17
- package/dist/modules/payout/payout.model.d.ts +242 -2
- package/dist/modules/payout/payout.query.d.ts +4 -3
- package/dist/modules/payout/payout.repository.d.ts +35 -23
- package/dist/modules/profile/profile.model.d.ts +65 -30
- package/dist/modules/team-member/role.model.d.ts +49 -1
- package/dist/modules/team-member/team-member.model.d.ts +106 -6
- package/dist/modules/wallet/narration.model.d.ts +34 -38
- package/dist/modules/wallet/statement-entry.model.d.ts +172 -73
- package/dist/modules/wallet/wallet.model.d.ts +56 -19
- package/package.json +2 -2
|
@@ -1,6 +1,119 @@
|
|
|
1
1
|
import { PayoutDTO, PayoutStatus, PayoutApprovalStatus, PayoutAuthorizer } from "@/modules/payout/payout.dtos.js";
|
|
2
2
|
import { Amount } from "@temboplus/frontend-core";
|
|
3
3
|
import { ContactInfo } from "../contact/contact-info.model.js";
|
|
4
|
+
import z from "zod";
|
|
5
|
+
/**
|
|
6
|
+
* Zod schema for Payout JSON serialization
|
|
7
|
+
* This mirrors the PayoutDTO structure but is specifically for JSON serialization
|
|
8
|
+
*/
|
|
9
|
+
export declare const PayoutJSONSchema: z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
profileId: z.ZodString;
|
|
12
|
+
payeeName: z.ZodString;
|
|
13
|
+
channel: z.ZodString;
|
|
14
|
+
msisdn: z.ZodString;
|
|
15
|
+
amount: z.ZodNumber;
|
|
16
|
+
currencyCode: z.ZodString;
|
|
17
|
+
countryCode: z.ZodString;
|
|
18
|
+
description: z.ZodString;
|
|
19
|
+
notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
20
|
+
status: z.ZodNativeEnum<typeof PayoutStatus>;
|
|
21
|
+
statusMessage: z.ZodString;
|
|
22
|
+
partnerReference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
23
|
+
createdAt: z.ZodString;
|
|
24
|
+
updatedAt: z.ZodString;
|
|
25
|
+
actionedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
26
|
+
approvalStatus: z.ZodOptional<z.ZodNullable<z.ZodNativeEnum<typeof PayoutApprovalStatus>>>;
|
|
27
|
+
createdBy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
name: z.ZodString;
|
|
30
|
+
identity: z.ZodString;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
name: string;
|
|
33
|
+
id: string;
|
|
34
|
+
identity: string;
|
|
35
|
+
}, {
|
|
36
|
+
name: string;
|
|
37
|
+
id: string;
|
|
38
|
+
identity: string;
|
|
39
|
+
}>>>;
|
|
40
|
+
actionedBy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
name: z.ZodString;
|
|
43
|
+
identity: z.ZodString;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
name: string;
|
|
46
|
+
id: string;
|
|
47
|
+
identity: string;
|
|
48
|
+
}, {
|
|
49
|
+
name: string;
|
|
50
|
+
id: string;
|
|
51
|
+
identity: string;
|
|
52
|
+
}>>>;
|
|
53
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
status: PayoutStatus;
|
|
56
|
+
id: string;
|
|
57
|
+
version: string;
|
|
58
|
+
profileId: string;
|
|
59
|
+
createdAt: string;
|
|
60
|
+
updatedAt: string;
|
|
61
|
+
description: string;
|
|
62
|
+
channel: string;
|
|
63
|
+
countryCode: string;
|
|
64
|
+
currencyCode: string;
|
|
65
|
+
msisdn: string;
|
|
66
|
+
amount: number;
|
|
67
|
+
payeeName: string;
|
|
68
|
+
statusMessage: string;
|
|
69
|
+
notes?: string | null | undefined;
|
|
70
|
+
partnerReference?: string | null | undefined;
|
|
71
|
+
actionedAt?: string | null | undefined;
|
|
72
|
+
approvalStatus?: PayoutApprovalStatus | null | undefined;
|
|
73
|
+
createdBy?: {
|
|
74
|
+
name: string;
|
|
75
|
+
id: string;
|
|
76
|
+
identity: string;
|
|
77
|
+
} | null | undefined;
|
|
78
|
+
actionedBy?: {
|
|
79
|
+
name: string;
|
|
80
|
+
id: string;
|
|
81
|
+
identity: string;
|
|
82
|
+
} | null | undefined;
|
|
83
|
+
}, {
|
|
84
|
+
status: PayoutStatus;
|
|
85
|
+
id: string;
|
|
86
|
+
profileId: string;
|
|
87
|
+
createdAt: string;
|
|
88
|
+
updatedAt: string;
|
|
89
|
+
description: string;
|
|
90
|
+
channel: string;
|
|
91
|
+
countryCode: string;
|
|
92
|
+
currencyCode: string;
|
|
93
|
+
msisdn: string;
|
|
94
|
+
amount: number;
|
|
95
|
+
payeeName: string;
|
|
96
|
+
statusMessage: string;
|
|
97
|
+
version?: string | undefined;
|
|
98
|
+
notes?: string | null | undefined;
|
|
99
|
+
partnerReference?: string | null | undefined;
|
|
100
|
+
actionedAt?: string | null | undefined;
|
|
101
|
+
approvalStatus?: PayoutApprovalStatus | null | undefined;
|
|
102
|
+
createdBy?: {
|
|
103
|
+
name: string;
|
|
104
|
+
id: string;
|
|
105
|
+
identity: string;
|
|
106
|
+
} | null | undefined;
|
|
107
|
+
actionedBy?: {
|
|
108
|
+
name: string;
|
|
109
|
+
id: string;
|
|
110
|
+
identity: string;
|
|
111
|
+
} | null | undefined;
|
|
112
|
+
}>;
|
|
113
|
+
/**
|
|
114
|
+
* Infer the PayoutJSON type from the schema
|
|
115
|
+
*/
|
|
116
|
+
export type PayoutJSON = z.infer<typeof PayoutJSONSchema>;
|
|
4
117
|
/**
|
|
5
118
|
* Payout class that wraps the Zod schema and provides additional functionality
|
|
6
119
|
*/
|
|
@@ -133,7 +246,134 @@ export declare class Payout {
|
|
|
133
246
|
*/
|
|
134
247
|
static is(obj: unknown): obj is Payout;
|
|
135
248
|
/**
|
|
136
|
-
|
|
249
|
+
* Serializes the Payout instance to a JSON-compatible object
|
|
250
|
+
*
|
|
251
|
+
* Converts all Date objects to ISO strings for proper JSON serialization.
|
|
252
|
+
* The resulting object can be safely stringified and stored or transmitted.
|
|
253
|
+
*
|
|
254
|
+
* @returns {PayoutJSON} A plain object containing all payout data
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```typescript
|
|
258
|
+
* const payout = Payout.create(payoutData);
|
|
259
|
+
* const json = payout.toJSON();
|
|
260
|
+
* // {
|
|
261
|
+
* // id: "payout-123",
|
|
262
|
+
* // amount: 50000,
|
|
263
|
+
* // currencyCode: "TZS",
|
|
264
|
+
* // createdAt: "2024-01-15T10:30:00.000Z",
|
|
265
|
+
* // ...
|
|
266
|
+
* // }
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
toJSON(): PayoutJSON;
|
|
270
|
+
/**
|
|
271
|
+
* Serializes the Payout instance to a JSON string
|
|
272
|
+
*
|
|
273
|
+
* @returns {string} JSON string representation of the payout
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```typescript
|
|
277
|
+
* const payout = Payout.create(payoutData);
|
|
278
|
+
* const jsonString = payout.toJSONString();
|
|
279
|
+
*
|
|
280
|
+
* // Store in localStorage
|
|
281
|
+
* localStorage.setItem('pendingPayout', jsonString);
|
|
282
|
+
*
|
|
283
|
+
* // Or send to server
|
|
284
|
+
* await fetch('/api/cache-payout', {
|
|
285
|
+
* method: 'POST',
|
|
286
|
+
* body: jsonString
|
|
287
|
+
* });
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
toJSONString(): string;
|
|
291
|
+
/**
|
|
292
|
+
* Creates a Payout instance from a JSON-compatible object or string
|
|
293
|
+
*
|
|
294
|
+
* This method reconstructs a Payout instance from data that was previously
|
|
295
|
+
* serialized using toJSON(). It validates the input data using Zod schema
|
|
296
|
+
* and converts ISO date strings back to Date objects.
|
|
297
|
+
*
|
|
298
|
+
* @param {PayoutJSON | string} json - Either a PayoutJSON object or a JSON string
|
|
299
|
+
* @returns {Payout | undefined} A Payout instance if valid, undefined otherwise
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* // From localStorage
|
|
304
|
+
* const stored = localStorage.getItem('pendingPayout');
|
|
305
|
+
* const payout = Payout.fromJSON(stored!);
|
|
306
|
+
*
|
|
307
|
+
* if (payout) {
|
|
308
|
+
* console.log(payout.amount.label); // "TSh 50,000.00"
|
|
309
|
+
* console.log(payout.status); // "PENDING"
|
|
310
|
+
* }
|
|
311
|
+
*
|
|
312
|
+
* // From object
|
|
313
|
+
* const payoutJson = {
|
|
314
|
+
* id: "payout-123",
|
|
315
|
+
* amount: 50000,
|
|
316
|
+
* currencyCode: "TZS",
|
|
317
|
+
* createdAt: "2024-01-15T10:30:00.000Z",
|
|
318
|
+
* ...
|
|
319
|
+
* };
|
|
320
|
+
* const payout = Payout.fromJSON(payoutJson);
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
static fromJSON(json: PayoutJSON | string): Payout | undefined;
|
|
324
|
+
/**
|
|
325
|
+
* Type guard using Zod schema validation
|
|
326
|
+
*
|
|
327
|
+
* Checks if an unknown value conforms to the PayoutJSON structure
|
|
328
|
+
* without attempting to create a Payout instance.
|
|
329
|
+
*
|
|
330
|
+
* @param {unknown} obj - The object to validate
|
|
331
|
+
* @returns {boolean} True if the object is a valid PayoutJSON
|
|
332
|
+
*
|
|
333
|
+
* @example
|
|
334
|
+
* ```typescript
|
|
335
|
+
* const data = JSON.parse(localStorage.getItem('payout'));
|
|
336
|
+
*
|
|
337
|
+
* if (Payout.isPayoutJSON(data)) {
|
|
338
|
+
* const payout = Payout.fromJSON(data);
|
|
339
|
+
* // TypeScript knows data is PayoutJSON here
|
|
340
|
+
* }
|
|
341
|
+
* ```
|
|
342
|
+
*/
|
|
343
|
+
static isPayoutJSON(obj: unknown): obj is PayoutJSON;
|
|
344
|
+
/**
|
|
345
|
+
* Creates multiple Payout instances from a JSON array
|
|
346
|
+
*
|
|
347
|
+
* @param {PayoutJSON[] | string} jsonArray - Array of PayoutJSON objects or JSON string
|
|
348
|
+
* @returns {Payout[]} Array of Payout instances (invalid items are filtered out)
|
|
349
|
+
*
|
|
350
|
+
* @example
|
|
351
|
+
* ```typescript
|
|
352
|
+
* // From API response
|
|
353
|
+
* const response = await fetch('/api/payouts');
|
|
354
|
+
* const jsonArray = await response.json();
|
|
355
|
+
* const payouts = Payout.fromJSONArray(jsonArray);
|
|
356
|
+
*
|
|
357
|
+
* // From stored array
|
|
358
|
+
* const stored = localStorage.getItem('recentPayouts');
|
|
359
|
+
* const payouts = Payout.fromJSONArray(stored!);
|
|
360
|
+
* ```
|
|
361
|
+
*/
|
|
362
|
+
static fromJSONArray(jsonArray: PayoutJSON[] | string): Payout[];
|
|
363
|
+
/**
|
|
364
|
+
* Serializes an array of Payout instances to JSON
|
|
365
|
+
*
|
|
366
|
+
* @param {Payout[]} payouts - Array of Payout instances to serialize
|
|
367
|
+
* @returns {PayoutJSON[]} Array of PayoutJSON objects
|
|
368
|
+
*
|
|
369
|
+
* @example
|
|
370
|
+
* ```typescript
|
|
371
|
+
* const payouts = [payout1, payout2, payout3];
|
|
372
|
+
* const jsonArray = Payout.toJSONArray(payouts);
|
|
373
|
+
*
|
|
374
|
+
* // Store or transmit
|
|
375
|
+
* localStorage.setItem('recentPayouts', JSON.stringify(jsonArray));
|
|
376
|
+
* ```
|
|
137
377
|
*/
|
|
138
|
-
|
|
378
|
+
static toJSONArray(payouts: Payout[]): PayoutJSON[];
|
|
139
379
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QueryBuilder } from "@/lib/query/index.js";
|
|
2
2
|
import { PayoutStatus, PayoutApprovalStatus, PayoutFilters } from "./payout.dtos.js";
|
|
3
|
+
import { Amount } from "@temboplus/frontend-core";
|
|
3
4
|
/**
|
|
4
5
|
* Payout-specific query builder that extends the base QueryBuilder
|
|
5
6
|
* and handles all possible input conversions (DTOs, URL params, etc.)
|
|
@@ -41,7 +42,7 @@ export declare class PayoutQuery extends QueryBuilder {
|
|
|
41
42
|
whereRejected(): this;
|
|
42
43
|
wherePaid(): this;
|
|
43
44
|
whereFailed(): this;
|
|
44
|
-
whereAmountBetween(min:
|
|
45
|
+
whereAmountBetween(min: Amount, max: Amount): this;
|
|
45
46
|
wherePayee(payeeName: string): this;
|
|
46
47
|
whereMsisdn(msisdn: string): this;
|
|
47
48
|
whereProfileId(profileId: string): this;
|
|
@@ -57,7 +58,7 @@ export declare class PayoutQuery extends QueryBuilder {
|
|
|
57
58
|
*/
|
|
58
59
|
toFilters(): PayoutFilters;
|
|
59
60
|
/**
|
|
60
|
-
* Convert to
|
|
61
|
+
* Convert to user-friendly URL parameters (for browser URLs)
|
|
61
62
|
*/
|
|
62
63
|
toUrlParams(): Record<string, string>;
|
|
63
64
|
/**
|
|
@@ -79,7 +80,7 @@ export declare class PayoutQuery extends QueryBuilder {
|
|
|
79
80
|
/**
|
|
80
81
|
* Create new instance with date range
|
|
81
82
|
*/
|
|
82
|
-
withDateRange(startDate?: string, endDate?: string): PayoutQuery;
|
|
83
|
+
withDateRange(startDate?: string | Date, endDate?: string | Date): PayoutQuery;
|
|
83
84
|
/**
|
|
84
85
|
* Create new instance with status filter
|
|
85
86
|
*/
|
|
@@ -7,6 +7,29 @@ import { PayoutChannel } from "./payout.dtos.js";
|
|
|
7
7
|
import { PayoutQuery } from "./payout.query.js";
|
|
8
8
|
import { PayoutFilters } from "./payout.dtos.js";
|
|
9
9
|
import { Paged } from "@/lib/query/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Input type for payout creation mutation
|
|
12
|
+
*/
|
|
13
|
+
export interface CreatePayoutInput {
|
|
14
|
+
channel: PayoutChannel;
|
|
15
|
+
receiver: ContactInfo;
|
|
16
|
+
amount: Amount;
|
|
17
|
+
notes?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Input type for payout approval mutation
|
|
21
|
+
*/
|
|
22
|
+
export interface ApprovePayoutInput {
|
|
23
|
+
id: string;
|
|
24
|
+
notes?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Input type for payout rejection mutation
|
|
28
|
+
*/
|
|
29
|
+
export interface RejectPayoutInput {
|
|
30
|
+
id: string;
|
|
31
|
+
notes?: string;
|
|
32
|
+
}
|
|
10
33
|
/**
|
|
11
34
|
* Flexible query input type - supports the class, filters interface, URL params, etc.
|
|
12
35
|
*/
|
|
@@ -93,11 +116,11 @@ export declare class PayoutRepository extends BaseRepository<PayoutAPI> {
|
|
|
93
116
|
/**
|
|
94
117
|
* Creates a new payout with the provided input data.
|
|
95
118
|
*
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
98
|
-
* @param
|
|
99
|
-
* @param
|
|
100
|
-
* @param
|
|
119
|
+
* @param input - The payout creation data
|
|
120
|
+
* @param input.channel - The payout channel to use
|
|
121
|
+
* @param input.receiver - Contact information for the payout receiver
|
|
122
|
+
* @param input.amount - The amount to pay out
|
|
123
|
+
* @param input.notes - Optional notes for the payout
|
|
101
124
|
* @returns Promise that resolves to the created payout
|
|
102
125
|
* @throws {APIError} If the input is invalid or if the creation operation fails
|
|
103
126
|
*
|
|
@@ -111,18 +134,12 @@ export declare class PayoutRepository extends BaseRepository<PayoutAPI> {
|
|
|
111
134
|
* });
|
|
112
135
|
* ```
|
|
113
136
|
*/
|
|
114
|
-
pay(
|
|
115
|
-
channel: PayoutChannel;
|
|
116
|
-
receiver: ContactInfo;
|
|
117
|
-
amount: Amount;
|
|
118
|
-
notes?: string;
|
|
119
|
-
}): Promise<Payout>;
|
|
137
|
+
pay(input: CreatePayoutInput): Promise<Payout>;
|
|
120
138
|
/**
|
|
121
139
|
* Approves a payout with optional notes.
|
|
122
140
|
*
|
|
123
|
-
* @param id - The ID of the payout to approve
|
|
124
|
-
* @param
|
|
125
|
-
* @param args.notes - Optional notes for the approval
|
|
141
|
+
* @param input.id - The ID of the payout to approve
|
|
142
|
+
* @param input.notes - Optional notes for the approval
|
|
126
143
|
* @returns Promise that resolves to the approved payout
|
|
127
144
|
* @throws {APIError} If payout is not found, already approved, or if the operation fails
|
|
128
145
|
*
|
|
@@ -133,15 +150,12 @@ export declare class PayoutRepository extends BaseRepository<PayoutAPI> {
|
|
|
133
150
|
* });
|
|
134
151
|
* ```
|
|
135
152
|
*/
|
|
136
|
-
approve(
|
|
137
|
-
notes?: string;
|
|
138
|
-
}): Promise<Payout>;
|
|
153
|
+
approve(input: ApprovePayoutInput): Promise<Payout>;
|
|
139
154
|
/**
|
|
140
155
|
* Rejects a payout with optional notes.
|
|
141
156
|
*
|
|
142
|
-
* @param id - The ID of the payout to reject
|
|
143
|
-
* @param
|
|
144
|
-
* @param args.notes - Optional notes for the rejection
|
|
157
|
+
* @param input.id - The ID of the payout to reject
|
|
158
|
+
* @param input.notes - Optional notes for the rejection
|
|
145
159
|
* @returns Promise that resolves to the rejected payout
|
|
146
160
|
* @throws {APIError} If payout is not found, already rejected, or if the operation fails
|
|
147
161
|
*
|
|
@@ -152,9 +166,7 @@ export declare class PayoutRepository extends BaseRepository<PayoutAPI> {
|
|
|
152
166
|
* });
|
|
153
167
|
* ```
|
|
154
168
|
*/
|
|
155
|
-
reject(
|
|
156
|
-
notes?: string;
|
|
157
|
-
}): Promise<Payout>;
|
|
169
|
+
reject(input: RejectPayoutInput): Promise<Payout>;
|
|
158
170
|
/**
|
|
159
171
|
* Retrieves a payout by its ID.
|
|
160
172
|
*
|
|
@@ -1,4 +1,42 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for Profile JSON serialization
|
|
4
|
+
*/
|
|
5
|
+
export declare const ProfileJSONSchema: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
8
|
+
lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
9
|
+
displayName: z.ZodString;
|
|
10
|
+
phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
11
|
+
accountNo: z.ZodString;
|
|
12
|
+
email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13
|
+
autoApprove: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
14
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
id: string;
|
|
17
|
+
displayName: string;
|
|
18
|
+
accountNo: string;
|
|
19
|
+
version: string;
|
|
20
|
+
firstName?: string | null | undefined;
|
|
21
|
+
lastName?: string | null | undefined;
|
|
22
|
+
phone?: string | null | undefined;
|
|
23
|
+
email?: string | null | undefined;
|
|
24
|
+
autoApprove?: boolean | null | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
id: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
accountNo: string;
|
|
29
|
+
firstName?: string | null | undefined;
|
|
30
|
+
lastName?: string | null | undefined;
|
|
31
|
+
phone?: string | null | undefined;
|
|
32
|
+
email?: string | null | undefined;
|
|
33
|
+
autoApprove?: boolean | null | undefined;
|
|
34
|
+
version?: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Infer the ProfileJSON type from the schema
|
|
38
|
+
*/
|
|
39
|
+
export type ProfileJSON = z.infer<typeof ProfileJSONSchema>;
|
|
2
40
|
/**
|
|
3
41
|
* Represents a user profile in the system.
|
|
4
42
|
*
|
|
@@ -25,16 +63,16 @@ export declare class Profile {
|
|
|
25
63
|
/**
|
|
26
64
|
* Gets the profile schema used for validation.
|
|
27
65
|
*/
|
|
28
|
-
static get schema():
|
|
29
|
-
id:
|
|
30
|
-
firstName:
|
|
31
|
-
lastName:
|
|
32
|
-
displayName:
|
|
33
|
-
phone:
|
|
34
|
-
accountNo:
|
|
35
|
-
email:
|
|
36
|
-
autoApprove:
|
|
37
|
-
}, "strip",
|
|
66
|
+
static get schema(): z.ZodObject<{
|
|
67
|
+
id: z.ZodString;
|
|
68
|
+
firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
69
|
+
lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
70
|
+
displayName: z.ZodString;
|
|
71
|
+
phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
72
|
+
accountNo: z.ZodString;
|
|
73
|
+
email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
74
|
+
autoApprove: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
76
|
id: string;
|
|
39
77
|
displayName: string;
|
|
40
78
|
accountNo: string;
|
|
@@ -113,31 +151,12 @@ export declare class Profile {
|
|
|
113
151
|
* Returns the display name if it exists, otherwise returns the first and last name combined.
|
|
114
152
|
*/
|
|
115
153
|
getName(): string;
|
|
116
|
-
/**
|
|
117
|
-
* Creates a plain object representation of the profile for validation or serialization.
|
|
118
|
-
*
|
|
119
|
-
* @returns A plain object matching the ProfileType interface
|
|
120
|
-
*/
|
|
121
|
-
toObject(): ProfileDTO;
|
|
122
|
-
/**
|
|
123
|
-
* Converts the profile to a JSON string.
|
|
124
|
-
*
|
|
125
|
-
* @returns A JSON string representation of the profile
|
|
126
|
-
*/
|
|
127
|
-
toJSON(): string;
|
|
128
154
|
/**
|
|
129
155
|
* Validates the profile data against the Zod schema.
|
|
130
156
|
*
|
|
131
157
|
* @returns True if the profile is valid, false otherwise
|
|
132
158
|
*/
|
|
133
159
|
validate(): boolean;
|
|
134
|
-
/**
|
|
135
|
-
* Creates a Profile instance from a JSON string.
|
|
136
|
-
*
|
|
137
|
-
* @param jsonString - JSON string containing profile data
|
|
138
|
-
* @returns A new Profile instance, or undefined if parsing failed
|
|
139
|
-
*/
|
|
140
|
-
static fromJSON(jsonString: string): Profile | undefined;
|
|
141
160
|
/**
|
|
142
161
|
* Creates a Profile instance from a plain object.
|
|
143
162
|
*
|
|
@@ -152,4 +171,20 @@ export declare class Profile {
|
|
|
152
171
|
* @returns Type predicate indicating if the object is a valid Profile
|
|
153
172
|
*/
|
|
154
173
|
static is(obj: unknown): obj is Profile;
|
|
174
|
+
/**
|
|
175
|
+
* Serializes the Profile instance to a JSON-compatible object
|
|
176
|
+
*/
|
|
177
|
+
toJSON(): ProfileJSON;
|
|
178
|
+
/**
|
|
179
|
+
* Serializes the Profile instance to a JSON string
|
|
180
|
+
*/
|
|
181
|
+
toJSONString(): string;
|
|
182
|
+
/**
|
|
183
|
+
* Creates a Profile instance from a JSON-compatible object or string
|
|
184
|
+
*/
|
|
185
|
+
static fromJSON(json: ProfileJSON | string): Profile | undefined;
|
|
186
|
+
/**
|
|
187
|
+
* Type guard using Zod schema validation
|
|
188
|
+
*/
|
|
189
|
+
static isProfileJSON(obj: unknown): obj is ProfileJSON;
|
|
155
190
|
}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
|
+
import z from "zod";
|
|
1
2
|
import { RoleDTO } from "./team-member.dtos.js";
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for Role JSON serialization
|
|
5
|
+
*/
|
|
6
|
+
export declare const RoleJSONSchema: z.ZodObject<{
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
description: z.ZodOptional<z.ZodString>;
|
|
10
|
+
access: z.ZodArray<z.ZodString, "many">;
|
|
11
|
+
createdAt: z.ZodString;
|
|
12
|
+
updatedAt: z.ZodString;
|
|
13
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
name: string;
|
|
16
|
+
id: string;
|
|
17
|
+
version: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
updatedAt: string;
|
|
20
|
+
access: string[];
|
|
21
|
+
description?: string | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
name: string;
|
|
24
|
+
id: string;
|
|
25
|
+
createdAt: string;
|
|
26
|
+
updatedAt: string;
|
|
27
|
+
access: string[];
|
|
28
|
+
version?: string | undefined;
|
|
29
|
+
description?: string | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Infer the RoleJSON type from the schema
|
|
33
|
+
*/
|
|
34
|
+
export type RoleJSON = z.infer<typeof RoleJSONSchema>;
|
|
2
35
|
export declare class Role {
|
|
3
36
|
readonly id: string;
|
|
4
37
|
readonly name: string;
|
|
@@ -9,5 +42,20 @@ export declare class Role {
|
|
|
9
42
|
constructor(data: RoleDTO);
|
|
10
43
|
hasPermission(permission: string): boolean;
|
|
11
44
|
static from(data: RoleDTO): Role | undefined;
|
|
12
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Serializes the Role instance to a JSON-compatible object
|
|
47
|
+
*/
|
|
48
|
+
toJSON(): RoleJSON;
|
|
49
|
+
/**
|
|
50
|
+
* Serializes the Role instance to a JSON string
|
|
51
|
+
*/
|
|
52
|
+
toJSONString(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Creates a Role instance from a JSON-compatible object or string
|
|
55
|
+
*/
|
|
56
|
+
static fromJSON(json: RoleJSON | string): Role | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Type guard using Zod schema validation
|
|
59
|
+
*/
|
|
60
|
+
static isRoleJSON(obj: unknown): obj is RoleJSON;
|
|
13
61
|
}
|