@hosterai/types 0.0.26 → 0.0.28

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 (180) hide show
  1. package/README.md +49 -8
  2. package/dist/dtos/attachment.dto.js +17 -0
  3. package/dist/dtos/attribute-field.dto.d.ts +9 -10
  4. package/dist/dtos/attribute-field.dto.js +28 -38
  5. package/dist/dtos/base-response.dto.js +11 -0
  6. package/dist/dtos/client-data.dto.js +82 -0
  7. package/dist/dtos/company-data.dto.js +97 -0
  8. package/dist/dtos/country.dto.js +17 -0
  9. package/dist/dtos/error-response.dto.js +15 -0
  10. package/dist/dtos/field.dto.d.ts +17 -1
  11. package/dist/dtos/field.dto.js +41 -10
  12. package/dist/dtos/info.dto.d.ts +0 -6
  13. package/dist/dtos/info.dto.js +0 -24
  14. package/dist/dtos/invoice/invoice-item-data.dto.js +7 -0
  15. package/dist/dtos/invoice/requests/credit-note-request.dto.js +6 -0
  16. package/dist/dtos/invoice/requests/invoice-request.dto.js +6 -0
  17. package/dist/dtos/invoice/requests/proforma-invoice-request.dto.d.ts +3 -0
  18. package/dist/dtos/invoice/requests/proforma-invoice-request.dto.js +51 -3
  19. package/dist/dtos/invoice/requests/tax-details-request.dto.d.ts +31 -0
  20. package/dist/dtos/invoice/requests/tax-details-request.dto.js +84 -0
  21. package/dist/dtos/invoice/responses/proforma-invoice-response.dto.js +17 -0
  22. package/dist/dtos/invoice/responses/tax-details-response.dto.d.ts +20 -0
  23. package/dist/dtos/invoice/responses/tax-details-response.dto.js +56 -0
  24. package/dist/dtos/invoice/tin-validation-details.dto.d.ts +51 -0
  25. package/dist/dtos/invoice/tin-validation-details.dto.js +165 -0
  26. package/dist/dtos/invoice/transaction-data.dto.js +22 -0
  27. package/dist/dtos/invoice-contact-data.dto.js +102 -0
  28. package/dist/dtos/item-data.dto.d.ts +2 -2
  29. package/dist/dtos/item-data.dto.js +63 -2
  30. package/dist/dtos/jwt.dto.js +27 -0
  31. package/dist/dtos/multilang-text.dto.js +12 -0
  32. package/dist/dtos/notification/receiver/receiver-email.dto.js +19 -0
  33. package/dist/dtos/notification/receiver/receiver-sms.dto.js +7 -0
  34. package/dist/dtos/notification/requests/notification-send-request.dto.d.ts +3 -3
  35. package/dist/dtos/notification/requests/notification-send-request.dto.js +27 -3
  36. package/dist/dtos/notification/responses/notification-send-response.dto.js +6 -0
  37. package/dist/dtos/notification/sender/sender-email.dto.js +26 -0
  38. package/dist/dtos/notification/sender/sender-push.dto.js +36 -0
  39. package/dist/dtos/notification/sender/sender-sms.dto.js +11 -0
  40. package/dist/dtos/product/product-info.dto.d.ts +4 -4
  41. package/dist/dtos/product/product-info.dto.js +7 -7
  42. package/dist/dtos/product/product-item-data.dto.d.ts +1 -1
  43. package/dist/dtos/product/product-item-data.dto.js +8 -1
  44. package/dist/dtos/product/requests/product-create-request.dto.d.ts +1 -1
  45. package/dist/dtos/product/requests/product-create-request.dto.js +12 -1
  46. package/dist/dtos/product/requests/product-delete-request.dto.d.ts +1 -1
  47. package/dist/dtos/product/requests/product-delete-request.dto.js +12 -1
  48. package/dist/dtos/product/requests/product-downgradable-request.dto.d.ts +1 -1
  49. package/dist/dtos/product/requests/product-downgradable-request.dto.js +12 -1
  50. package/dist/dtos/product/requests/product-downgrade-request.dto.d.ts +1 -1
  51. package/dist/dtos/product/requests/product-downgrade-request.dto.js +17 -1
  52. package/dist/dtos/product/requests/product-downgradeable-request.dto.d.ts +18 -0
  53. package/dist/dtos/product/requests/product-downgradeable-request.dto.js +37 -0
  54. package/dist/dtos/product/requests/product-renew-request.dto.d.ts +1 -1
  55. package/dist/dtos/product/requests/product-renew-request.dto.js +12 -1
  56. package/dist/dtos/product/requests/product-suspend-request.dto.d.ts +1 -1
  57. package/dist/dtos/product/requests/product-suspend-request.dto.js +12 -1
  58. package/dist/dtos/product/requests/product-unsuspend-request.dto.d.ts +1 -1
  59. package/dist/dtos/product/requests/product-unsuspend-request.dto.js +12 -1
  60. package/dist/dtos/product/requests/product-upgradable-request.dto.d.ts +1 -1
  61. package/dist/dtos/product/requests/product-upgradable-request.dto.js +12 -1
  62. package/dist/dtos/product/requests/product-upgrade-request.dto.d.ts +1 -1
  63. package/dist/dtos/product/requests/product-upgrade-request.dto.js +17 -1
  64. package/dist/dtos/product/requests/product-upgradeable-request.dto.d.ts +18 -0
  65. package/dist/dtos/product/requests/product-upgradeable-request.dto.js +37 -0
  66. package/dist/dtos/product/responses/product-create-response.dto.js +37 -0
  67. package/dist/dtos/product/responses/product-delete-response.dto.js +37 -0
  68. package/dist/dtos/product/responses/product-downgradable-response.dto.js +37 -0
  69. package/dist/dtos/product/responses/product-downgrade-response.dto.js +37 -0
  70. package/dist/dtos/product/responses/product-downgradeable-response.dto.d.ts +22 -0
  71. package/dist/dtos/product/responses/product-downgradeable-response.dto.js +11 -0
  72. package/dist/dtos/product/responses/product-info-response.dto.js +6 -0
  73. package/dist/dtos/product/responses/product-renew-response.dto.js +37 -0
  74. package/dist/dtos/product/responses/product-suspend-response.dto.js +37 -0
  75. package/dist/dtos/product/responses/product-unsuspend-response.dto.js +37 -0
  76. package/dist/dtos/product/responses/product-upgradable-response.dto.js +37 -0
  77. package/dist/dtos/product/responses/product-upgrade-response.dto.js +37 -0
  78. package/dist/dtos/product/responses/product-upgradeable-response.dto.d.ts +22 -0
  79. package/dist/dtos/product/responses/product-upgradeable-response.dto.js +11 -0
  80. package/dist/dtos/requests/validate-attributes-request.dto.js +12 -0
  81. package/dist/dtos/response-data.dto.js +19 -0
  82. package/dist/dtos/responses/validate-attributes-response.dto.js +7 -0
  83. package/dist/dtos/setup-status-response.dto.js +20 -0
  84. package/dist/enums/events.enum.d.ts +3 -0
  85. package/dist/enums/events.enum.js +3 -0
  86. package/dist/index.d.ts +24 -0
  87. package/dist/index.js +24 -0
  88. package/dist/openapi/schemas/components.schemas.d.ts +155 -40
  89. package/dist/openapi/schemas/components.schemas.js +187 -96
  90. package/dist/validators/addon-field-validator.d.ts +9 -0
  91. package/dist/validators/addon-field-validator.js +14 -0
  92. package/dist/validators/addon-field-validator.spec.d.ts +1 -0
  93. package/dist/validators/addon-field-validator.spec.js +38 -0
  94. package/dist/validators/attachment-validator.d.ts +8 -0
  95. package/dist/validators/attachment-validator.js +17 -0
  96. package/dist/validators/attachment-validator.spec.d.ts +1 -0
  97. package/dist/validators/attachment-validator.spec.js +58 -0
  98. package/dist/validators/attribute-field-validator.d.ts +8 -0
  99. package/dist/validators/attribute-field-validator.js +17 -0
  100. package/dist/validators/attribute-field-validator.spec.d.ts +1 -0
  101. package/dist/validators/attribute-field-validator.spec.js +84 -0
  102. package/dist/validators/country-validator.d.ts +8 -0
  103. package/dist/validators/country-validator.js +17 -0
  104. package/dist/validators/country-validator.spec.d.ts +1 -0
  105. package/dist/validators/country-validator.spec.js +58 -0
  106. package/dist/validators/field-validator.spec.js +1 -29
  107. package/dist/validators/info-validator.d.ts +8 -0
  108. package/dist/validators/info-validator.js +17 -0
  109. package/dist/validators/info-validator.spec.d.ts +1 -0
  110. package/dist/validators/info-validator.spec.js +85 -0
  111. package/dist/validators/invoice-contact-data-validator.d.ts +8 -0
  112. package/dist/validators/invoice-contact-data-validator.js +17 -0
  113. package/dist/validators/invoice-contact-data-validator.spec.d.ts +1 -0
  114. package/dist/validators/invoice-contact-data-validator.spec.js +88 -0
  115. package/dist/validators/invoice-info-validator.d.ts +8 -0
  116. package/dist/validators/invoice-info-validator.js +17 -0
  117. package/dist/validators/invoice-info-validator.spec.d.ts +1 -0
  118. package/dist/validators/invoice-info-validator.spec.js +81 -0
  119. package/dist/validators/invoice-item-data-validator.d.ts +8 -0
  120. package/dist/validators/invoice-item-data-validator.js +17 -0
  121. package/dist/validators/invoice-item-data-validator.spec.d.ts +1 -0
  122. package/dist/validators/invoice-item-data-validator.spec.js +45 -0
  123. package/dist/validators/item-data-validator.d.ts +8 -0
  124. package/dist/validators/item-data-validator.js +17 -0
  125. package/dist/validators/item-data-validator.spec.d.ts +1 -0
  126. package/dist/validators/item-data-validator.spec.js +79 -0
  127. package/dist/validators/notification-request-validator.js +1 -1
  128. package/dist/validators/product-create-request-validator.js +1 -1
  129. package/dist/validators/product-delete-request-validator.js +1 -1
  130. package/dist/validators/product-downgradable-request-validator.js +1 -1
  131. package/dist/validators/product-downgrade-request-validator.js +1 -1
  132. package/dist/validators/product-downgradeable-request-validator.d.ts +8 -0
  133. package/dist/validators/product-downgradeable-request-validator.js +17 -0
  134. package/dist/validators/product-info-validator.spec.js +5 -1
  135. package/dist/validators/product-item-data-validator.d.ts +8 -0
  136. package/dist/validators/product-item-data-validator.js +17 -0
  137. package/dist/validators/product-item-data-validator.spec.d.ts +1 -0
  138. package/dist/validators/product-item-data-validator.spec.js +60 -0
  139. package/dist/validators/product-renew-request-validator.js +1 -1
  140. package/dist/validators/product-suspend-request-validator.js +1 -1
  141. package/dist/validators/product-unsuspend-request-validator.js +1 -1
  142. package/dist/validators/product-upgradable-request-validator.js +1 -1
  143. package/dist/validators/product-upgrade-request-validator.js +1 -1
  144. package/dist/validators/product-upgradeable-request-validator.d.ts +8 -0
  145. package/dist/validators/product-upgradeable-request-validator.js +17 -0
  146. package/dist/validators/tab-validator.d.ts +8 -0
  147. package/dist/validators/tab-validator.js +17 -0
  148. package/dist/validators/tab-validator.spec.d.ts +1 -0
  149. package/dist/validators/tab-validator.spec.js +49 -0
  150. package/dist/validators/tin-validation-details-validator.d.ts +8 -0
  151. package/dist/validators/tin-validation-details-validator.js +17 -0
  152. package/dist/validators/tin-validation-details-validator.spec.d.ts +1 -0
  153. package/dist/validators/tin-validation-details-validator.spec.js +77 -0
  154. package/dist/validators/transaction-data-validator.d.ts +8 -0
  155. package/dist/validators/transaction-data-validator.js +17 -0
  156. package/dist/validators/transaction-data-validator.spec.d.ts +1 -0
  157. package/dist/validators/transaction-data-validator.spec.js +62 -0
  158. package/package.json +1 -1
  159. package/dist/dtos/info/info-notification.dto.d.ts +0 -5
  160. package/dist/dtos/info/info-notification.dto.js +0 -7
  161. package/dist/dtos/info/info.dto.d.ts +0 -196
  162. package/dist/dtos/info/info.dto.js +0 -278
  163. package/dist/dtos/notification/notification-request.dto.d.ts +0 -20
  164. package/dist/dtos/notification/notification-request.dto.js +0 -31
  165. package/dist/dtos/receiver/receiver-email.dto.d.ts +0 -20
  166. package/dist/dtos/receiver/receiver-email.dto.js +0 -39
  167. package/dist/dtos/receiver/receiver-push.dto.d.ts +0 -15
  168. package/dist/dtos/receiver/receiver-push.dto.js +0 -31
  169. package/dist/dtos/receiver/receiver-sms.dto.d.ts +0 -11
  170. package/dist/dtos/receiver/receiver-sms.dto.js +0 -26
  171. package/dist/dtos/request.dto.d.ts +0 -20
  172. package/dist/dtos/request.dto.js +0 -31
  173. package/dist/dtos/sender/sender-email.dto.d.ts +0 -25
  174. package/dist/dtos/sender/sender-email.dto.js +0 -46
  175. package/dist/dtos/sender/sender-push.dto.d.ts +0 -31
  176. package/dist/dtos/sender/sender-push.dto.js +0 -50
  177. package/dist/dtos/sender/sender-sms.dto.d.ts +0 -15
  178. package/dist/dtos/sender/sender-sms.dto.js +0 -30
  179. package/dist/enums/message-type.enum.d.ts +0 -5
  180. package/dist/enums/message-type.enum.js +0 -9
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const item_data_validator_1 = require("./item-data-validator");
5
+ const baseValidDto = {
6
+ productId: 'prod-123',
7
+ productName: 'Web Hosting',
8
+ resourceName: 'hosting-basic',
9
+ productAttributes: { plan: 'basic' },
10
+ itemAttributes: { domain: 'example.com' },
11
+ startDate: '2025-01-01',
12
+ endDate: '2025-12-31',
13
+ };
14
+ describe('ItemDataDto Validator', () => {
15
+ describe('Valid cases', () => {
16
+ it('should return no errors for a valid DTO', () => {
17
+ expect((0, item_data_validator_1.validateItemDataDto)(baseValidDto)).toHaveLength(0);
18
+ });
19
+ it('should return no errors with optional fields', () => {
20
+ const dto = {
21
+ ...baseValidDto,
22
+ itemId: 'item-456',
23
+ creationResponseData: { externalId: 'ext-1' },
24
+ price: 9.99,
25
+ discountPrice: 7.99,
26
+ };
27
+ expect((0, item_data_validator_1.validateItemDataDto)(dto)).toHaveLength(0);
28
+ });
29
+ it('should return no errors when optional fields are omitted', () => {
30
+ expect((0, item_data_validator_1.validateItemDataDto)(baseValidDto)).toHaveLength(0);
31
+ });
32
+ });
33
+ describe('Missing required fields', () => {
34
+ it('should return errors when all fields are missing', () => {
35
+ const errors = (0, item_data_validator_1.validateItemDataDto)({});
36
+ const requiredProps = ['productId', 'productName', 'resourceName', 'productAttributes', 'itemAttributes', 'startDate', 'endDate'];
37
+ for (const prop of requiredProps) {
38
+ expect(errors.some(e => e.property === prop)).toBe(true);
39
+ }
40
+ });
41
+ it('should return error when productId is missing', () => {
42
+ const { productId, ...dto } = baseValidDto;
43
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
44
+ expect(errors.some(e => e.property === 'productId')).toBe(true);
45
+ });
46
+ it('should return error when productAttributes is missing', () => {
47
+ const { productAttributes, ...dto } = baseValidDto;
48
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
49
+ expect(errors.some(e => e.property === 'productAttributes')).toBe(true);
50
+ });
51
+ it('should return error when itemAttributes is missing', () => {
52
+ const { itemAttributes, ...dto } = baseValidDto;
53
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
54
+ expect(errors.some(e => e.property === 'itemAttributes')).toBe(true);
55
+ });
56
+ });
57
+ describe('Invalid field values', () => {
58
+ it('should return error for empty productId', () => {
59
+ const dto = { ...baseValidDto, productId: '' };
60
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
61
+ expect(errors.some(e => e.property === 'productId')).toBe(true);
62
+ });
63
+ it('should return error for empty startDate', () => {
64
+ const dto = { ...baseValidDto, startDate: '' };
65
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
66
+ expect(errors.some(e => e.property === 'startDate')).toBe(true);
67
+ });
68
+ it('should return error for non-number price', () => {
69
+ const dto = { ...baseValidDto, price: 'free' };
70
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
71
+ expect(errors.some(e => e.property === 'price')).toBe(true);
72
+ });
73
+ it('should return error for non-number discountPrice', () => {
74
+ const dto = { ...baseValidDto, discountPrice: 'half-off' };
75
+ const errors = (0, item_data_validator_1.validateItemDataDto)(dto);
76
+ expect(errors.some(e => e.property === 'discountPrice')).toBe(true);
77
+ });
78
+ });
79
+ });
@@ -12,6 +12,6 @@ const notification_send_request_dto_1 = require("../dtos/notification/requests/n
12
12
  */
13
13
  function validateNotificationRequestDto(data) {
14
14
  const dto = (0, class_transformer_1.plainToInstance)(notification_send_request_dto_1.NotificationSendRequestDto, data);
15
- const errors = (0, class_validator_1.validateSync)(dto);
15
+ const errors = (0, class_validator_1.validateSync)(dto, { forbidUnknownValues: false });
16
16
  return errors;
17
17
  }
@@ -12,6 +12,6 @@ const product_create_request_dto_1 = require("../dtos/product/requests/product-c
12
12
  */
13
13
  const validateProductCreateRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_create_request_dto_1.ProductCreateRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductCreateRequestDto = validateProductCreateRequestDto;
@@ -12,6 +12,6 @@ const product_delete_request_dto_1 = require("../dtos/product/requests/product-d
12
12
  */
13
13
  const validateProductDeleteRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_delete_request_dto_1.ProductDeleteRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductDeleteRequestDto = validateProductDeleteRequestDto;
@@ -12,6 +12,6 @@ const product_downgradable_request_dto_1 = require("../dtos/product/requests/pro
12
12
  */
13
13
  const validateProductDowngradableRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_downgradable_request_dto_1.ProductDowngradableRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductDowngradableRequestDto = validateProductDowngradableRequestDto;
@@ -12,6 +12,6 @@ const product_downgrade_request_dto_1 = require("../dtos/product/requests/produc
12
12
  */
13
13
  const validateProductDowngradeRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_downgrade_request_dto_1.ProductDowngradeRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductDowngradeRequestDto = validateProductDowngradeRequestDto;
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a product downgradable request object.
4
+ *
5
+ * @param {Record<string, unknown>} plainObject - The plain object to validate.
6
+ * @returns {Promise<ValidationError[]>} - A promise that resolves with an array of validation errors.
7
+ */
8
+ export declare const validateProductDowngradableRequestDto: (plainObject: Record<string, unknown>) => Promise<ValidationError[]>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateProductDowngradableRequestDto = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const product_downgradable_request_dto_1 = require("../dtos/product/requests/product-downgradable-request.dto");
7
+ /**
8
+ * Validates a product downgradable request object.
9
+ *
10
+ * @param {Record<string, unknown>} plainObject - The plain object to validate.
11
+ * @returns {Promise<ValidationError[]>} - A promise that resolves with an array of validation errors.
12
+ */
13
+ const validateProductDowngradableRequestDto = async (plainObject) => {
14
+ const request = (0, class_transformer_1.plainToInstance)(product_downgradable_request_dto_1.ProductDowngradableRequestDto, plainObject);
15
+ return await (0, class_validator_1.validate)(request);
16
+ };
17
+ exports.validateProductDowngradableRequestDto = validateProductDowngradableRequestDto;
@@ -180,6 +180,7 @@ describe('ProductInfoDto Validator', () => {
180
180
  disabled: false,
181
181
  hidden: false,
182
182
  upgradable: false,
183
+ repeatableMin: 1,
183
184
  };
184
185
  const dto = {
185
186
  title: 'Test',
@@ -199,7 +200,8 @@ describe('ProductInfoDto Validator', () => {
199
200
  required: false,
200
201
  disabled: false,
201
202
  upgradable: false,
202
- hidden: false
203
+ hidden: false,
204
+ repeatableMax: 5,
203
205
  };
204
206
  const dto = {
205
207
  title: 'Test',
@@ -238,6 +240,8 @@ describe('ProductInfoDto Validator', () => {
238
240
  disabled: false,
239
241
  hidden: false,
240
242
  upgradable: false,
243
+ repeatableMin: 5,
244
+ repeatableMax: 2,
241
245
  };
242
246
  const dto = {
243
247
  title: 'Test',
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a ProductItemDataDto object using class-validator decorators.
4
+ *
5
+ * @param data The object to validate as a ProductItemDataDto.
6
+ * @returns An array of validation errors, empty if validation succeeds.
7
+ */
8
+ export declare function validateProductItemDataDto(data: object): ValidationError[];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateProductItemDataDto = validateProductItemDataDto;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const product_item_data_dto_1 = require("../dtos/product/product-item-data.dto");
7
+ /**
8
+ * Validates a ProductItemDataDto object using class-validator decorators.
9
+ *
10
+ * @param data The object to validate as a ProductItemDataDto.
11
+ * @returns An array of validation errors, empty if validation succeeds.
12
+ */
13
+ function validateProductItemDataDto(data) {
14
+ const dto = (0, class_transformer_1.plainToInstance)(product_item_data_dto_1.ProductItemDataDto, data);
15
+ const errors = (0, class_validator_1.validateSync)(dto);
16
+ return errors;
17
+ }
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const product_item_data_validator_1 = require("./product-item-data-validator");
5
+ const item_actions_enum_1 = require("../enums/item-actions.enum");
6
+ const baseValidDto = {
7
+ productId: 'prod-123',
8
+ productName: 'Web Hosting',
9
+ resourceName: 'hosting-basic',
10
+ productAttributes: { plan: 'basic' },
11
+ itemAttributes: { domain: 'example.com' },
12
+ startDate: '2025-01-01',
13
+ endDate: '2025-12-31',
14
+ };
15
+ describe('ProductItemDataDto Validator', () => {
16
+ describe('Valid cases', () => {
17
+ it('should return no errors for a valid DTO without action', () => {
18
+ expect((0, product_item_data_validator_1.validateProductItemDataDto)(baseValidDto)).toHaveLength(0);
19
+ });
20
+ it('should return no errors with a valid action', () => {
21
+ const dto = { ...baseValidDto, action: item_actions_enum_1.ProductItemActionsEnum.CREATE };
22
+ expect((0, product_item_data_validator_1.validateProductItemDataDto)(dto)).toHaveLength(0);
23
+ });
24
+ it.each(Object.values(item_actions_enum_1.ProductItemActionsEnum))('should accept action %s', (action) => {
25
+ const dto = { ...baseValidDto, action };
26
+ expect((0, product_item_data_validator_1.validateProductItemDataDto)(dto)).toHaveLength(0);
27
+ });
28
+ it('should return no errors with optional inherited fields', () => {
29
+ const dto = {
30
+ ...baseValidDto,
31
+ itemId: 'item-456',
32
+ price: 9.99,
33
+ discountPrice: 7.99,
34
+ action: item_actions_enum_1.ProductItemActionsEnum.RENEW,
35
+ };
36
+ expect((0, product_item_data_validator_1.validateProductItemDataDto)(dto)).toHaveLength(0);
37
+ });
38
+ });
39
+ describe('Missing inherited required fields', () => {
40
+ it('should return errors when all fields are missing', () => {
41
+ const errors = (0, product_item_data_validator_1.validateProductItemDataDto)({});
42
+ const requiredProps = ['productId', 'productName', 'resourceName', 'productAttributes', 'itemAttributes', 'startDate', 'endDate'];
43
+ for (const prop of requiredProps) {
44
+ expect(errors.some(e => e.property === prop)).toBe(true);
45
+ }
46
+ });
47
+ });
48
+ describe('Invalid field values', () => {
49
+ it('should return error for invalid action enum', () => {
50
+ const dto = { ...baseValidDto, action: 'invalid-action' };
51
+ const errors = (0, product_item_data_validator_1.validateProductItemDataDto)(dto);
52
+ expect(errors.some(e => e.property === 'action')).toBe(true);
53
+ });
54
+ it('should return error for non-string action', () => {
55
+ const dto = { ...baseValidDto, action: 123 };
56
+ const errors = (0, product_item_data_validator_1.validateProductItemDataDto)(dto);
57
+ expect(errors.some(e => e.property === 'action')).toBe(true);
58
+ });
59
+ });
60
+ });
@@ -12,6 +12,6 @@ const product_renew_request_dto_1 = require("../dtos/product/requests/product-re
12
12
  */
13
13
  const validateProductRenewRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_renew_request_dto_1.ProductRenewRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductRenewRequestDto = validateProductRenewRequestDto;
@@ -12,6 +12,6 @@ const product_suspend_request_dto_1 = require("../dtos/product/requests/product-
12
12
  */
13
13
  const validateProductSuspendRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_suspend_request_dto_1.ProductSuspendRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductSuspendRequestDto = validateProductSuspendRequestDto;
@@ -12,6 +12,6 @@ const product_unsuspend_request_dto_1 = require("../dtos/product/requests/produc
12
12
  */
13
13
  const validateProductUnsuspendRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_unsuspend_request_dto_1.ProductUnsuspendRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductUnsuspendRequestDto = validateProductUnsuspendRequestDto;
@@ -12,6 +12,6 @@ const product_upgradable_request_dto_1 = require("../dtos/product/requests/produ
12
12
  */
13
13
  const validateProductUpgradableRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_upgradable_request_dto_1.ProductUpgradableRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductUpgradableRequestDto = validateProductUpgradableRequestDto;
@@ -12,6 +12,6 @@ const product_upgrade_request_dto_1 = require("../dtos/product/requests/product-
12
12
  */
13
13
  const validateProductUpgradeRequestDto = async (plainObject) => {
14
14
  const request = (0, class_transformer_1.plainToInstance)(product_upgrade_request_dto_1.ProductUpgradeRequestDto, plainObject);
15
- return await (0, class_validator_1.validate)(request);
15
+ return await (0, class_validator_1.validate)(request, { skipMissingProperties: true });
16
16
  };
17
17
  exports.validateProductUpgradeRequestDto = validateProductUpgradeRequestDto;
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a product upgradeable request object.
4
+ *
5
+ * @param {Record<string, unknown>} plainObject - The plain object to validate.
6
+ * @returns {Promise<ValidationError[]>} - A promise that resolves with an array of validation errors.
7
+ */
8
+ export declare const validateProductUpgradeableRequestDto: (plainObject: Record<string, unknown>) => Promise<ValidationError[]>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateProductUpgradeableRequestDto = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const product_upgradeable_request_dto_1 = require("../dtos/product/requests/product-upgradeable-request.dto");
7
+ /**
8
+ * Validates a product upgradeable request object.
9
+ *
10
+ * @param {Record<string, unknown>} plainObject - The plain object to validate.
11
+ * @returns {Promise<ValidationError[]>} - A promise that resolves with an array of validation errors.
12
+ */
13
+ const validateProductUpgradeableRequestDto = async (plainObject) => {
14
+ const request = (0, class_transformer_1.plainToInstance)(product_upgradeable_request_dto_1.ProductUpgradeableRequestDto, plainObject);
15
+ return await (0, class_validator_1.validate)(request);
16
+ };
17
+ exports.validateProductUpgradeableRequestDto = validateProductUpgradeableRequestDto;
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a TabDto object using class-validator decorators.
4
+ *
5
+ * @param data The object to validate as a TabDto.
6
+ * @returns An array of validation errors, empty if validation succeeds.
7
+ */
8
+ export declare function validateTabDto(data: object): ValidationError[];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateTabDto = validateTabDto;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const tab_dto_1 = require("../dtos/tab.dto");
7
+ /**
8
+ * Validates a TabDto object using class-validator decorators.
9
+ *
10
+ * @param data The object to validate as a TabDto.
11
+ * @returns An array of validation errors, empty if validation succeeds.
12
+ */
13
+ function validateTabDto(data) {
14
+ const dto = (0, class_transformer_1.plainToInstance)(tab_dto_1.TabDto, data);
15
+ const errors = (0, class_validator_1.validateSync)(dto);
16
+ return errors;
17
+ }
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const tab_validator_1 = require("./tab-validator");
5
+ const baseValidDto = {
6
+ label: 'Settings',
7
+ url: 'https://example.com/settings',
8
+ };
9
+ describe('TabDto Validator', () => {
10
+ describe('Valid cases', () => {
11
+ it('should return no errors for a valid DTO', () => {
12
+ expect((0, tab_validator_1.validateTabDto)(baseValidDto)).toHaveLength(0);
13
+ });
14
+ });
15
+ describe('Missing required fields', () => {
16
+ it('should return errors when all fields are missing', () => {
17
+ const errors = (0, tab_validator_1.validateTabDto)({});
18
+ expect(errors.some(e => e.property === 'label')).toBe(true);
19
+ expect(errors.some(e => e.property === 'url')).toBe(true);
20
+ });
21
+ it('should return error when label is missing', () => {
22
+ const dto = { url: 'https://example.com/settings' };
23
+ const errors = (0, tab_validator_1.validateTabDto)(dto);
24
+ expect(errors.some(e => e.property === 'label')).toBe(true);
25
+ });
26
+ it('should return error when url is missing', () => {
27
+ const dto = { label: 'Settings' };
28
+ const errors = (0, tab_validator_1.validateTabDto)(dto);
29
+ expect(errors.some(e => e.property === 'url')).toBe(true);
30
+ });
31
+ });
32
+ describe('Invalid field values', () => {
33
+ it('should return error for empty label', () => {
34
+ const dto = { ...baseValidDto, label: '' };
35
+ const errors = (0, tab_validator_1.validateTabDto)(dto);
36
+ expect(errors.some(e => e.property === 'label')).toBe(true);
37
+ });
38
+ it('should return error for non-https URL', () => {
39
+ const dto = { ...baseValidDto, url: 'http://example.com/settings' };
40
+ const errors = (0, tab_validator_1.validateTabDto)(dto);
41
+ expect(errors.some(e => e.property === 'url')).toBe(true);
42
+ });
43
+ it('should return error for invalid URL', () => {
44
+ const dto = { ...baseValidDto, url: 'not-a-url' };
45
+ const errors = (0, tab_validator_1.validateTabDto)(dto);
46
+ expect(errors.some(e => e.property === 'url')).toBe(true);
47
+ });
48
+ });
49
+ });
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a TINValidationDetails object using class-validator decorators.
4
+ *
5
+ * @param data The object to validate as a TINValidationDetails.
6
+ * @returns An array of validation errors, empty if validation succeeds.
7
+ */
8
+ export declare function validateTINValidationDetailsDto(data: object): ValidationError[];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateTINValidationDetailsDto = validateTINValidationDetailsDto;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const tin_validation_details_dto_1 = require("../dtos/invoice/tin-validation-details.dto");
7
+ /**
8
+ * Validates a TINValidationDetails object using class-validator decorators.
9
+ *
10
+ * @param data The object to validate as a TINValidationDetails.
11
+ * @returns An array of validation errors, empty if validation succeeds.
12
+ */
13
+ function validateTINValidationDetailsDto(data) {
14
+ const dto = (0, class_transformer_1.plainToInstance)(tin_validation_details_dto_1.TINValidationDetails, data);
15
+ const errors = (0, class_validator_1.validateSync)(dto);
16
+ return errors;
17
+ }
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const tin_validation_details_validator_1 = require("./tin-validation-details-validator");
5
+ const country_enum_1 = require("../enums/country.enum");
6
+ const baseValidDto = {
7
+ address1: '123 Main St',
8
+ postcode: '12345',
9
+ city: 'Athens',
10
+ country: country_enum_1.CountryEnum.GREECE,
11
+ };
12
+ describe('TINValidationDetails Validator', () => {
13
+ describe('Valid cases', () => {
14
+ it('should return no errors for a valid DTO with required fields only', () => {
15
+ expect((0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(baseValidDto)).toHaveLength(0);
16
+ });
17
+ it('should return no errors with all optional fields', () => {
18
+ const dto = {
19
+ ...baseValidDto,
20
+ companyName: 'Acme Corp',
21
+ address2: 'Suite 100',
22
+ address3: 'Building A',
23
+ state: 'Attica',
24
+ tin: 'EL123456789',
25
+ taxOffice: 'Athens Tax Office',
26
+ profession: 'Software Development',
27
+ };
28
+ expect((0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto)).toHaveLength(0);
29
+ });
30
+ });
31
+ describe('Missing required fields', () => {
32
+ it('should return errors when all fields are missing', () => {
33
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)({});
34
+ const requiredProps = ['address1', 'postcode', 'city', 'country'];
35
+ for (const prop of requiredProps) {
36
+ expect(errors.some(e => e.property === prop)).toBe(true);
37
+ }
38
+ });
39
+ it('should return error when address1 is missing', () => {
40
+ const { address1, ...dto } = baseValidDto;
41
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
42
+ expect(errors.some(e => e.property === 'address1')).toBe(true);
43
+ });
44
+ it('should return error when country is missing', () => {
45
+ const { country, ...dto } = baseValidDto;
46
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
47
+ expect(errors.some(e => e.property === 'country')).toBe(true);
48
+ });
49
+ });
50
+ describe('Invalid field values', () => {
51
+ it('should return error for invalid country code', () => {
52
+ const dto = { ...baseValidDto, country: 'INVALID' };
53
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
54
+ expect(errors.some(e => e.property === 'country')).toBe(true);
55
+ });
56
+ it('should return error for postcode exceeding max length', () => {
57
+ const dto = { ...baseValidDto, postcode: '1'.repeat(17) };
58
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
59
+ expect(errors.some(e => e.property === 'postcode')).toBe(true);
60
+ });
61
+ it('should return error for city exceeding max length', () => {
62
+ const dto = { ...baseValidDto, city: 'a'.repeat(251) };
63
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
64
+ expect(errors.some(e => e.property === 'city')).toBe(true);
65
+ });
66
+ it('should return error for companyName exceeding max length', () => {
67
+ const dto = { ...baseValidDto, companyName: 'a'.repeat(251) };
68
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
69
+ expect(errors.some(e => e.property === 'companyName')).toBe(true);
70
+ });
71
+ it('should return error for tin exceeding max length', () => {
72
+ const dto = { ...baseValidDto, tin: 'X'.repeat(21) };
73
+ const errors = (0, tin_validation_details_validator_1.validateTINValidationDetailsDto)(dto);
74
+ expect(errors.some(e => e.property === 'tin')).toBe(true);
75
+ });
76
+ });
77
+ });
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Validates a TransactionData object using class-validator decorators.
4
+ *
5
+ * @param data The object to validate as a TransactionData.
6
+ * @returns An array of validation errors, empty if validation succeeds.
7
+ */
8
+ export declare function validateTransactionDataDto(data: object): ValidationError[];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateTransactionDataDto = validateTransactionDataDto;
4
+ const class_validator_1 = require("class-validator");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const transaction_data_dto_1 = require("../dtos/invoice/transaction-data.dto");
7
+ /**
8
+ * Validates a TransactionData object using class-validator decorators.
9
+ *
10
+ * @param data The object to validate as a TransactionData.
11
+ * @returns An array of validation errors, empty if validation succeeds.
12
+ */
13
+ function validateTransactionDataDto(data) {
14
+ const dto = (0, class_transformer_1.plainToInstance)(transaction_data_dto_1.TransactionData, data);
15
+ const errors = (0, class_validator_1.validateSync)(dto);
16
+ return errors;
17
+ }
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const transaction_data_validator_1 = require("./transaction-data-validator");
5
+ const baseValidDto = {
6
+ transactionId: 'txn-001',
7
+ amount: 99.99,
8
+ paymentMethod: 'credit_card',
9
+ date: new Date('2025-06-15T10:00:00Z'),
10
+ };
11
+ describe('TransactionData Validator', () => {
12
+ describe('Valid cases', () => {
13
+ it('should return no errors for a valid DTO', () => {
14
+ expect((0, transaction_data_validator_1.validateTransactionDataDto)(baseValidDto)).toHaveLength(0);
15
+ });
16
+ it('should return no errors with zero amount', () => {
17
+ const dto = { ...baseValidDto, amount: 0 };
18
+ expect((0, transaction_data_validator_1.validateTransactionDataDto)(dto)).toHaveLength(0);
19
+ });
20
+ });
21
+ describe('Missing required fields', () => {
22
+ it('should return errors when all fields are missing', () => {
23
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)({});
24
+ const requiredProps = ['transactionId', 'amount', 'paymentMethod', 'date'];
25
+ for (const prop of requiredProps) {
26
+ expect(errors.some(e => e.property === prop)).toBe(true);
27
+ }
28
+ });
29
+ it('should return error when transactionId is missing', () => {
30
+ const { transactionId, ...dto } = baseValidDto;
31
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
32
+ expect(errors.some(e => e.property === 'transactionId')).toBe(true);
33
+ });
34
+ it('should return error when amount is missing', () => {
35
+ const { amount, ...dto } = baseValidDto;
36
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
37
+ expect(errors.some(e => e.property === 'amount')).toBe(true);
38
+ });
39
+ });
40
+ describe('Invalid field values', () => {
41
+ it('should return error for empty transactionId', () => {
42
+ const dto = { ...baseValidDto, transactionId: '' };
43
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
44
+ expect(errors.some(e => e.property === 'transactionId')).toBe(true);
45
+ });
46
+ it('should return error for non-number amount', () => {
47
+ const dto = { ...baseValidDto, amount: 'free' };
48
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
49
+ expect(errors.some(e => e.property === 'amount')).toBe(true);
50
+ });
51
+ it('should return error for empty paymentMethod', () => {
52
+ const dto = { ...baseValidDto, paymentMethod: '' };
53
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
54
+ expect(errors.some(e => e.property === 'paymentMethod')).toBe(true);
55
+ });
56
+ it('should return error for invalid date', () => {
57
+ const dto = { ...baseValidDto, date: 'not-a-date' };
58
+ const errors = (0, transaction_data_validator_1.validateTransactionDataDto)(dto);
59
+ expect(errors.some(e => e.property === 'date')).toBe(true);
60
+ });
61
+ });
62
+ });