@managemint-solutions/sdk 0.26.0 → 0.28.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/billing/dto.d.ts +12 -0
- package/dist/billing/dto.js +51 -1
- package/dist/billing/index.d.ts +10 -0
- package/dist/billing/index.js +54 -0
- package/dist/billing/invoices/index.d.ts +3 -11
- package/dist/billing/invoices/index.js +3 -22
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -2
- package/dist/tasks/dto.js +0 -2
- package/package.json +2 -2
package/dist/billing/dto.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { GetPaymentsDto as GetPaymentsDtoType, PaymentIdDto as PaymentIdDtoType } from '@managemint-solutions/entities/billing/payments/dto';
|
|
2
|
+
import { BillingTransactionStatus, BillingTransactionType } from '@managemint-solutions/entities/billing/enum';
|
|
1
3
|
/**
|
|
2
4
|
* The client supplies the idempotency key for every money operation
|
|
3
5
|
* (docs/billing/00-overview.md principle 1). A uuid v4 keeps it unique per
|
|
@@ -35,3 +37,13 @@ export declare class PurchaseModuleDto {
|
|
|
35
37
|
readonly module_id: string;
|
|
36
38
|
readonly idempotency_key: string;
|
|
37
39
|
}
|
|
40
|
+
/** GET /billing/payments/:paymentId. v7: `billing_transactions.mms_id` defaults from `uuidv7()`. */
|
|
41
|
+
export declare class PaymentIdDto implements PaymentIdDtoType {
|
|
42
|
+
readonly paymentId: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class GetPaymentsQueryDto implements Omit<GetPaymentsDtoType, 'status_in' | 'type_in'> {
|
|
45
|
+
readonly page: number;
|
|
46
|
+
readonly page_size: number;
|
|
47
|
+
readonly status_in?: BillingTransactionStatus[] | null;
|
|
48
|
+
readonly type_in?: BillingTransactionType[] | null;
|
|
49
|
+
}
|
package/dist/billing/dto.js
CHANGED
|
@@ -9,8 +9,11 @@ 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.PurchaseModuleDto = exports.ReinstateSubscriptionDto = exports.CancelSubscriptionDto = exports.InitialPaymentDto = void 0;
|
|
12
|
+
exports.GetPaymentsQueryDto = exports.PaymentIdDto = exports.PurchaseModuleDto = exports.ReinstateSubscriptionDto = exports.CancelSubscriptionDto = exports.InitialPaymentDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const enum_1 = require("@managemint-solutions/entities/billing/enum");
|
|
16
|
+
const validators_1 = require("../validators");
|
|
14
17
|
/**
|
|
15
18
|
* The client supplies the idempotency key for every money operation
|
|
16
19
|
* (docs/billing/00-overview.md principle 1). A uuid v4 keeps it unique per
|
|
@@ -72,3 +75,50 @@ __decorate([
|
|
|
72
75
|
(0, class_validator_1.IsUUID)('4', { message: 'An idempotency key is required and must be a v4 uuid' }),
|
|
73
76
|
__metadata("design:type", String)
|
|
74
77
|
], PurchaseModuleDto.prototype, "idempotency_key", void 0);
|
|
78
|
+
/** GET /billing/payments/:paymentId. v7: `billing_transactions.mms_id` defaults from `uuidv7()`. */
|
|
79
|
+
class PaymentIdDto {
|
|
80
|
+
paymentId;
|
|
81
|
+
}
|
|
82
|
+
exports.PaymentIdDto = PaymentIdDto;
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, class_validator_1.IsUUID)('7', { message: 'Invalid payment ID format' }),
|
|
85
|
+
__metadata("design:type", String)
|
|
86
|
+
], PaymentIdDto.prototype, "paymentId", void 0);
|
|
87
|
+
// `status_in` and `type_in` arrive as CSV strings and are transformed to enum values, so
|
|
88
|
+
// they are omitted from the implemented contract — the same exception GetInvoicesQueryDto makes.
|
|
89
|
+
class GetPaymentsQueryDto {
|
|
90
|
+
page = 1;
|
|
91
|
+
page_size = 25;
|
|
92
|
+
status_in;
|
|
93
|
+
type_in;
|
|
94
|
+
}
|
|
95
|
+
exports.GetPaymentsQueryDto = GetPaymentsQueryDto;
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, class_validator_1.IsOptional)(),
|
|
98
|
+
(0, class_transformer_1.Transform)(({ value }) => (value ? Number(value) : 1), { toClassOnly: true }),
|
|
99
|
+
(0, class_validator_1.IsNumber)({}, { message: 'Page must be a number' }),
|
|
100
|
+
(0, class_validator_1.Min)(1, { message: 'Page must be at least 1' }),
|
|
101
|
+
__metadata("design:type", Number)
|
|
102
|
+
], GetPaymentsQueryDto.prototype, "page", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_validator_1.IsOptional)(),
|
|
105
|
+
(0, class_transformer_1.Transform)(({ value }) => (value ? Number(value) : 25), { toClassOnly: true }),
|
|
106
|
+
(0, class_validator_1.IsNumber)({}, { message: 'Page size must be a number' }),
|
|
107
|
+
(0, class_validator_1.Min)(1, { message: 'Page size must be at least 1' }),
|
|
108
|
+
(0, class_validator_1.Max)(100, { message: 'Page size cannot exceed 100' }),
|
|
109
|
+
__metadata("design:type", Number)
|
|
110
|
+
], GetPaymentsQueryDto.prototype, "page_size", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, class_validator_1.IsOptional)(),
|
|
113
|
+
(0, validators_1.IsNullable)(),
|
|
114
|
+
(0, class_transformer_1.Transform)(({ value }) => (value ? value.split(',').map((entry) => entry.trim()) : null), { toClassOnly: true }),
|
|
115
|
+
(0, class_validator_1.IsEnum)(enum_1.BillingTransactionStatus, { each: true, message: 'Invalid payment status filter' }),
|
|
116
|
+
__metadata("design:type", Object)
|
|
117
|
+
], GetPaymentsQueryDto.prototype, "status_in", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
(0, class_validator_1.IsOptional)(),
|
|
120
|
+
(0, validators_1.IsNullable)(),
|
|
121
|
+
(0, class_transformer_1.Transform)(({ value }) => (value ? value.split(',').map((entry) => entry.trim()) : null), { toClassOnly: true }),
|
|
122
|
+
(0, class_validator_1.IsEnum)(enum_1.BillingTransactionType, { each: true, message: 'Invalid payment type filter' }),
|
|
123
|
+
__metadata("design:type", Object)
|
|
124
|
+
], GetPaymentsQueryDto.prototype, "type_in", void 0);
|
package/dist/billing/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { BillingTransactionRow, CreateBillingEventDto } from '@managemint-solutions/entities/billing';
|
|
2
|
+
import type { PaymentEntity, PaymentSummary } from '@managemint-solutions/entities/billing/payments';
|
|
3
|
+
import type { MmsList } from '@managemint-solutions/entities/common';
|
|
2
4
|
import { type AuditActor, type AuditResource, type AuditRow } from '../audit';
|
|
3
5
|
import type { TypedSupabaseClient } from '../client';
|
|
6
|
+
import type { GetPaymentsQueryDto } from './dto';
|
|
4
7
|
export * from './dto';
|
|
5
8
|
/**
|
|
6
9
|
* The readable half of the ledger. `billing_transactions` and `billing_events` are org-scoped
|
|
@@ -16,6 +19,13 @@ export declare class BillingReadsResource {
|
|
|
16
19
|
openTransaction(openStatuses: string[]): Promise<BillingTransactionRow | null>;
|
|
17
20
|
/** The replay lookup: the same key must never raise a second charge. */
|
|
18
21
|
transactionByIdempotencyKey(idempotencyKey: string): Promise<BillingTransactionRow | null>;
|
|
22
|
+
/**
|
|
23
|
+
* The organization's payments, newest first: every ledger row, whatever its type or
|
|
24
|
+
* status. RLS scopes the rows; the eq is belt-and-braces.
|
|
25
|
+
*/
|
|
26
|
+
listPayments(query: GetPaymentsQueryDto): Promise<MmsList<PaymentSummary>>;
|
|
27
|
+
/** The full payment record, or null — RLS makes another tenant's id look missing. */
|
|
28
|
+
paymentById(paymentId: string): Promise<PaymentEntity | null>;
|
|
19
29
|
/** Whether a catalog module is still on sale. The catalog is public, not tenant-scoped. */
|
|
20
30
|
isModuleActive(moduleId: string): Promise<boolean>;
|
|
21
31
|
}
|
package/dist/billing/index.js
CHANGED
|
@@ -19,11 +19,20 @@ const enum_1 = require("@managemint-solutions/entities/audit-trail/enum");
|
|
|
19
19
|
const enum_2 = require("@managemint-solutions/entities/billing/enum");
|
|
20
20
|
const audit_1 = require("../audit");
|
|
21
21
|
const errors_1 = require("../errors");
|
|
22
|
+
const transforms_1 = require("../transforms");
|
|
22
23
|
__exportStar(require("./dto"), exports);
|
|
23
24
|
const BILLING_TRANSACTIONS_TABLE = {
|
|
24
25
|
table: 'billing_transactions',
|
|
25
26
|
entityType: enum_1.AuditTrailEntityType.BILLING_TRANSACTIONS,
|
|
26
27
|
};
|
|
28
|
+
/** The wire shape of a payment list row — never the internal bigint id, never the checkout secrets. */
|
|
29
|
+
const PAYMENT_SUMMARY_SELECT = 'mms_id, created_at, transaction_type, transaction_status, amount_minor, currency, paid_at, failure_reason';
|
|
30
|
+
/**
|
|
31
|
+
* PaymentEntity, column for column, plus the renewal's invoice through the unique
|
|
32
|
+
* `invoices.billing_transaction_id` foreign key. The Paystack access code and
|
|
33
|
+
* authorization url stay out: they are checkout secrets, not record data.
|
|
34
|
+
*/
|
|
35
|
+
const PAYMENT_ENTITY_SELECT = `${PAYMENT_SUMMARY_SELECT}, updated_at, active_seat_count, paid_seat_count, modules, module_price_snapshot, proration_start_at, proration_end_at, paystack_reference, invoices(mms_id)`;
|
|
27
36
|
/**
|
|
28
37
|
* The readable half of the ledger. `billing_transactions` and `billing_events` are org-scoped
|
|
29
38
|
* for READ, and the catalog is readable by `anon`, so all of this runs perfectly well on the
|
|
@@ -61,6 +70,51 @@ class BillingReadsResource {
|
|
|
61
70
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
62
71
|
return data ? (0, audit_1.withoutInternalId)(data) : null;
|
|
63
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* The organization's payments, newest first: every ledger row, whatever its type or
|
|
75
|
+
* status. RLS scopes the rows; the eq is belt-and-braces.
|
|
76
|
+
*/
|
|
77
|
+
async listPayments(query) {
|
|
78
|
+
const page = query.page;
|
|
79
|
+
const pageSize = query.page_size;
|
|
80
|
+
const offset = (page - 1) * pageSize;
|
|
81
|
+
// Exact, like the invoice list: an organization has tens of payments, not tens of
|
|
82
|
+
// thousands, and the planner's estimate on a young table is wrong until its first ANALYZE.
|
|
83
|
+
let paymentsQuery = this.supabase
|
|
84
|
+
.from('billing_transactions')
|
|
85
|
+
.select(PAYMENT_SUMMARY_SELECT, { count: 'exact' })
|
|
86
|
+
.eq('organization_id', this.actor.organization_id)
|
|
87
|
+
.order('created_at', { ascending: false })
|
|
88
|
+
.range(offset, offset + pageSize - 1);
|
|
89
|
+
if (query.status_in && query.status_in.length > 0) {
|
|
90
|
+
paymentsQuery = paymentsQuery.in('transaction_status', query.status_in);
|
|
91
|
+
}
|
|
92
|
+
if (query.type_in && query.type_in.length > 0) {
|
|
93
|
+
paymentsQuery = paymentsQuery.in('transaction_type', query.type_in);
|
|
94
|
+
}
|
|
95
|
+
const { data, error, count } = await paymentsQuery;
|
|
96
|
+
if (error)
|
|
97
|
+
throw (0, errors_1.mapPostgrestError)(error);
|
|
98
|
+
return (0, transforms_1.toMmsList)(data, page, pageSize, count);
|
|
99
|
+
}
|
|
100
|
+
/** The full payment record, or null — RLS makes another tenant's id look missing. */
|
|
101
|
+
async paymentById(paymentId) {
|
|
102
|
+
const { data, error } = await this.supabase
|
|
103
|
+
.from('billing_transactions')
|
|
104
|
+
.select(PAYMENT_ENTITY_SELECT)
|
|
105
|
+
.eq('mms_id', paymentId)
|
|
106
|
+
.eq('organization_id', this.actor.organization_id)
|
|
107
|
+
.maybeSingle();
|
|
108
|
+
if (error)
|
|
109
|
+
throw (0, errors_1.mapPostgrestError)(error);
|
|
110
|
+
if (!data)
|
|
111
|
+
return null;
|
|
112
|
+
// Postgrest returns a one-to-one embed as an object once it detects the unique key, and
|
|
113
|
+
// as an array before it does; either way there is at most one invoice per row.
|
|
114
|
+
const { invoices, ...payment } = data;
|
|
115
|
+
const invoice = Array.isArray(invoices) ? (invoices[0] ?? null) : invoices;
|
|
116
|
+
return { ...payment, invoice_id: invoice?.mms_id ?? null };
|
|
117
|
+
}
|
|
64
118
|
/** Whether a catalog module is still on sale. The catalog is public, not tenant-scoped. */
|
|
65
119
|
async isModuleActive(moduleId) {
|
|
66
120
|
const { data, error } = await this.supabase
|
|
@@ -20,8 +20,9 @@ export declare class InvoicesReadsResource {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* The document writes, on the service client only — every write policy on `invoices` is
|
|
23
|
-
* `false` for `authenticated`. Rows are written by the api's billing service beside
|
|
24
|
-
* ledger write,
|
|
23
|
+
* `false` for `authenticated`. Rows are written by the api's billing service beside a
|
|
24
|
+
* renewal's ledger write — a renewal is inserted already paid, so an invoice never moves
|
|
25
|
+
* status after it is issued — never by a caller.
|
|
25
26
|
*/
|
|
26
27
|
export declare class InvoicesResource extends InvoicesReadsResource {
|
|
27
28
|
private readonly invoices;
|
|
@@ -34,13 +35,4 @@ export declare class InvoicesResource extends InvoicesReadsResource {
|
|
|
34
35
|
* concurrent insert — the retry lives there, not here.
|
|
35
36
|
*/
|
|
36
37
|
maxNumber(): Promise<number>;
|
|
37
|
-
/**
|
|
38
|
-
* Mirrors a transaction status transition onto its invoice. Resolves to null when the
|
|
39
|
-
* transaction has no invoice — nothing written, nothing audited.
|
|
40
|
-
*/
|
|
41
|
-
syncStatus(billingTransactionId: string, patch: {
|
|
42
|
-
status: string;
|
|
43
|
-
paid_at?: string | null;
|
|
44
|
-
paystack_reference?: string | null;
|
|
45
|
-
}): Promise<AuditRow | null>;
|
|
46
38
|
}
|
|
@@ -77,8 +77,9 @@ class InvoicesReadsResource {
|
|
|
77
77
|
exports.InvoicesReadsResource = InvoicesReadsResource;
|
|
78
78
|
/**
|
|
79
79
|
* The document writes, on the service client only — every write policy on `invoices` is
|
|
80
|
-
* `false` for `authenticated`. Rows are written by the api's billing service beside
|
|
81
|
-
* ledger write,
|
|
80
|
+
* `false` for `authenticated`. Rows are written by the api's billing service beside a
|
|
81
|
+
* renewal's ledger write — a renewal is inserted already paid, so an invoice never moves
|
|
82
|
+
* status after it is issued — never by a caller.
|
|
82
83
|
*/
|
|
83
84
|
class InvoicesResource extends InvoicesReadsResource {
|
|
84
85
|
invoices;
|
|
@@ -107,25 +108,5 @@ class InvoicesResource extends InvoicesReadsResource {
|
|
|
107
108
|
throw (0, errors_1.mapPostgrestError)(error);
|
|
108
109
|
return data?.invoice_number ?? 0;
|
|
109
110
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Mirrors a transaction status transition onto its invoice. Resolves to null when the
|
|
112
|
-
* transaction has no invoice — nothing written, nothing audited.
|
|
113
|
-
*/
|
|
114
|
-
async syncStatus(billingTransactionId, patch) {
|
|
115
|
-
const { data, error } = await this.supabase
|
|
116
|
-
.from('invoices')
|
|
117
|
-
.select('mms_id')
|
|
118
|
-
.eq('billing_transaction_id', billingTransactionId)
|
|
119
|
-
.eq('organization_id', this.actor.organization_id)
|
|
120
|
-
.maybeSingle();
|
|
121
|
-
if (error)
|
|
122
|
-
throw (0, errors_1.mapPostgrestError)(error);
|
|
123
|
-
if (!data)
|
|
124
|
-
return null;
|
|
125
|
-
return this.invoices.update(data.mms_id, {
|
|
126
|
-
...patch,
|
|
127
|
-
updated_at: new Date().toISOString(),
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
111
|
}
|
|
131
112
|
exports.InvoicesResource = InvoicesResource;
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type { SupabaseClientErrorInit } from './errors';
|
|
|
11
11
|
export { EmptyToNull, IsNullable } from './validators';
|
|
12
12
|
export type { AuditActor, AuditChanges, AuditEntry, AuditErrorHandler, AuditGuard, AuditRow, AuditedTable, AuditedTableOptions, } from './audit';
|
|
13
13
|
export { GetAuditTrailDto } from './audit';
|
|
14
|
-
export { CancelSubscriptionDto, InitialPaymentDto, PurchaseModuleDto, ReinstateSubscriptionDto, } from './billing';
|
|
14
|
+
export { CancelSubscriptionDto, GetPaymentsQueryDto, InitialPaymentDto, PaymentIdDto, PurchaseModuleDto, ReinstateSubscriptionDto, } from './billing';
|
|
15
15
|
export { GetInvoicesQueryDto, InvoiceIdDto } from './billing/invoices';
|
|
16
16
|
export { AddStatusDto, GetStatusesDto, StatusIdDto, UpdateStatusDto } from './statuses';
|
|
17
17
|
export { AddAdditionalDetailsDto, AdditionalDetailsIdDto, GetAdditionalDetailsDto, IsAdditionalDetailsValueByType, UpdateAdditionalDetailsDto, } from './additional-details';
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
// their classes are not exported: a consumer never constructs one, and every export is a contract
|
|
8
8
|
// to keep. The row and input types they produce and accept are exported for annotations.
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
11
|
-
exports.monthlyTotalMinor = exports.UpdateTaskDto = exports.TaskIdDto = exports.GetTasksDto = exports.CreateTaskDto = exports.UpdateProjectDto = exports.ProjectIdDto = exports.GetProjectsDto = exports.CreateProjectDto = void 0;
|
|
10
|
+
exports.CreateClientDto = exports.ClientIdDto = exports.SupportingFileIdDto = exports.GetSupportingFilesDto = exports.UserIdDto = exports.UpdateUserDto = exports.UpdateMyProfileDto = exports.GetUsersQueryDto = exports.AddUserDto = exports.UpdatePermissionsDto = exports.PermissionsResource = exports.UpdateOrganizationDto = exports.CreateOrganizationDto = exports.NotificationIdDto = exports.GetNotificationsDto = exports.NoteIdDto = exports.GetNotesDto = exports.AddNoteDto = exports.UpdateAdditionalDetailsDto = exports.IsAdditionalDetailsValueByType = exports.GetAdditionalDetailsDto = exports.AdditionalDetailsIdDto = exports.AddAdditionalDetailsDto = exports.UpdateStatusDto = exports.StatusIdDto = exports.GetStatusesDto = exports.AddStatusDto = exports.InvoiceIdDto = exports.GetInvoicesQueryDto = exports.ReinstateSubscriptionDto = exports.PurchaseModuleDto = exports.PaymentIdDto = exports.InitialPaymentDto = exports.GetPaymentsQueryDto = exports.CancelSubscriptionDto = exports.GetAuditTrailDto = exports.IsNullable = exports.EmptyToNull = exports.SupabaseClientError = exports.createSupabaseServiceClient = exports.SupabaseServiceClient = exports.SignInDto = exports.SendPasswordResetEmailDto = exports.ResetPasswordDto = exports.ExchangeTokenHashDto = exports.ExchangeRefreshTokenDto = exports.createSupabaseAuthClient = exports.SupabaseAuthClient = exports.createSupabaseClient = exports.SupabaseClient = void 0;
|
|
11
|
+
exports.monthlyTotalMinor = exports.UpdateTaskDto = exports.TaskIdDto = exports.GetTasksDto = exports.CreateTaskDto = exports.UpdateProjectDto = exports.ProjectIdDto = exports.GetProjectsDto = exports.CreateProjectDto = exports.UpdateClientDto = exports.GetClientsDto = void 0;
|
|
12
12
|
var client_1 = require("./client");
|
|
13
13
|
Object.defineProperty(exports, "SupabaseClient", { enumerable: true, get: function () { return client_1.SupabaseClient; } });
|
|
14
14
|
Object.defineProperty(exports, "createSupabaseClient", { enumerable: true, get: function () { return client_1.createSupabaseClient; } });
|
|
@@ -33,7 +33,9 @@ var audit_1 = require("./audit");
|
|
|
33
33
|
Object.defineProperty(exports, "GetAuditTrailDto", { enumerable: true, get: function () { return audit_1.GetAuditTrailDto; } });
|
|
34
34
|
var billing_1 = require("./billing");
|
|
35
35
|
Object.defineProperty(exports, "CancelSubscriptionDto", { enumerable: true, get: function () { return billing_1.CancelSubscriptionDto; } });
|
|
36
|
+
Object.defineProperty(exports, "GetPaymentsQueryDto", { enumerable: true, get: function () { return billing_1.GetPaymentsQueryDto; } });
|
|
36
37
|
Object.defineProperty(exports, "InitialPaymentDto", { enumerable: true, get: function () { return billing_1.InitialPaymentDto; } });
|
|
38
|
+
Object.defineProperty(exports, "PaymentIdDto", { enumerable: true, get: function () { return billing_1.PaymentIdDto; } });
|
|
37
39
|
Object.defineProperty(exports, "PurchaseModuleDto", { enumerable: true, get: function () { return billing_1.PurchaseModuleDto; } });
|
|
38
40
|
Object.defineProperty(exports, "ReinstateSubscriptionDto", { enumerable: true, get: function () { return billing_1.ReinstateSubscriptionDto; } });
|
|
39
41
|
var invoices_1 = require("./billing/invoices");
|
package/dist/tasks/dto.js
CHANGED
|
@@ -192,7 +192,6 @@ __decorate([
|
|
|
192
192
|
(0, validators_1.IsNullable)(),
|
|
193
193
|
(0, class_validator_1.ValidateIf)((o) => o.description !== null && o.description !== undefined),
|
|
194
194
|
(0, class_validator_1.IsString)({ message: 'Invalid description' }),
|
|
195
|
-
(0, class_validator_1.MaxLength)(500, { message: 'Description cannot exceed 500 characters' }),
|
|
196
195
|
__metadata("design:type", Object)
|
|
197
196
|
], CreateTaskDto.prototype, "description", void 0);
|
|
198
197
|
__decorate([
|
|
@@ -266,7 +265,6 @@ __decorate([
|
|
|
266
265
|
,
|
|
267
266
|
(0, class_validator_1.ValidateIf)((o) => o.description !== null && o.description !== undefined),
|
|
268
267
|
(0, class_validator_1.IsString)({ message: 'Invalid description' }),
|
|
269
|
-
(0, class_validator_1.MaxLength)(500, { message: 'Description cannot exceed 500 characters' }),
|
|
270
268
|
__metadata("design:type", Object)
|
|
271
269
|
], UpdateTaskDto.prototype, "description", void 0);
|
|
272
270
|
__decorate([
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@managemint-solutions/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Typed Supabase data-access SDK for ManageMint Solutions",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Scott Bebington <scottbebington@gmail.com>",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"testEnvironment": "node"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@managemint-solutions/entities": "^1.
|
|
50
|
+
"@managemint-solutions/entities": "^1.12.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@nestjs/common": "^11.0.0",
|