@merkaly/api 0.6.0 → 0.6.3

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 (81) hide show
  1. package/dist/account/address/request.validator.d.ts +2 -0
  2. package/dist/account/address/request.validator.js +13 -0
  3. package/dist/account/payment/request.validator.d.ts +2 -0
  4. package/dist/account/payment/request.validator.js +12 -0
  5. package/dist/account/user/request.validator.d.ts +2 -0
  6. package/dist/account/user/request.validator.js +11 -0
  7. package/dist/account/user/user.entity.d.ts +6 -1
  8. package/dist/app.schemas.d.ts +54 -0
  9. package/dist/app.types.d.ts +20 -0
  10. package/dist/finance/invoice/request.validator.d.ts +2 -0
  11. package/dist/finance/invoice/request.validator.js +15 -0
  12. package/dist/finance/payment/payment.entity.d.ts +5 -4
  13. package/dist/finance/payment/request.validator.d.ts +2 -0
  14. package/dist/finance/payment/request.validator.js +11 -0
  15. package/dist/finance/refund/refund.entity.d.ts +2 -1
  16. package/dist/finance/refund/request.validator.d.ts +2 -0
  17. package/dist/finance/refund/request.validator.js +11 -0
  18. package/dist/index.d.ts +32 -7
  19. package/dist/index.js +26 -2
  20. package/dist/inventory/catalog/attribute/request.validator.d.ts +2 -0
  21. package/dist/inventory/catalog/attribute/request.validator.js +11 -0
  22. package/dist/inventory/catalog/brand/request.validator.d.ts +2 -0
  23. package/dist/inventory/catalog/brand/request.validator.js +8 -0
  24. package/dist/inventory/catalog/category/category.entity.d.ts +3 -1
  25. package/dist/inventory/catalog/category/request.validator.d.ts +2 -0
  26. package/dist/inventory/catalog/category/request.validator.js +8 -0
  27. package/dist/inventory/catalog/collection/request.validator.d.ts +2 -0
  28. package/dist/inventory/catalog/collection/request.validator.js +10 -0
  29. package/dist/inventory/catalog/product/product.entity.d.ts +9 -5
  30. package/dist/inventory/catalog/product/request.validator.d.ts +12 -4
  31. package/dist/inventory/catalog/product/request.validator.js +50 -16
  32. package/dist/inventory/catalog/variant/request.validator.d.ts +3 -0
  33. package/dist/inventory/catalog/variant/request.validator.js +22 -0
  34. package/dist/inventory/catalog/variant/variant.entity.d.ts +5 -4
  35. package/dist/inventory/configuration/measurement/request.validator.d.ts +4 -0
  36. package/dist/inventory/configuration/measurement/request.validator.js +22 -0
  37. package/dist/inventory/stock/balance/balance.entity.d.ts +2 -0
  38. package/dist/inventory/stock/balance/balance.status.enum.d.ts +6 -0
  39. package/dist/inventory/stock/balance/balance.status.enum.js +7 -0
  40. package/dist/inventory/stock/balance/index.d.ts +1 -0
  41. package/dist/inventory/stock/balance/index.js +1 -1
  42. package/dist/inventory/stock/transfer/request.validator.d.ts +6 -2
  43. package/dist/inventory/stock/transfer/request.validator.js +22 -0
  44. package/dist/inventory/stock/transfer/transfer.item.entity.d.ts +2 -0
  45. package/dist/inventory/stock/warehouse/request.validator.d.ts +2 -0
  46. package/dist/inventory/stock/warehouse/request.validator.js +26 -0
  47. package/dist/order/purchase/item/item.entity.d.ts +3 -1
  48. package/dist/order/purchase/item/request.validator.d.ts +3 -0
  49. package/dist/order/purchase/item/request.validator.js +22 -0
  50. package/dist/order/purchase/transaction/request.validator.d.ts +5 -2
  51. package/dist/order/purchase/transaction/request.validator.js +26 -4
  52. package/dist/order/purchase/vendor/request.validator.d.ts +2 -0
  53. package/dist/order/purchase/vendor/request.validator.js +14 -0
  54. package/dist/order/sale/customer/request.validator.d.ts +2 -0
  55. package/dist/order/sale/customer/request.validator.js +17 -0
  56. package/dist/order/sale/item/item.entity.d.ts +3 -1
  57. package/dist/order/sale/item/request.validator.d.ts +3 -0
  58. package/dist/order/sale/item/request.validator.js +20 -0
  59. package/dist/order/sale/transaction/request.validator.d.ts +7 -2
  60. package/dist/order/sale/transaction/request.validator.js +31 -1
  61. package/dist/settings/organization/index.d.ts +1 -0
  62. package/dist/settings/organization/index.js +1 -0
  63. package/dist/settings/organization/organization.enum.d.ts +8 -12
  64. package/dist/settings/organization/organization.enum.js +8 -12
  65. package/dist/settings/organization/request.validator.d.ts +51 -0
  66. package/dist/settings/organization/request.validator.js +244 -0
  67. package/dist/transaction.entity.d.ts +3 -1
  68. package/package.json +16 -6
  69. package/dist/abstract.repository.d.ts +0 -63
  70. package/dist/finance/subscription/index.d.ts +0 -2
  71. package/dist/finance/subscription/index.js +0 -1
  72. package/dist/finance/subscription/subscription.entity.d.ts +0 -14
  73. package/dist/finance/subscription/subscription.enum.d.ts +0 -15
  74. package/dist/finance/subscription/subscription.enum.js +0 -17
  75. package/dist/finance/tax/index.d.ts +0 -2
  76. package/dist/finance/tax/index.js +0 -1
  77. package/dist/finance/tax/tax.entity.d.ts +0 -10
  78. package/dist/finance/tax/tax.enum.d.ts +0 -8
  79. package/dist/finance/tax/tax.enum.js +0 -9
  80. package/dist/not-equal-to.decorator.d.ts +0 -2
  81. package/dist/not-equal-to.decorator.js +0 -22
@@ -1,9 +1,12 @@
1
1
  import { AbstractRequestValidator } from '../../..';
2
+ import type { ItemEntity } from './';
2
3
  export declare class SaleItemRequestValidator extends AbstractRequestValidator {
4
+ product: string;
3
5
  variant: string;
4
6
  warehouse?: string;
5
7
  quantity: number;
6
8
  notes?: string;
7
9
  price: number;
10
+ constructor(item?: ItemEntity);
8
11
  get total(): number;
9
12
  }
@@ -10,15 +10,35 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  import * as class_validator_1 from "class-validator";
11
11
  import * as abstract_validator_1 from '../../../index.js';
12
12
  export class SaleItemRequestValidator extends abstract_validator_1.AbstractRequestValidator {
13
+ product;
13
14
  variant;
14
15
  warehouse;
15
16
  quantity = 1;
16
17
  notes;
17
18
  price = 0;
19
+ constructor(item) {
20
+ super();
21
+ if (!item) {
22
+ return;
23
+ }
24
+ this.product = (item.product?._id || item.product);
25
+ this.variant = (item.variant?._id || item.variant);
26
+ this.warehouse = (item.warehouse?._id || item.warehouse);
27
+ if (item.quantity !== undefined) {
28
+ this.quantity = item.quantity;
29
+ }
30
+ this.notes = item.notes;
31
+ this.price = item.price?.unit || item.get?.('price.unit') || this.price;
32
+ }
18
33
  get total() {
19
34
  return Math.trunc(this.quantity * this.price) || 0;
20
35
  }
21
36
  }
37
+ __decorate([
38
+ (0, class_validator_1.IsMongoId)(),
39
+ (0, class_validator_1.IsOptional)(),
40
+ __metadata("design:type", String)
41
+ ], SaleItemRequestValidator.prototype, "product", void 0);
22
42
  __decorate([
23
43
  (0, class_validator_1.IsMongoId)(),
24
44
  __metadata("design:type", String)
@@ -1,14 +1,17 @@
1
- import { FinancePaymentStatusEnum } from '../../../finance/payment';
1
+ import { FinancePaymentStatusEnum, FinancePaymentMethodEnum } from '../../../finance/payment';
2
2
  import { SaleTransactionStatusEnum } from './';
3
3
  import { AbstractRequestValidator } from '../../..';
4
4
  import { SaleItemRequestValidator } from '../item';
5
+ import type { SaleTransactionEntity } from './transaction.entity.js';
5
6
  export declare class CreateSaleTransactionRequestValidator extends AbstractRequestValidator {
6
7
  items: SaleItemRequestValidator[];
8
+ method: FinancePaymentMethodEnum;
7
9
  notes?: string;
8
10
  customer?: string;
9
11
  warehouse?: string;
10
12
  payment: FinancePaymentStatusEnum;
11
13
  status?: SaleTransactionStatusEnum;
14
+ constructor(order?: SaleTransactionEntity);
12
15
  get total(): {
13
16
  units: number;
14
17
  price: number;
@@ -16,5 +19,7 @@ export declare class CreateSaleTransactionRequestValidator extends AbstractReque
16
19
  }
17
20
  export declare class UpdateSaleTransactionRequestValidator extends CreateSaleTransactionRequestValidator {
18
21
  items: SaleItemRequestValidator[];
19
- status: SaleTransactionStatusEnum;
22
+ payment: any;
23
+ method: FinancePaymentMethodEnum;
24
+ status: any;
20
25
  }
@@ -15,11 +15,30 @@ import * as abstract_validator_1 from '../../../index.js';
15
15
  import * as request_validator_1 from '../item/index.js';
16
16
  export class CreateSaleTransactionRequestValidator extends abstract_validator_1.AbstractRequestValidator {
17
17
  items = [];
18
+ method;
18
19
  notes;
19
20
  customer;
20
21
  warehouse;
21
22
  payment = payment_enum_1.FinancePaymentStatusEnum.PENDING;
22
23
  status = transaction_enum_1.SaleTransactionStatusEnum.OPEN;
24
+ constructor(order) {
25
+ super();
26
+ if (!order) {
27
+ return;
28
+ }
29
+ this.notes = order.notes;
30
+ this.method = order.payment?.method;
31
+ this.customer = (order.customer?._id || order.customer);
32
+ if (order.status !== undefined) {
33
+ this.status = order.status;
34
+ }
35
+ if (order.payment?.status !== undefined) {
36
+ this.payment = order.payment.status;
37
+ }
38
+ const [warehouse] = [...new Set(order.items?.map((item) => item.warehouse).filter(Boolean))];
39
+ this.warehouse = (warehouse?._id || warehouse);
40
+ this.items = order.items?.map((it) => new request_validator_1.SaleItemRequestValidator(it)) ?? this.items;
41
+ }
23
42
  get total() {
24
43
  return this.items.reduce((acc, item) => {
25
44
  acc.units += item.quantity;
@@ -34,6 +53,10 @@ __decorate([
34
53
  (0, class_validator_1.ValidateNested)({ each: true }),
35
54
  __metadata("design:type", Array)
36
55
  ], CreateSaleTransactionRequestValidator.prototype, "items", void 0);
56
+ __decorate([
57
+ (0, class_validator_1.IsEnum)(payment_enum_1.FinancePaymentMethodEnum),
58
+ __metadata("design:type", String)
59
+ ], CreateSaleTransactionRequestValidator.prototype, "method", void 0);
37
60
  __decorate([
38
61
  (0, class_validator_1.IsString)(),
39
62
  (0, class_validator_1.Length)(0, 500),
@@ -63,12 +86,19 @@ __decorate([
63
86
  __metadata("design:type", Object)
64
87
  ], CreateSaleTransactionRequestValidator.prototype, "status", void 0);
65
88
  export class UpdateSaleTransactionRequestValidator extends CreateSaleTransactionRequestValidator {
89
+ payment = undefined;
90
+ status = undefined;
66
91
  }
67
92
  __decorate([
68
93
  (0, class_validator_1.IsOptional)(),
69
94
  __metadata("design:type", Array)
70
95
  ], UpdateSaleTransactionRequestValidator.prototype, "items", void 0);
96
+ __decorate([
97
+ (0, class_validator_1.ValidateIf)(() => false),
98
+ (0, class_transformer_1.Transform)(() => undefined),
99
+ __metadata("design:type", Object)
100
+ ], UpdateSaleTransactionRequestValidator.prototype, "payment", void 0);
71
101
  __decorate([
72
102
  (0, class_validator_1.IsOptional)(),
73
103
  __metadata("design:type", String)
74
- ], UpdateSaleTransactionRequestValidator.prototype, "status", void 0);
104
+ ], UpdateSaleTransactionRequestValidator.prototype, "method", void 0);
@@ -1,2 +1,3 @@
1
1
  export * from './organization.entity';
2
2
  export * from './organization.enum';
3
+ export * from './request.validator';
@@ -1 +1,2 @@
1
1
  export * from './organization.enum.js';
2
+ export * from './request.validator.js';
@@ -1,14 +1,10 @@
1
1
  export declare enum SettingsOrganizationEnum {
2
- APP_WORKSPACE = "app.workspace",
3
- APP_CONTACT = "app.contact",
4
- APP_REGIONAL = "app.regional",
5
- APP_ADDRESS = "app.address",
6
- INVENTORY_STOCK_TRANSFER_SEQUENCE = "inventory.stock.transfer.sequence",
7
- ORDER_SALE_TRANSACTION_SEQUENCE = "order.sale.transaction.sequence",
8
- ORDER_PURCHASE_TRANSACTION_SEQUENCE = "order.purchase.transaction.sequence",
9
- ORDER_SERVICE_TRANSACTION_SEQUENCE = "order.service.transaction.sequence",
10
- FINANCE_INVOICE_SEQUENCE = "finance.invoice.sequence",
11
- FINANCE_PAYMENT_SEQUENCE = "finance.payment.sequence",
12
- FINANCE_REFUND_SEQUENCE = "finance.refund.sequence",
13
- FINANCE_SUBSCRIPTION_SEQUENCE = "finance.subscription.sequence"
2
+ ORGANIZATION_ADDRESS = "organization.address",
3
+ ORGANIZATION_BILLING = "organization.billing",
4
+ ORGANIZATION_BRANDING = "organization.branding",
5
+ ORGANIZATION_CONTACT = "organization.contact",
6
+ ORGANIZATION_IDENTITY = "organization.identity",
7
+ ORGANIZATION_LOCALIZATION = "organization.localization",
8
+ ORGANIZATION_SECURITY = "organization.security",
9
+ ORGANIZATION_SEQUENCE = "organization.sequence"
14
10
  }
@@ -1,15 +1,11 @@
1
1
  export var SettingsOrganizationEnum;
2
2
  (function (SettingsOrganizationEnum) {
3
- SettingsOrganizationEnum["APP_WORKSPACE"] = "app.workspace";
4
- SettingsOrganizationEnum["APP_CONTACT"] = "app.contact";
5
- SettingsOrganizationEnum["APP_REGIONAL"] = "app.regional";
6
- SettingsOrganizationEnum["APP_ADDRESS"] = "app.address";
7
- SettingsOrganizationEnum["INVENTORY_STOCK_TRANSFER_SEQUENCE"] = "inventory.stock.transfer.sequence";
8
- SettingsOrganizationEnum["ORDER_SALE_TRANSACTION_SEQUENCE"] = "order.sale.transaction.sequence";
9
- SettingsOrganizationEnum["ORDER_PURCHASE_TRANSACTION_SEQUENCE"] = "order.purchase.transaction.sequence";
10
- SettingsOrganizationEnum["ORDER_SERVICE_TRANSACTION_SEQUENCE"] = "order.service.transaction.sequence";
11
- SettingsOrganizationEnum["FINANCE_INVOICE_SEQUENCE"] = "finance.invoice.sequence";
12
- SettingsOrganizationEnum["FINANCE_PAYMENT_SEQUENCE"] = "finance.payment.sequence";
13
- SettingsOrganizationEnum["FINANCE_REFUND_SEQUENCE"] = "finance.refund.sequence";
14
- SettingsOrganizationEnum["FINANCE_SUBSCRIPTION_SEQUENCE"] = "finance.subscription.sequence";
3
+ SettingsOrganizationEnum["ORGANIZATION_ADDRESS"] = "organization.address";
4
+ SettingsOrganizationEnum["ORGANIZATION_BILLING"] = "organization.billing";
5
+ SettingsOrganizationEnum["ORGANIZATION_BRANDING"] = "organization.branding";
6
+ SettingsOrganizationEnum["ORGANIZATION_CONTACT"] = "organization.contact";
7
+ SettingsOrganizationEnum["ORGANIZATION_IDENTITY"] = "organization.identity";
8
+ SettingsOrganizationEnum["ORGANIZATION_LOCALIZATION"] = "organization.localization";
9
+ SettingsOrganizationEnum["ORGANIZATION_SECURITY"] = "organization.security";
10
+ SettingsOrganizationEnum["ORGANIZATION_SEQUENCE"] = "organization.sequence";
15
11
  })(SettingsOrganizationEnum || (SettingsOrganizationEnum = {}));
@@ -0,0 +1,51 @@
1
+ import { AbstractRequestValidator } from '../..';
2
+ import type { SettingsOrganizationAddressContract, SettingsOrganizationBillingContract, SettingsOrganizationBrandingContract, SettingsOrganizationContactContract, SettingsOrganizationIdentityContract, SettingsOrganizationLocalizationContract, SettingsOrganizationLocationContract, SettingsOrganizationProfileContract } from '../..';
3
+ export declare class UpdateOrganizationLocationRequestValidator extends AbstractRequestValidator {
4
+ lat?: number;
5
+ lng?: number;
6
+ constructor(location?: SettingsOrganizationLocationContract);
7
+ }
8
+ export declare class UpdateOrganizationAddressRequestValidator extends AbstractRequestValidator {
9
+ city?: string;
10
+ code?: string;
11
+ country?: string;
12
+ line1?: string;
13
+ line2?: string;
14
+ location: UpdateOrganizationLocationRequestValidator;
15
+ state?: string;
16
+ constructor(address?: SettingsOrganizationAddressContract);
17
+ }
18
+ export declare class UpdateOrganizationContactRequestValidator extends AbstractRequestValidator {
19
+ email?: string;
20
+ phone?: string;
21
+ website?: string;
22
+ constructor(contact?: SettingsOrganizationContactContract);
23
+ }
24
+ export declare class UpdateOrganizationLocalizationRequestValidator extends AbstractRequestValidator {
25
+ currency?: string;
26
+ constructor(localization?: SettingsOrganizationLocalizationContract);
27
+ }
28
+ export declare class UpdateOrganizationIdentityRequestValidator extends AbstractRequestValidator {
29
+ legalName?: string;
30
+ name?: string;
31
+ taxId?: string;
32
+ constructor(identity?: SettingsOrganizationIdentityContract);
33
+ }
34
+ export declare class UpdateOrganizationBrandingRequestValidator extends AbstractRequestValidator {
35
+ description?: string;
36
+ logo?: string;
37
+ constructor(branding?: SettingsOrganizationBrandingContract);
38
+ }
39
+ export declare class UpdateOrganizationBillingRequestValidator extends AbstractRequestValidator {
40
+ email?: string;
41
+ constructor(billing?: SettingsOrganizationBillingContract);
42
+ }
43
+ export declare class UpdateOrganizationProfileRequestValidator extends AbstractRequestValidator {
44
+ address: UpdateOrganizationAddressRequestValidator;
45
+ billing: UpdateOrganizationBillingRequestValidator;
46
+ branding: UpdateOrganizationBrandingRequestValidator;
47
+ contact: UpdateOrganizationContactRequestValidator;
48
+ identity: UpdateOrganizationIdentityRequestValidator;
49
+ localization: UpdateOrganizationLocalizationRequestValidator;
50
+ constructor(profile?: Partial<SettingsOrganizationProfileContract>);
51
+ }
@@ -0,0 +1,244 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import * as class_transformer_1 from "class-transformer";
11
+ import * as class_validator_1 from "class-validator";
12
+ import * as abstract_validator_1 from '../../index.js';
13
+ export class UpdateOrganizationLocationRequestValidator extends abstract_validator_1.AbstractRequestValidator {
14
+ lat;
15
+ lng;
16
+ constructor(location) {
17
+ super();
18
+ this.lat = location?.lat;
19
+ this.lng = location?.lng;
20
+ }
21
+ }
22
+ __decorate([
23
+ (0, class_validator_1.IsNumber)(),
24
+ (0, class_validator_1.IsOptional)(),
25
+ __metadata("design:type", Number)
26
+ ], UpdateOrganizationLocationRequestValidator.prototype, "lat", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsNumber)(),
29
+ (0, class_validator_1.IsOptional)(),
30
+ __metadata("design:type", Number)
31
+ ], UpdateOrganizationLocationRequestValidator.prototype, "lng", void 0);
32
+ export class UpdateOrganizationAddressRequestValidator extends abstract_validator_1.AbstractRequestValidator {
33
+ city;
34
+ code;
35
+ country;
36
+ line1;
37
+ line2;
38
+ location;
39
+ state;
40
+ constructor(address) {
41
+ super();
42
+ this.city = address?.city;
43
+ this.code = address?.code;
44
+ this.country = address?.country;
45
+ this.line1 = address?.line1;
46
+ this.line2 = address?.line2;
47
+ this.location = new UpdateOrganizationLocationRequestValidator(address?.location);
48
+ this.state = address?.state;
49
+ }
50
+ }
51
+ __decorate([
52
+ (0, class_validator_1.IsString)(),
53
+ (0, class_validator_1.Length)(0, 100),
54
+ (0, class_validator_1.IsOptional)(),
55
+ __metadata("design:type", String)
56
+ ], UpdateOrganizationAddressRequestValidator.prototype, "city", void 0);
57
+ __decorate([
58
+ (0, class_validator_1.IsString)(),
59
+ (0, class_validator_1.Length)(0, 20),
60
+ (0, class_validator_1.IsOptional)(),
61
+ __metadata("design:type", String)
62
+ ], UpdateOrganizationAddressRequestValidator.prototype, "code", void 0);
63
+ __decorate([
64
+ (0, class_validator_1.IsString)(),
65
+ (0, class_validator_1.Length)(0, 2),
66
+ (0, class_validator_1.IsOptional)(),
67
+ __metadata("design:type", String)
68
+ ], UpdateOrganizationAddressRequestValidator.prototype, "country", void 0);
69
+ __decorate([
70
+ (0, class_validator_1.IsString)(),
71
+ (0, class_validator_1.Length)(0, 200),
72
+ (0, class_validator_1.IsOptional)(),
73
+ __metadata("design:type", String)
74
+ ], UpdateOrganizationAddressRequestValidator.prototype, "line1", void 0);
75
+ __decorate([
76
+ (0, class_validator_1.IsString)(),
77
+ (0, class_validator_1.Length)(0, 200),
78
+ (0, class_validator_1.IsOptional)(),
79
+ __metadata("design:type", String)
80
+ ], UpdateOrganizationAddressRequestValidator.prototype, "line2", void 0);
81
+ __decorate([
82
+ (0, class_validator_1.ValidateNested)(),
83
+ (0, class_transformer_1.Type)(() => UpdateOrganizationLocationRequestValidator),
84
+ (0, class_validator_1.IsOptional)(),
85
+ __metadata("design:type", UpdateOrganizationLocationRequestValidator)
86
+ ], UpdateOrganizationAddressRequestValidator.prototype, "location", void 0);
87
+ __decorate([
88
+ (0, class_validator_1.IsString)(),
89
+ (0, class_validator_1.Length)(0, 100),
90
+ (0, class_validator_1.IsOptional)(),
91
+ __metadata("design:type", String)
92
+ ], UpdateOrganizationAddressRequestValidator.prototype, "state", void 0);
93
+ export class UpdateOrganizationContactRequestValidator extends abstract_validator_1.AbstractRequestValidator {
94
+ email;
95
+ phone;
96
+ website;
97
+ constructor(contact) {
98
+ super();
99
+ this.email = contact?.email;
100
+ this.phone = contact?.phone;
101
+ this.website = contact?.website;
102
+ }
103
+ }
104
+ __decorate([
105
+ (0, class_validator_1.IsString)(),
106
+ (0, class_validator_1.Length)(0, 200),
107
+ (0, class_validator_1.IsOptional)(),
108
+ __metadata("design:type", String)
109
+ ], UpdateOrganizationContactRequestValidator.prototype, "email", void 0);
110
+ __decorate([
111
+ (0, class_validator_1.IsString)(),
112
+ (0, class_validator_1.Length)(0, 50),
113
+ (0, class_validator_1.IsOptional)(),
114
+ __metadata("design:type", String)
115
+ ], UpdateOrganizationContactRequestValidator.prototype, "phone", void 0);
116
+ __decorate([
117
+ (0, class_validator_1.IsString)(),
118
+ (0, class_validator_1.Length)(0, 2048),
119
+ (0, class_validator_1.IsOptional)(),
120
+ __metadata("design:type", String)
121
+ ], UpdateOrganizationContactRequestValidator.prototype, "website", void 0);
122
+ export class UpdateOrganizationLocalizationRequestValidator extends abstract_validator_1.AbstractRequestValidator {
123
+ currency;
124
+ constructor(localization) {
125
+ super();
126
+ this.currency = localization?.currency;
127
+ }
128
+ }
129
+ __decorate([
130
+ (0, class_validator_1.IsString)(),
131
+ (0, class_validator_1.Length)(0, 3),
132
+ (0, class_validator_1.IsOptional)(),
133
+ __metadata("design:type", String)
134
+ ], UpdateOrganizationLocalizationRequestValidator.prototype, "currency", void 0);
135
+ export class UpdateOrganizationIdentityRequestValidator extends abstract_validator_1.AbstractRequestValidator {
136
+ legalName;
137
+ name;
138
+ taxId;
139
+ constructor(identity) {
140
+ super();
141
+ this.legalName = identity?.legalName;
142
+ this.name = identity?.name;
143
+ this.taxId = identity?.taxId;
144
+ }
145
+ }
146
+ __decorate([
147
+ (0, class_validator_1.IsString)(),
148
+ (0, class_validator_1.Length)(0, 200),
149
+ (0, class_validator_1.IsOptional)(),
150
+ __metadata("design:type", String)
151
+ ], UpdateOrganizationIdentityRequestValidator.prototype, "legalName", void 0);
152
+ __decorate([
153
+ (0, class_validator_1.IsString)(),
154
+ (0, class_validator_1.Length)(0, 200),
155
+ (0, class_validator_1.IsOptional)(),
156
+ __metadata("design:type", String)
157
+ ], UpdateOrganizationIdentityRequestValidator.prototype, "name", void 0);
158
+ __decorate([
159
+ (0, class_validator_1.IsString)(),
160
+ (0, class_validator_1.Length)(0, 50),
161
+ (0, class_validator_1.IsOptional)(),
162
+ __metadata("design:type", String)
163
+ ], UpdateOrganizationIdentityRequestValidator.prototype, "taxId", void 0);
164
+ export class UpdateOrganizationBrandingRequestValidator extends abstract_validator_1.AbstractRequestValidator {
165
+ description;
166
+ logo;
167
+ constructor(branding) {
168
+ super();
169
+ this.description = branding?.description;
170
+ this.logo = branding?.logo;
171
+ }
172
+ }
173
+ __decorate([
174
+ (0, class_validator_1.IsString)(),
175
+ (0, class_validator_1.Length)(0, 1000),
176
+ (0, class_validator_1.IsOptional)(),
177
+ __metadata("design:type", String)
178
+ ], UpdateOrganizationBrandingRequestValidator.prototype, "description", void 0);
179
+ __decorate([
180
+ (0, class_validator_1.IsString)(),
181
+ (0, class_validator_1.Length)(0, 2048),
182
+ (0, class_validator_1.IsOptional)(),
183
+ __metadata("design:type", String)
184
+ ], UpdateOrganizationBrandingRequestValidator.prototype, "logo", void 0);
185
+ export class UpdateOrganizationBillingRequestValidator extends abstract_validator_1.AbstractRequestValidator {
186
+ email;
187
+ constructor(billing) {
188
+ super();
189
+ this.email = billing?.email;
190
+ }
191
+ }
192
+ __decorate([
193
+ (0, class_validator_1.IsString)(),
194
+ (0, class_validator_1.Length)(0, 200),
195
+ (0, class_validator_1.IsOptional)(),
196
+ __metadata("design:type", String)
197
+ ], UpdateOrganizationBillingRequestValidator.prototype, "email", void 0);
198
+ export class UpdateOrganizationProfileRequestValidator extends abstract_validator_1.AbstractRequestValidator {
199
+ address;
200
+ billing;
201
+ branding;
202
+ contact;
203
+ identity;
204
+ localization;
205
+ constructor(profile) {
206
+ super();
207
+ this.address = new UpdateOrganizationAddressRequestValidator(profile?.address);
208
+ this.billing = new UpdateOrganizationBillingRequestValidator(profile?.billing);
209
+ this.branding = new UpdateOrganizationBrandingRequestValidator(profile?.branding);
210
+ this.contact = new UpdateOrganizationContactRequestValidator(profile?.contact);
211
+ this.identity = new UpdateOrganizationIdentityRequestValidator(profile?.identity);
212
+ this.localization = new UpdateOrganizationLocalizationRequestValidator(profile?.localization);
213
+ }
214
+ }
215
+ __decorate([
216
+ (0, class_validator_1.ValidateNested)(),
217
+ (0, class_transformer_1.Type)(() => UpdateOrganizationAddressRequestValidator),
218
+ __metadata("design:type", UpdateOrganizationAddressRequestValidator)
219
+ ], UpdateOrganizationProfileRequestValidator.prototype, "address", void 0);
220
+ __decorate([
221
+ (0, class_validator_1.ValidateNested)(),
222
+ (0, class_transformer_1.Type)(() => UpdateOrganizationBillingRequestValidator),
223
+ __metadata("design:type", UpdateOrganizationBillingRequestValidator)
224
+ ], UpdateOrganizationProfileRequestValidator.prototype, "billing", void 0);
225
+ __decorate([
226
+ (0, class_validator_1.ValidateNested)(),
227
+ (0, class_transformer_1.Type)(() => UpdateOrganizationBrandingRequestValidator),
228
+ __metadata("design:type", UpdateOrganizationBrandingRequestValidator)
229
+ ], UpdateOrganizationProfileRequestValidator.prototype, "branding", void 0);
230
+ __decorate([
231
+ (0, class_validator_1.ValidateNested)(),
232
+ (0, class_transformer_1.Type)(() => UpdateOrganizationContactRequestValidator),
233
+ __metadata("design:type", UpdateOrganizationContactRequestValidator)
234
+ ], UpdateOrganizationProfileRequestValidator.prototype, "contact", void 0);
235
+ __decorate([
236
+ (0, class_validator_1.ValidateNested)(),
237
+ (0, class_transformer_1.Type)(() => UpdateOrganizationIdentityRequestValidator),
238
+ __metadata("design:type", UpdateOrganizationIdentityRequestValidator)
239
+ ], UpdateOrganizationProfileRequestValidator.prototype, "identity", void 0);
240
+ __decorate([
241
+ (0, class_validator_1.ValidateNested)(),
242
+ (0, class_transformer_1.Type)(() => UpdateOrganizationLocalizationRequestValidator),
243
+ __metadata("design:type", UpdateOrganizationLocalizationRequestValidator)
244
+ ], UpdateOrganizationProfileRequestValidator.prototype, "localization", void 0);
@@ -2,8 +2,9 @@ import { AccountUserEntity } from './account/user';
2
2
  import { FinancePaymentEntity } from './finance/payment';
3
3
  import { AbstractEntity } from './';
4
4
  import { StatusEntity } from './status.plugin.js';
5
+ import { ITransitionable } from './transitionable.interface.js';
5
6
  import { ItemEntity } from './order/sale/item';
6
- export declare class TransactionEntity<S extends string = string> extends AbstractEntity {
7
+ export declare class TransactionEntity<S extends string> extends AbstractEntity implements ITransitionable<S> {
7
8
  user: AccountUserEntity;
8
9
  notes?: string;
9
10
  status: S;
@@ -16,5 +17,6 @@ export declare class TransactionEntity<S extends string = string> extends Abstra
16
17
  units: number;
17
18
  };
18
19
  readonly payment: FinancePaymentEntity;
20
+ readonly isProcessable: boolean;
19
21
  readonly history: StatusEntity<S>[];
20
22
  }
package/package.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "name": "@merkaly/api",
3
- "version": "0.6.0",
3
+ "version": "0.6.3",
4
4
  "type": "module",
5
5
  "description": "Shared TypeScript interfaces and enums for Merkaly API",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/merkaly-io/api"
9
+ },
6
10
  "exports": {
7
11
  ".": {
8
12
  "types": "./dist/index.d.ts",
@@ -17,18 +21,24 @@
17
21
  "files": [
18
22
  "dist"
19
23
  ],
24
+ "scripts": {
25
+ "build": "tsx build.ts",
26
+ "prepack": "pnpm build",
27
+ "sync": "bash scripts/sync-from-api-app.sh"
28
+ },
20
29
  "dependencies": {
21
30
  "class-transformer": "^0.5.1",
22
31
  "class-validator": "^0.14.2",
23
32
  "reflect-metadata": "^0.2.2"
24
33
  },
25
34
  "devDependencies": {
26
- "tsx": "^4.0.0"
35
+ "@types/node": "^25.9.1",
36
+ "changelogen": "^0.6.2",
37
+ "tsx": "^4.0.0",
38
+ "typescript": "^5.7.3"
27
39
  },
28
40
  "publishConfig": {
29
41
  "access": "public"
30
42
  },
31
- "scripts": {
32
- "build": "tsx build.ts"
33
- }
34
- }
43
+ "packageManager": "pnpm@10.28.2"
44
+ }
@@ -1,63 +0,0 @@
1
- import { EventEmitter2 } from '@nestjs/event-emitter';
2
- import { ClsService } from 'nestjs-cls';
3
- import { LoggerService } from './';
4
- import { MongoService } from './mongo.service.js';
5
- import { AbstractEntity } from './abstract.entity.js';
6
- import { AbstractSchema } from './abstract.schema.js';
7
- import { SearchValidator } from './abstract.validator.js';
8
- import type { ClientSession, Document, FilterQuery, Model, PipelineStage, PopulateOptions, RootFilterQuery, UpdateQuery } from 'mongoose';
9
- type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
10
- type SystemKeys = '_id' | 'createdAt' | 'updatedAt' | 'deletedAt' | keyof Document;
11
- export type SaveEntityArgs<T> = {
12
- [K in keyof T as K extends SystemKeys ? never : T[K] extends (...args: any[]) => unknown ? never : Equal<{
13
- [Q in K]: T[K];
14
- }, {
15
- -readonly [Q in K]: T[K];
16
- }> extends true ? K : never]: T[K] extends Array<infer U> ? U extends object ? SaveEntityArgs<U>[] : T[K] : T[K] extends object ? T[K] extends Date ? T[K] : SaveEntityArgs<T[K]> | string : T[K];
17
- };
18
- export type EntityLocator<E extends AbstractEntity = AbstractEntity> = string | RootFilterQuery<E>;
19
- export interface ReadMethodOptions {
20
- join?: PopulateOptions[];
21
- select?: string;
22
- }
23
- export interface DeleteMethodOptions {
24
- soft?: boolean;
25
- }
26
- export interface SaveMethodOptions<E extends AbstractEntity> {
27
- locator?: EntityLocator<E>;
28
- options?: ReadMethodOptions;
29
- payload: UpdateQuery<E>;
30
- }
31
- export declare abstract class AbstractRepository<E extends AbstractEntity = AbstractEntity> {
32
- protected abstract readonly $schema: AbstractSchema<E>;
33
- protected readonly $logger: LoggerService;
34
- protected readonly $mongo: MongoService<E>;
35
- protected readonly $event: EventEmitter2;
36
- protected readonly $cls: ClsService;
37
- get $builder(): Model<E>;
38
- get $auth(): import("../../app.types").AppAuth;
39
- get $identity(): string;
40
- count(filters?: FilterQuery<E>, session?: ClientSession): Promise<number>;
41
- search(validator?: SearchValidator<E>, session?: ClientSession): Promise<{
42
- data: import("mongoose").IfAny<E, any, Document<unknown, {}, E, {}, {}> & (import("mongoose").Require_id<E> extends infer T ? T extends import("mongoose").Require_id<E> ? T extends {
43
- __v?: infer U;
44
- } ? T : T & {
45
- __v: number;
46
- } : never : never)>[];
47
- limit: number;
48
- pages: number;
49
- total: number;
50
- }>;
51
- aggregate<R = unknown>(pipeline: PipelineStage[], session?: ClientSession): Promise<R[]>;
52
- read(locator: EntityLocator<E>, options?: ReadMethodOptions): Promise<E>;
53
- create(payload: UpdateQuery<E>, options: ReadMethodOptions): Promise<E>;
54
- update(locator: EntityLocator<E>, payload: UpdateQuery<E>, options?: ReadMethodOptions): Promise<E>;
55
- delete(locator: EntityLocator<E>, options?: DeleteMethodOptions): Promise<void>;
56
- protected save({ locator, payload, options }: SaveMethodOptions<E>): Promise<E>;
57
- private sanitizePaths;
58
- private applyPopulate;
59
- private handlePopulateError;
60
- private compactPayload;
61
- private hasUpdateOperators;
62
- }
63
- export {};
@@ -1,2 +0,0 @@
1
- export * from './subscription.entity';
2
- export * from './subscription.enum';
@@ -1 +0,0 @@
1
- export * from './subscription.enum.js';
@@ -1,14 +0,0 @@
1
- import { AbstractEntity } from '../..';
2
- import { FinanceSubscriptionIntervalEnum, FinanceSubscriptionStatusEnum } from './subscription.enum.js';
3
- export declare class FinanceSubscriptionEntity extends AbstractEntity {
4
- name: string;
5
- description?: string;
6
- price: number;
7
- status: FinanceSubscriptionStatusEnum;
8
- interval: FinanceSubscriptionIntervalEnum;
9
- intervalCount: number;
10
- currentPeriodStart?: Date;
11
- currentPeriodEnd?: Date;
12
- cancelledAt?: Date;
13
- readonly number: string;
14
- }
@@ -1,15 +0,0 @@
1
- export declare enum FinanceSubscriptionStatusEnum {
2
- ACTIVE = "ACTIVE",
3
- TRIALING = "TRIALING",
4
- PAST_DUE = "PAST_DUE",
5
- PAUSED = "PAUSED",
6
- CANCELLED = "CANCELLED",
7
- EXPIRED = "EXPIRED"
8
- }
9
- export declare enum FinanceSubscriptionIntervalEnum {
10
- DAILY = "DAILY",
11
- WEEKLY = "WEEKLY",
12
- MONTHLY = "MONTHLY",
13
- QUARTERLY = "QUARTERLY",
14
- YEARLY = "YEARLY"
15
- }