@hosterai/types 0.0.16 → 0.0.18

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 (154) hide show
  1. package/README.md +14 -9
  2. package/dist/decorators/at-least-one-non-empty-validator.spec.d.ts +1 -0
  3. package/dist/decorators/at-least-one-non-empty-validator.spec.js +79 -0
  4. package/dist/decorators/at-least-one-non-empty.validator.d.ts +2 -0
  5. package/dist/decorators/at-least-one-non-empty.validator.js +43 -0
  6. package/dist/decorators/is-of-allowed-types-validator.spec.d.ts +1 -0
  7. package/dist/decorators/is-of-allowed-types-validator.spec.js +188 -0
  8. package/dist/decorators/is-of-allowed-types.validator.d.ts +16 -0
  9. package/dist/decorators/is-of-allowed-types.validator.js +105 -0
  10. package/dist/decorators/is-one-of-validator.spec.d.ts +1 -0
  11. package/dist/decorators/is-one-of-validator.spec.js +51 -0
  12. package/dist/decorators/is-one-of.validator.d.ts +2 -0
  13. package/dist/decorators/is-one-of.validator.js +19 -0
  14. package/dist/decorators/is-plain-object-validator.spec.d.ts +1 -0
  15. package/dist/decorators/is-plain-object-validator.spec.js +46 -0
  16. package/dist/decorators/is-plain-object.validator.d.ts +2 -0
  17. package/dist/decorators/is-plain-object.validator.js +30 -0
  18. package/dist/decorators/is-property-forbidden-validator.spec.d.ts +1 -0
  19. package/dist/decorators/is-property-forbidden-validator.spec.js +62 -0
  20. package/dist/decorators/is-property-forbidden.validator.d.ts +2 -0
  21. package/dist/decorators/is-property-forbidden.validator.js +22 -0
  22. package/dist/decorators/is-regex-validator.spec.d.ts +1 -0
  23. package/dist/decorators/is-regex-validator.spec.js +46 -0
  24. package/dist/decorators/is-regex.validator.d.ts +2 -0
  25. package/dist/decorators/is-regex.validator.js +32 -0
  26. package/dist/decorators/unique-field-in-array-validator.spec.d.ts +1 -0
  27. package/dist/decorators/unique-field-in-array-validator.spec.js +39 -0
  28. package/dist/decorators/unique-field-in-array.validator.d.ts +6 -0
  29. package/dist/decorators/unique-field-in-array.validator.js +47 -0
  30. package/dist/dtos/action.dto.js +4 -1
  31. package/dist/dtos/admin-panel.dto.d.ts +38 -0
  32. package/dist/dtos/admin-panel.dto.js +150 -0
  33. package/dist/dtos/client-panel.dto.d.ts +24 -0
  34. package/dist/dtos/client-panel.dto.js +75 -0
  35. package/dist/dtos/company-data.dto.js +1 -1
  36. package/dist/dtos/field.dto.js +32 -0
  37. package/dist/dtos/info.dto.d.ts +6 -81
  38. package/dist/dtos/info.dto.js +79 -0
  39. package/dist/dtos/menu.dto.d.ts +3 -4
  40. package/dist/dtos/menu.dto.js +75 -0
  41. package/dist/dtos/multilang-text.dto.js +1 -1
  42. package/dist/dtos/notification/notification-info.dto.js +25 -0
  43. package/dist/dtos/product/product-info.dto.js +46 -0
  44. package/dist/dtos/settings.dto.d.ts +14 -0
  45. package/dist/dtos/settings.dto.js +59 -0
  46. package/dist/dtos/tab.dto.js +20 -0
  47. package/dist/dtos/unit.dto.js +28 -0
  48. package/dist/enums/actions.enum.d.ts +2 -1
  49. package/dist/enums/actions.enum.js +12 -12
  50. package/dist/enums/events.enum.d.ts +2 -0
  51. package/dist/enums/events.enum.js +2 -0
  52. package/dist/enums/roles.enum.d.ts +2 -2
  53. package/dist/enums/roles.enum.js +2 -2
  54. package/dist/index.d.ts +22 -7
  55. package/dist/index.js +22 -7
  56. package/dist/transformers/menu.transformer.d.ts +2 -0
  57. package/dist/transformers/menu.transformer.js +16 -0
  58. package/dist/transformers/settings.transformer.d.ts +1 -0
  59. package/dist/transformers/settings.transformer.js +15 -0
  60. package/dist/validators/action-validator.spec.d.ts +1 -0
  61. package/dist/validators/action-validator.spec.js +67 -0
  62. package/dist/validators/admin-panel-more-actions-validator.spec.d.ts +1 -0
  63. package/dist/validators/admin-panel-more-actions-validator.spec.js +129 -0
  64. package/dist/validators/admin-panel-more-actions.validator.d.ts +2 -0
  65. package/dist/validators/admin-panel-more-actions.validator.js +11 -0
  66. package/dist/validators/admin-panel-tabs-validator.spec.d.ts +1 -0
  67. package/dist/validators/admin-panel-tabs-validator.spec.js +39 -0
  68. package/dist/validators/admin-panel-tabs.validator.d.ts +2 -0
  69. package/dist/validators/admin-panel-tabs.validator.js +11 -0
  70. package/dist/validators/admin-panel-validator.spec.d.ts +1 -0
  71. package/dist/validators/admin-panel-validator.spec.js +112 -0
  72. package/dist/validators/admin-panel.validator.d.ts +2 -0
  73. package/dist/validators/admin-panel.validator.js +14 -0
  74. package/dist/validators/client-data-validator.spec.d.ts +1 -0
  75. package/dist/validators/client-data-validator.spec.js +35 -0
  76. package/dist/validators/client-panel-validator.spec.d.ts +1 -0
  77. package/dist/validators/client-panel-validator.spec.js +51 -0
  78. package/dist/validators/client-panel.validator.d.ts +2 -0
  79. package/dist/validators/client-panel.validator.js +14 -0
  80. package/dist/validators/company-data-validator.spec.d.ts +1 -0
  81. package/dist/validators/company-data-validator.spec.js +73 -0
  82. package/dist/validators/field-option-validator.spec.d.ts +1 -0
  83. package/dist/validators/field-option-validator.spec.js +28 -0
  84. package/dist/validators/field-option.validator.d.ts +2 -0
  85. package/dist/validators/field-option.validator.js +11 -0
  86. package/dist/validators/field-validator.spec.d.ts +1 -0
  87. package/dist/validators/field-validator.spec.js +76 -0
  88. package/dist/validators/jwt-validator.spec.d.ts +2 -0
  89. package/dist/validators/jwt-validator.spec.js +43 -0
  90. package/dist/validators/menu-with-submenu-validator.spec.d.ts +1 -0
  91. package/dist/validators/menu-with-submenu-validator.spec.js +52 -0
  92. package/dist/validators/menu-with-submenu.validator.d.ts +2 -0
  93. package/dist/validators/menu-with-submenu.validator.js +11 -0
  94. package/dist/validators/menu-with-url-validator.spec.d.ts +1 -0
  95. package/dist/validators/menu-with-url-validator.spec.js +70 -0
  96. package/dist/validators/menu-with-url.validator.d.ts +2 -0
  97. package/dist/validators/menu-with-url.validator.js +11 -0
  98. package/dist/validators/multilang-text-validator.spec.d.ts +1 -0
  99. package/dist/validators/multilang-text-validator.spec.js +33 -0
  100. package/dist/validators/notification-info-validator.spec.d.ts +1 -0
  101. package/dist/validators/notification-info-validator.spec.js +82 -0
  102. package/dist/validators/notification-info.validator.d.ts +7 -0
  103. package/dist/validators/notification-info.validator.js +16 -0
  104. package/dist/validators/notification-request-validator.spec.d.ts +1 -0
  105. package/dist/validators/notification-request-validator.spec.js +115 -0
  106. package/dist/validators/product-create-request-validator.spec.d.ts +2 -0
  107. package/dist/validators/product-create-request-validator.spec.js +44 -0
  108. package/dist/validators/product-delete-request-validator.spec.d.ts +1 -0
  109. package/dist/validators/product-delete-request-validator.spec.js +40 -0
  110. package/dist/validators/product-downgradable-request-validator.spec.d.ts +1 -0
  111. package/dist/validators/product-downgradable-request-validator.spec.js +40 -0
  112. package/dist/validators/product-downgrade-request-validator.spec.d.ts +1 -0
  113. package/dist/validators/product-downgrade-request-validator.spec.js +46 -0
  114. package/dist/validators/product-info-validator.spec.d.ts +1 -0
  115. package/dist/validators/product-info-validator.spec.js +172 -0
  116. package/dist/validators/product-info.validator.d.ts +2 -0
  117. package/dist/validators/product-info.validator.js +11 -0
  118. package/dist/validators/product-renew-request-validator.spec.d.ts +1 -0
  119. package/dist/validators/product-renew-request-validator.spec.js +40 -0
  120. package/dist/validators/product-suspend-request-validator.spec.d.ts +1 -0
  121. package/dist/validators/product-suspend-request-validator.spec.js +40 -0
  122. package/dist/validators/product-unsuspend-request-validator.spec.d.ts +1 -0
  123. package/dist/validators/product-unsuspend-request-validator.spec.js +40 -0
  124. package/dist/validators/product-upgradable-request-validator.spec.d.ts +1 -0
  125. package/dist/validators/product-upgradable-request-validator.spec.js +40 -0
  126. package/dist/validators/product-upgrade-request-validator.spec.d.ts +1 -0
  127. package/dist/validators/product-upgrade-request-validator.spec.js +46 -0
  128. package/dist/validators/product-validate-attributes-request-validator.spec.d.ts +1 -0
  129. package/dist/validators/product-validate-attributes-request-validator.spec.js +27 -0
  130. package/dist/validators/receiver-email-validator.spec.d.ts +1 -0
  131. package/dist/validators/receiver-email-validator.spec.js +32 -0
  132. package/dist/validators/receiver-push-validator.spec.d.ts +1 -0
  133. package/dist/validators/receiver-push-validator.spec.js +31 -0
  134. package/dist/validators/receiver-sms-validator.spec.d.ts +1 -0
  135. package/dist/validators/receiver-sms-validator.spec.js +29 -0
  136. package/dist/validators/sender-email-validator.spec.d.ts +2 -0
  137. package/dist/validators/sender-email-validator.spec.js +62 -0
  138. package/dist/validators/sender-push-validator.spec.d.ts +1 -0
  139. package/dist/validators/sender-push-validator.spec.js +38 -0
  140. package/dist/validators/sender-sms-validator.spec.d.ts +1 -0
  141. package/dist/validators/sender-sms-validator.spec.js +22 -0
  142. package/dist/validators/settings-with-tabs-validator.spec.d.ts +1 -0
  143. package/dist/validators/settings-with-tabs-validator.spec.js +29 -0
  144. package/dist/validators/settings-with-tabs.validator.d.ts +2 -0
  145. package/dist/validators/settings-with-tabs.validator.js +11 -0
  146. package/dist/validators/settings-with-url-validator.spec.d.ts +1 -0
  147. package/dist/validators/settings-with-url-validator.spec.js +29 -0
  148. package/dist/validators/settings-with-url.validator.d.ts +2 -0
  149. package/dist/validators/settings-with-url.validator.js +11 -0
  150. package/dist/validators/unit-validator.spec.d.ts +1 -0
  151. package/dist/validators/unit-validator.spec.js +27 -0
  152. package/dist/validators/unit.validator.d.ts +2 -0
  153. package/dist/validators/unit.validator.js +11 -0
  154. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsPlainObject = IsPlainObject;
4
+ const class_validator_1 = require("class-validator");
5
+ function IsPlainObject(validationOptions) {
6
+ return function (object, propertyName) {
7
+ (0, class_validator_1.registerDecorator)({
8
+ name: 'isPlainObject',
9
+ target: object.constructor,
10
+ propertyName: propertyName,
11
+ options: validationOptions,
12
+ validator: {
13
+ validate(value, _args) {
14
+ if (value === null || typeof value !== 'object' || value.constructor !== Object) {
15
+ return false;
16
+ }
17
+ for (const key in value) {
18
+ if (typeof key !== 'string' || typeof value[key] === 'function') {
19
+ return false;
20
+ }
21
+ }
22
+ return true;
23
+ },
24
+ defaultMessage(_args) {
25
+ return '$property must be a plain object with key-value pairs';
26
+ },
27
+ },
28
+ });
29
+ };
30
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const class_validator_1 = require("class-validator");
13
+ const class_transformer_1 = require("class-transformer");
14
+ const is_property_forbidden_validator_1 = require("../decorators/is-property-forbidden.validator");
15
+ class TestDto {
16
+ }
17
+ __decorate([
18
+ (0, is_property_forbidden_validator_1.IsPropertyForbidden)('forbiddenProp', { message: 'forbiddenProp must not be present' }),
19
+ __metadata("design:type", Object)
20
+ ], TestDto.prototype, "someProp", void 0);
21
+ class TestDto2 {
22
+ }
23
+ __decorate([
24
+ (0, is_property_forbidden_validator_1.IsPropertyForbidden)('forbiddenProp'),
25
+ __metadata("design:type", Object)
26
+ ], TestDto2.prototype, "someProp", void 0);
27
+ describe('IsPropertyForbidden decorator', () => {
28
+ it('passes validation when forbidden property is absent', async () => {
29
+ const dto = (0, class_transformer_1.plainToInstance)(TestDto, { someProp: 'allowed' });
30
+ const errors = await (0, class_validator_1.validate)(dto);
31
+ expect(errors.length).toBe(0);
32
+ });
33
+ it('fails validation when forbidden property is present', async () => {
34
+ const dto = (0, class_transformer_1.plainToInstance)(TestDto, { someProp: 'allowed', forbiddenProp: 'not allowed' });
35
+ const errors = await (0, class_validator_1.validate)(dto);
36
+ expect(errors.length).toBeGreaterThan(0);
37
+ // Validate error message
38
+ expect(errors[0].constraints).toBeDefined();
39
+ expect(errors[0].constraints).toHaveProperty('isPropertyForbidden');
40
+ expect(errors[0].constraints.isPropertyForbidden).toBe('forbiddenProp must not be present');
41
+ });
42
+ it('uses custom error message if provided', async () => {
43
+ class CustomMessageDto {
44
+ }
45
+ __decorate([
46
+ (0, is_property_forbidden_validator_1.IsPropertyForbidden)('badProp', { message: 'Custom forbidden message' }),
47
+ __metadata("design:type", Object)
48
+ ], CustomMessageDto.prototype, "prop", void 0);
49
+ const dto = (0, class_transformer_1.plainToInstance)(CustomMessageDto, { prop: 'ok', badProp: 123 });
50
+ const errors = await (0, class_validator_1.validate)(dto);
51
+ expect(errors.length).toBeGreaterThan(0);
52
+ expect(errors[0].constraints).toBeDefined();
53
+ expect(errors[0].constraints.isPropertyForbidden).toBe('Custom forbidden message');
54
+ });
55
+ it('uses default error message if no message is provided', async () => {
56
+ const dto = (0, class_transformer_1.plainToInstance)(TestDto2, { someProp: 'allowed', forbiddenProp: 'not allowed' });
57
+ const errors = await (0, class_validator_1.validate)(dto);
58
+ expect(errors.length).toBeGreaterThan(0);
59
+ expect(errors[0].constraints).toBeDefined();
60
+ expect(errors[0].constraints.isPropertyForbidden).toBe('Property \'forbiddenProp\' is not allowed');
61
+ });
62
+ });
@@ -0,0 +1,2 @@
1
+ import { ValidationOptions } from 'class-validator';
2
+ export declare function IsPropertyForbidden(property: string, validationOptions?: ValidationOptions): (object: Object, propertyName: string) => void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsPropertyForbidden = IsPropertyForbidden;
4
+ const class_validator_1 = require("class-validator");
5
+ function IsPropertyForbidden(property, validationOptions) {
6
+ return function (object, propertyName) {
7
+ (0, class_validator_1.registerDecorator)({
8
+ name: 'isPropertyForbidden',
9
+ target: object.constructor,
10
+ propertyName,
11
+ options: validationOptions,
12
+ validator: {
13
+ validate(_value, args) {
14
+ return !(property in args.object);
15
+ },
16
+ defaultMessage(_args) {
17
+ return `Property '${property}' is not allowed`;
18
+ },
19
+ },
20
+ });
21
+ };
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const class_validator_1 = require("class-validator");
13
+ const is_regex_validator_1 = require("./is-regex.validator");
14
+ class TestDto {
15
+ }
16
+ __decorate([
17
+ (0, is_regex_validator_1.IsRegex)(),
18
+ __metadata("design:type", String)
19
+ ], TestDto.prototype, "regexField", void 0);
20
+ describe('IsRegex', () => {
21
+ it('should validate valid regex strings', () => {
22
+ const dto = new TestDto();
23
+ dto.regexField = '^abc$';
24
+ const errors = (0, class_validator_1.validateSync)(dto);
25
+ expect(errors.length).toBe(0);
26
+ });
27
+ it('should invalidate invalid regex strings', () => {
28
+ const dto = new TestDto();
29
+ dto.regexField = '[';
30
+ const errors = (0, class_validator_1.validateSync)(dto);
31
+ expect(errors.length).toBeGreaterThan(0);
32
+ });
33
+ it('should invalidate non-string values', () => {
34
+ const dto = new TestDto();
35
+ // @ts-ignore
36
+ dto.regexField = 123;
37
+ const errors = (0, class_validator_1.validateSync)(dto);
38
+ expect(errors.length).toBeGreaterThan(0);
39
+ });
40
+ it('should invalidate empty strings', () => {
41
+ const dto = new TestDto();
42
+ dto.regexField = '';
43
+ const errors = (0, class_validator_1.validateSync)(dto);
44
+ expect(errors.length).toBeGreaterThan(0);
45
+ });
46
+ });
@@ -0,0 +1,2 @@
1
+ import { ValidationOptions } from 'class-validator';
2
+ export declare function IsRegex(validationOptions?: ValidationOptions): (object: Object, propertyName: string) => void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsRegex = IsRegex;
4
+ const class_validator_1 = require("class-validator");
5
+ function IsRegex(validationOptions) {
6
+ return function (object, propertyName) {
7
+ (0, class_validator_1.registerDecorator)({
8
+ name: 'isRegex',
9
+ target: object.constructor,
10
+ propertyName: propertyName,
11
+ options: validationOptions,
12
+ validator: {
13
+ validate(value) {
14
+ if (typeof value !== 'string')
15
+ return false;
16
+ if (value.trim().length === 0)
17
+ return false;
18
+ try {
19
+ new RegExp(value);
20
+ return true;
21
+ }
22
+ catch (_a) {
23
+ return false;
24
+ }
25
+ },
26
+ defaultMessage() {
27
+ return '$property must be a valid regular expression';
28
+ },
29
+ },
30
+ });
31
+ };
32
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const class_validator_1 = require("class-validator");
13
+ const unique_field_in_array_validator_1 = require("./unique-field-in-array.validator");
14
+ class TestDto {
15
+ }
16
+ __decorate([
17
+ (0, unique_field_in_array_validator_1.UniqueFieldInArray)('id'),
18
+ __metadata("design:type", Array)
19
+ ], TestDto.prototype, "items", void 0);
20
+ describe('UniqueFieldInArray', () => {
21
+ it('should validate array with unique field values', () => {
22
+ const dto = new TestDto();
23
+ dto.items = [{ id: 1 }, { id: 2 }];
24
+ const errors = (0, class_validator_1.validateSync)(dto);
25
+ expect(errors.length).toBe(0);
26
+ });
27
+ it('should invalidate array with duplicate field values', () => {
28
+ const dto = new TestDto();
29
+ dto.items = [{ id: 1 }, { id: 1 }];
30
+ const errors = (0, class_validator_1.validateSync)(dto);
31
+ expect(errors.length).toBeGreaterThan(0);
32
+ });
33
+ it('should validate empty array', () => {
34
+ const dto = new TestDto();
35
+ dto.items = [];
36
+ const errors = (0, class_validator_1.validateSync)(dto);
37
+ expect(errors.length).toBe(0);
38
+ });
39
+ });
@@ -0,0 +1,6 @@
1
+ import { ValidationArguments, ValidationOptions, ValidatorConstraintInterface } from 'class-validator';
2
+ export declare class UniqueFieldInArrayConstraint implements ValidatorConstraintInterface {
3
+ validate(value: any[], args: ValidationArguments): boolean;
4
+ defaultMessage(args: ValidationArguments): string;
5
+ }
6
+ export declare function UniqueFieldInArray(field: string, validationOptions?: ValidationOptions): (object: any, propertyName: string) => void;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.UniqueFieldInArrayConstraint = void 0;
10
+ exports.UniqueFieldInArray = UniqueFieldInArray;
11
+ const class_validator_1 = require("class-validator");
12
+ let UniqueFieldInArrayConstraint = class UniqueFieldInArrayConstraint {
13
+ validate(value, args) {
14
+ if (!Array.isArray(value))
15
+ return true; // Let @IsArray handle wrong type
16
+ const field = args.constraints[0];
17
+ const seen = new Set();
18
+ for (const obj of value) {
19
+ if (obj && typeof obj === 'object' && obj[field] !== undefined) {
20
+ if (seen.has(obj[field])) {
21
+ return false;
22
+ }
23
+ seen.add(obj[field]);
24
+ }
25
+ }
26
+ return true;
27
+ }
28
+ defaultMessage(args) {
29
+ const field = args.constraints[0];
30
+ return `All objects in ${args.property} must have a unique "${field}" value`;
31
+ }
32
+ };
33
+ exports.UniqueFieldInArrayConstraint = UniqueFieldInArrayConstraint;
34
+ exports.UniqueFieldInArrayConstraint = UniqueFieldInArrayConstraint = __decorate([
35
+ (0, class_validator_1.ValidatorConstraint)({ async: false })
36
+ ], UniqueFieldInArrayConstraint);
37
+ function UniqueFieldInArray(field, validationOptions) {
38
+ return function (object, propertyName) {
39
+ (0, class_validator_1.registerDecorator)({
40
+ target: object.constructor,
41
+ propertyName,
42
+ options: validationOptions,
43
+ constraints: [field],
44
+ validator: UniqueFieldInArrayConstraint,
45
+ });
46
+ };
47
+ }
@@ -27,6 +27,7 @@ class ActionDto {
27
27
  exports.ActionDto = ActionDto;
28
28
  __decorate([
29
29
  (0, class_validator_1.IsString)(),
30
+ (0, class_validator_1.IsNotEmpty)(),
30
31
  __metadata("design:type", String)
31
32
  ], ActionDto.prototype, "icon", void 0);
32
33
  __decorate([
@@ -36,9 +37,11 @@ __decorate([
36
37
  ], ActionDto.prototype, "label", void 0);
37
38
  __decorate([
38
39
  (0, class_validator_1.IsEnum)(open_method_enum_1.OpenMethodEnum),
40
+ (0, class_validator_1.IsNotEmpty)(),
39
41
  __metadata("design:type", String)
40
42
  ], ActionDto.prototype, "openMethod", void 0);
41
43
  __decorate([
42
- (0, class_validator_1.IsUrl)(),
44
+ (0, class_validator_1.IsUrl)({ protocols: ['https'], require_protocol: true }),
45
+ (0, class_validator_1.IsNotEmpty)(),
43
46
  __metadata("design:type", String)
44
47
  ], ActionDto.prototype, "url", void 0);
@@ -0,0 +1,38 @@
1
+ import { TabDto } from './tab.dto';
2
+ import { ActionDto } from './action.dto';
3
+ import { MenuDtoWithSubmenu, MenuDtoWithUrl } from './menu.dto';
4
+ import { SettingsWithTabsDto, SettingsWithUrlDto } from './settings.dto';
5
+ export declare class AdminPanelTabsDto {
6
+ product?: TabDto[];
7
+ item?: TabDto[];
8
+ client?: TabDto[];
9
+ user?: TabDto[];
10
+ order?: TabDto[];
11
+ }
12
+ export declare class AdminPanelMoreActionsDto {
13
+ client?: ActionDto[];
14
+ item?: ActionDto[];
15
+ invoice?: ActionDto[];
16
+ user?: ActionDto[];
17
+ order?: ActionDto[];
18
+ }
19
+ export declare class AdminPanelDto {
20
+ /**
21
+ * Defines the tab structure for different sections of the admin panel.
22
+ * Each property represents a section (e.g., product, item) and contains an array of TabDto objects.
23
+ */
24
+ tabs?: AdminPanelTabsDto;
25
+ /**
26
+ * Defines additional actions that can be performed in different sections of the admin panel.
27
+ */
28
+ moreActions?: AdminPanelMoreActionsDto;
29
+ /**
30
+ * The main menu for the admin panel.
31
+ * This can be a simple menu with a URL or a menu with submenus.
32
+ */
33
+ menu?: MenuDtoWithSubmenu | MenuDtoWithUrl;
34
+ /**
35
+ * Configuration for the integration's settings page.
36
+ */
37
+ settings?: SettingsWithUrlDto | SettingsWithTabsDto;
38
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminPanelDto = exports.AdminPanelMoreActionsDto = exports.AdminPanelTabsDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const tab_dto_1 = require("./tab.dto");
16
+ const action_dto_1 = require("./action.dto");
17
+ const menu_dto_1 = require("./menu.dto");
18
+ const settings_dto_1 = require("./settings.dto");
19
+ const settings_transformer_1 = require("../transformers/settings.transformer");
20
+ const menu_transformer_1 = require("../transformers/menu.transformer");
21
+ const is_one_of_validator_1 = require("../decorators/is-one-of.validator");
22
+ const at_least_one_non_empty_validator_1 = require("../decorators/at-least-one-non-empty.validator");
23
+ let AdminPanelTabsDto = class AdminPanelTabsDto {
24
+ };
25
+ exports.AdminPanelTabsDto = AdminPanelTabsDto;
26
+ __decorate([
27
+ (0, class_validator_1.ValidateNested)({ each: true }),
28
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsArray)(),
31
+ (0, class_validator_1.ArrayMinSize)(1),
32
+ __metadata("design:type", Array)
33
+ ], AdminPanelTabsDto.prototype, "product", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.ValidateNested)({ each: true }),
36
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsArray)(),
39
+ (0, class_validator_1.ArrayMinSize)(1),
40
+ __metadata("design:type", Array)
41
+ ], AdminPanelTabsDto.prototype, "item", void 0);
42
+ __decorate([
43
+ (0, class_validator_1.ValidateNested)({ each: true }),
44
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsArray)(),
47
+ (0, class_validator_1.ArrayMinSize)(1),
48
+ __metadata("design:type", Array)
49
+ ], AdminPanelTabsDto.prototype, "client", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.ValidateNested)({ each: true }),
52
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
53
+ (0, class_validator_1.IsOptional)(),
54
+ (0, class_validator_1.IsArray)(),
55
+ (0, class_validator_1.ArrayMinSize)(1),
56
+ __metadata("design:type", Array)
57
+ ], AdminPanelTabsDto.prototype, "user", void 0);
58
+ __decorate([
59
+ (0, class_validator_1.ValidateNested)({ each: true }),
60
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
61
+ (0, class_validator_1.IsOptional)(),
62
+ (0, class_validator_1.IsArray)(),
63
+ (0, class_validator_1.ArrayMinSize)(1),
64
+ __metadata("design:type", Array)
65
+ ], AdminPanelTabsDto.prototype, "order", void 0);
66
+ exports.AdminPanelTabsDto = AdminPanelTabsDto = __decorate([
67
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(['product', 'item', 'client', 'user', 'order'])
68
+ ], AdminPanelTabsDto);
69
+ let AdminPanelMoreActionsDto = class AdminPanelMoreActionsDto {
70
+ };
71
+ exports.AdminPanelMoreActionsDto = AdminPanelMoreActionsDto;
72
+ __decorate([
73
+ (0, class_validator_1.IsOptional)(),
74
+ (0, class_validator_1.IsArray)(),
75
+ (0, class_validator_1.ArrayMinSize)(1),
76
+ (0, class_validator_1.ValidateNested)({ each: true }),
77
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
78
+ __metadata("design:type", Array)
79
+ ], AdminPanelMoreActionsDto.prototype, "client", void 0);
80
+ __decorate([
81
+ (0, class_validator_1.IsOptional)(),
82
+ (0, class_validator_1.IsArray)(),
83
+ (0, class_validator_1.ArrayMinSize)(1),
84
+ (0, class_validator_1.ValidateNested)({ each: true }),
85
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
86
+ __metadata("design:type", Array)
87
+ ], AdminPanelMoreActionsDto.prototype, "item", void 0);
88
+ __decorate([
89
+ (0, class_validator_1.IsOptional)(),
90
+ (0, class_validator_1.IsArray)(),
91
+ (0, class_validator_1.ArrayMinSize)(1),
92
+ (0, class_validator_1.ValidateNested)({ each: true }),
93
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
94
+ __metadata("design:type", Array)
95
+ ], AdminPanelMoreActionsDto.prototype, "invoice", void 0);
96
+ __decorate([
97
+ (0, class_validator_1.IsOptional)(),
98
+ (0, class_validator_1.IsArray)(),
99
+ (0, class_validator_1.ArrayMinSize)(1),
100
+ (0, class_validator_1.ValidateNested)({ each: true }),
101
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
102
+ __metadata("design:type", Array)
103
+ ], AdminPanelMoreActionsDto.prototype, "user", void 0);
104
+ __decorate([
105
+ (0, class_validator_1.IsOptional)(),
106
+ (0, class_validator_1.IsArray)(),
107
+ (0, class_validator_1.ArrayMinSize)(1),
108
+ (0, class_validator_1.ValidateNested)({ each: true }),
109
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
110
+ __metadata("design:type", Array)
111
+ ], AdminPanelMoreActionsDto.prototype, "order", void 0);
112
+ exports.AdminPanelMoreActionsDto = AdminPanelMoreActionsDto = __decorate([
113
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(['client', 'item', 'invoice', 'user', 'order'])
114
+ ], AdminPanelMoreActionsDto);
115
+ let AdminPanelDto = class AdminPanelDto {
116
+ };
117
+ exports.AdminPanelDto = AdminPanelDto;
118
+ __decorate([
119
+ (0, class_validator_1.IsOptional)(),
120
+ (0, class_validator_1.ValidateNested)(),
121
+ (0, class_transformer_1.Type)(() => AdminPanelTabsDto),
122
+ __metadata("design:type", AdminPanelTabsDto)
123
+ ], AdminPanelDto.prototype, "tabs", void 0);
124
+ __decorate([
125
+ (0, class_validator_1.IsOptional)(),
126
+ (0, class_validator_1.ValidateNested)(),
127
+ (0, class_transformer_1.Type)(() => AdminPanelMoreActionsDto),
128
+ __metadata("design:type", AdminPanelMoreActionsDto)
129
+ ], AdminPanelDto.prototype, "moreActions", void 0);
130
+ __decorate([
131
+ (0, class_validator_1.IsOptional)(),
132
+ (0, class_transformer_1.Transform)(({ value }) => (0, menu_transformer_1.transformMenu)(value)),
133
+ (0, class_validator_1.ValidateNested)(),
134
+ (0, is_one_of_validator_1.IsOneOf)([menu_dto_1.MenuDtoWithUrl, menu_dto_1.MenuDtoWithSubmenu], {
135
+ message: 'menu must be MenuDtoWithUrl or MenuDtoWithSubmenu',
136
+ }),
137
+ __metadata("design:type", Object)
138
+ ], AdminPanelDto.prototype, "menu", void 0);
139
+ __decorate([
140
+ (0, class_validator_1.IsOptional)(),
141
+ (0, class_transformer_1.Transform)(({ value }) => (0, settings_transformer_1.transformSettings)(value)),
142
+ (0, class_validator_1.ValidateNested)(),
143
+ (0, is_one_of_validator_1.IsOneOf)([settings_dto_1.SettingsWithUrlDto, settings_dto_1.SettingsWithTabsDto], {
144
+ message: 'settings must be SettingsWithUrlDto or SettingsWithTabsDto',
145
+ }),
146
+ __metadata("design:type", Object)
147
+ ], AdminPanelDto.prototype, "settings", void 0);
148
+ exports.AdminPanelDto = AdminPanelDto = __decorate([
149
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(['tabs', 'moreActions', 'menu', 'settings'])
150
+ ], AdminPanelDto);
@@ -0,0 +1,24 @@
1
+ import { ActionDto } from "./action.dto";
2
+ import { MenuDtoWithSubmenu, MenuDtoWithUrl } from "./menu.dto";
3
+ import { TabDto } from "./tab.dto";
4
+ export declare class ClientPanelTabsDto {
5
+ item?: TabDto[];
6
+ }
7
+ export declare class ClientPanelMoreActionsDto {
8
+ item?: ActionDto[];
9
+ }
10
+ export declare class ClientPanelDto {
11
+ /**
12
+ * Defines the tab structure for the client panel.
13
+ */
14
+ tabs?: ClientPanelTabsDto;
15
+ /**
16
+ * Defines additional actions that can be performed in the client panel.
17
+ */
18
+ moreActions?: ClientPanelMoreActionsDto;
19
+ /**
20
+ * The main menu for the client panel.
21
+ * This can be a simple menu with a URL or a menu with submenus.
22
+ */
23
+ menu?: MenuDtoWithSubmenu | MenuDtoWithUrl;
24
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ClientPanelDto = exports.ClientPanelMoreActionsDto = exports.ClientPanelTabsDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const action_dto_1 = require("./action.dto");
16
+ const menu_dto_1 = require("./menu.dto");
17
+ const tab_dto_1 = require("./tab.dto");
18
+ const menu_transformer_1 = require("../transformers/menu.transformer");
19
+ const is_one_of_validator_1 = require("../decorators/is-one-of.validator");
20
+ const at_least_one_non_empty_validator_1 = require("../decorators/at-least-one-non-empty.validator");
21
+ let ClientPanelTabsDto = class ClientPanelTabsDto {
22
+ };
23
+ exports.ClientPanelTabsDto = ClientPanelTabsDto;
24
+ __decorate([
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsArray)(),
27
+ (0, class_validator_1.ArrayMinSize)(1),
28
+ (0, class_validator_1.ValidateNested)({ each: true }),
29
+ (0, class_transformer_1.Type)(() => tab_dto_1.TabDto),
30
+ __metadata("design:type", Array)
31
+ ], ClientPanelTabsDto.prototype, "item", void 0);
32
+ exports.ClientPanelTabsDto = ClientPanelTabsDto = __decorate([
33
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(["item"])
34
+ ], ClientPanelTabsDto);
35
+ let ClientPanelMoreActionsDto = class ClientPanelMoreActionsDto {
36
+ };
37
+ exports.ClientPanelMoreActionsDto = ClientPanelMoreActionsDto;
38
+ __decorate([
39
+ (0, class_validator_1.IsOptional)(),
40
+ (0, class_validator_1.IsArray)(),
41
+ (0, class_validator_1.ArrayMinSize)(1),
42
+ (0, class_validator_1.ValidateNested)({ each: true }),
43
+ (0, class_transformer_1.Type)(() => action_dto_1.ActionDto),
44
+ __metadata("design:type", Array)
45
+ ], ClientPanelMoreActionsDto.prototype, "item", void 0);
46
+ exports.ClientPanelMoreActionsDto = ClientPanelMoreActionsDto = __decorate([
47
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(["item"])
48
+ ], ClientPanelMoreActionsDto);
49
+ let ClientPanelDto = class ClientPanelDto {
50
+ };
51
+ exports.ClientPanelDto = ClientPanelDto;
52
+ __decorate([
53
+ (0, class_validator_1.IsOptional)(),
54
+ (0, class_validator_1.ValidateNested)(),
55
+ (0, class_transformer_1.Type)(() => ClientPanelTabsDto),
56
+ __metadata("design:type", ClientPanelTabsDto)
57
+ ], ClientPanelDto.prototype, "tabs", void 0);
58
+ __decorate([
59
+ (0, class_validator_1.IsOptional)(),
60
+ (0, class_validator_1.ValidateNested)(),
61
+ (0, class_transformer_1.Type)(() => ClientPanelMoreActionsDto),
62
+ __metadata("design:type", ClientPanelMoreActionsDto)
63
+ ], ClientPanelDto.prototype, "moreActions", void 0);
64
+ __decorate([
65
+ (0, class_validator_1.IsOptional)(),
66
+ (0, class_validator_1.ValidateNested)(),
67
+ (0, class_transformer_1.Transform)(({ value }) => (0, menu_transformer_1.transformMenu)(value)),
68
+ (0, is_one_of_validator_1.IsOneOf)([menu_dto_1.MenuDtoWithSubmenu, menu_dto_1.MenuDtoWithUrl], {
69
+ message: 'menu must be either a MenuDtoWithUrl or MenuDtoWithSubmenu',
70
+ }),
71
+ __metadata("design:type", Object)
72
+ ], ClientPanelDto.prototype, "menu", void 0);
73
+ exports.ClientPanelDto = ClientPanelDto = __decorate([
74
+ (0, at_least_one_non_empty_validator_1.AtLeastOneNonEmptyProperty)(["tabs", "moreActions", "menu"])
75
+ ], ClientPanelDto);
@@ -39,7 +39,7 @@ __decorate([
39
39
  __metadata("design:type", String)
40
40
  ], CompanyDataDto.prototype, "invoiceEmail", void 0);
41
41
  __decorate([
42
- (0, class_validator_1.IsUrl)(),
42
+ (0, class_validator_1.IsUrl)({ protocols: ['https'], require_protocol: true }),
43
43
  __metadata("design:type", String)
44
44
  ], CompanyDataDto.prototype, "privacyPolicyUrl", void 0);
45
45
  __decorate([