@explorins/pers-shared 2.1.153 → 2.1.155

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 (173) hide show
  1. package/dist/cjs/browser.d.ts +1 -0
  2. package/dist/cjs/browser.d.ts.map +1 -1
  3. package/dist/cjs/browser.js +2 -0
  4. package/dist/cjs/browser.js.map +1 -1
  5. package/dist/cjs/index.d.ts +1 -0
  6. package/dist/cjs/index.d.ts.map +1 -1
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/shared-lib/dto/ai/ai-generation-log.dto.d.ts.map +1 -1
  10. package/dist/cjs/shared-lib/dto/ai/ai-generation-log.dto.js +2 -0
  11. package/dist/cjs/shared-lib/dto/ai/ai-generation-log.dto.js.map +1 -1
  12. package/dist/cjs/shared-lib/dto/analytics/redemption-redeem-analytics-request.dto.d.ts +1 -1
  13. package/dist/cjs/shared-lib/dto/api-key/api-key.dto.d.ts.map +1 -1
  14. package/dist/cjs/shared-lib/dto/api-key/api-key.dto.js +1 -0
  15. package/dist/cjs/shared-lib/dto/api-key/api-key.dto.js.map +1 -1
  16. package/dist/cjs/shared-lib/dto/business/business-membership.dto.d.ts.map +1 -1
  17. package/dist/cjs/shared-lib/dto/business/business-membership.dto.js +4 -2
  18. package/dist/cjs/shared-lib/dto/business/business-membership.dto.js.map +1 -1
  19. package/dist/cjs/shared-lib/dto/business/business-type.dto.d.ts.map +1 -1
  20. package/dist/cjs/shared-lib/dto/business/business-type.dto.js +8 -0
  21. package/dist/cjs/shared-lib/dto/business/business-type.dto.js.map +1 -1
  22. package/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto.js +2 -2
  23. package/dist/cjs/shared-lib/dto/campaign/campaignUserClaim.dto.js.map +1 -1
  24. package/dist/cjs/shared-lib/dto/purchase/donationType.dto.d.ts +4 -2
  25. package/dist/cjs/shared-lib/dto/purchase/donationType.dto.d.ts.map +1 -1
  26. package/dist/cjs/shared-lib/dto/purchase/donationType.dto.js +14 -6
  27. package/dist/cjs/shared-lib/dto/purchase/donationType.dto.js.map +1 -1
  28. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.d.ts +7 -0
  29. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.d.ts.map +1 -1
  30. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.js +26 -0
  31. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.js.map +1 -1
  32. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.d.ts +0 -2
  33. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.d.ts.map +1 -1
  34. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.js +8 -11
  35. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.js.map +1 -1
  36. package/dist/cjs/shared-lib/dto/transaction/transaction.dto.js +2 -2
  37. package/dist/cjs/shared-lib/dto/transaction/transaction.dto.js.map +1 -1
  38. package/dist/cjs/shared-lib/dto/wallet.dto.d.ts.map +1 -1
  39. package/dist/cjs/shared-lib/dto/wallet.dto.js +4 -2
  40. package/dist/cjs/shared-lib/dto/wallet.dto.js.map +1 -1
  41. package/dist/cjs/shared-lib/dto/webhook/webhook.dto.js +2 -2
  42. package/dist/cjs/shared-lib/dto/webhook/webhook.dto.js.map +1 -1
  43. package/dist/cjs/shared-lib/enum/index.d.ts +1 -0
  44. package/dist/cjs/shared-lib/enum/index.d.ts.map +1 -1
  45. package/dist/cjs/shared-lib/enum/index.js +2 -0
  46. package/dist/cjs/shared-lib/enum/index.js.map +1 -1
  47. package/dist/cjs/shared-lib/interfaces/email-config.interface.d.ts +2 -0
  48. package/dist/cjs/shared-lib/interfaces/email-config.interface.d.ts.map +1 -1
  49. package/dist/cjs/shared-lib/types/filter-options.type.d.ts +4 -4
  50. package/dist/cjs/shared-lib/types/filter-options.type.d.ts.map +1 -1
  51. package/dist/cjs/shared-lib/types/index.d.ts +3 -0
  52. package/dist/cjs/shared-lib/types/index.d.ts.map +1 -1
  53. package/dist/cjs/shared-lib/types/index.js +3 -0
  54. package/dist/cjs/shared-lib/types/index.js.map +1 -1
  55. package/dist/cjs/shared-lib/types/unique-user-identifier-keys.d.ts +13 -0
  56. package/dist/cjs/shared-lib/types/unique-user-identifier-keys.d.ts.map +1 -1
  57. package/dist/cjs/shared-lib/types/unique-user-identifier-keys.js +22 -3
  58. package/dist/cjs/shared-lib/types/unique-user-identifier-keys.js.map +1 -1
  59. package/dist/cjs/shared-lib/types/user-fields.type.d.ts +105 -0
  60. package/dist/cjs/shared-lib/types/user-fields.type.d.ts.map +1 -0
  61. package/dist/cjs/shared-lib/types/user-fields.type.js +76 -0
  62. package/dist/cjs/shared-lib/types/user-fields.type.js.map +1 -0
  63. package/dist/cjs/shared-lib/types/uuid.type.d.ts +15 -0
  64. package/dist/cjs/shared-lib/types/uuid.type.d.ts.map +1 -0
  65. package/dist/cjs/shared-lib/types/uuid.type.js +11 -0
  66. package/dist/cjs/shared-lib/types/uuid.type.js.map +1 -0
  67. package/dist/cjs/shared-lib/validation/field-validation.d.ts +35 -0
  68. package/dist/cjs/shared-lib/validation/field-validation.d.ts.map +1 -0
  69. package/dist/cjs/shared-lib/validation/field-validation.js +238 -0
  70. package/dist/cjs/shared-lib/validation/field-validation.js.map +1 -0
  71. package/dist/cjs/shared-lib/validation/index.d.ts +4 -0
  72. package/dist/cjs/shared-lib/validation/index.d.ts.map +1 -0
  73. package/dist/cjs/shared-lib/validation/index.js +23 -0
  74. package/dist/cjs/shared-lib/validation/index.js.map +1 -0
  75. package/dist/cjs/shared-lib/validation/validation.types.d.ts +54 -0
  76. package/dist/cjs/shared-lib/validation/validation.types.d.ts.map +1 -0
  77. package/dist/cjs/shared-lib/validation/validation.types.js +19 -0
  78. package/dist/cjs/shared-lib/validation/validation.types.js.map +1 -0
  79. package/dist/cjs/shared-lib/validation/validators.d.ts +37 -0
  80. package/dist/cjs/shared-lib/validation/validators.d.ts.map +1 -0
  81. package/dist/cjs/shared-lib/validation/validators.js +69 -0
  82. package/dist/cjs/shared-lib/validation/validators.js.map +1 -0
  83. package/dist/esm/browser.d.ts +1 -0
  84. package/dist/esm/browser.d.ts.map +1 -1
  85. package/dist/esm/browser.js +2 -0
  86. package/dist/esm/browser.js.map +1 -1
  87. package/dist/esm/index.d.ts +1 -0
  88. package/dist/esm/index.d.ts.map +1 -1
  89. package/dist/esm/index.js +1 -0
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/shared-lib/dto/ai/ai-generation-log.dto.d.ts.map +1 -1
  92. package/dist/esm/shared-lib/dto/ai/ai-generation-log.dto.js +2 -0
  93. package/dist/esm/shared-lib/dto/ai/ai-generation-log.dto.js.map +1 -1
  94. package/dist/esm/shared-lib/dto/analytics/redemption-redeem-analytics-request.dto.d.ts +1 -1
  95. package/dist/esm/shared-lib/dto/api-key/api-key.dto.d.ts.map +1 -1
  96. package/dist/esm/shared-lib/dto/api-key/api-key.dto.js +1 -0
  97. package/dist/esm/shared-lib/dto/api-key/api-key.dto.js.map +1 -1
  98. package/dist/esm/shared-lib/dto/business/business-membership.dto.d.ts.map +1 -1
  99. package/dist/esm/shared-lib/dto/business/business-membership.dto.js +4 -2
  100. package/dist/esm/shared-lib/dto/business/business-membership.dto.js.map +1 -1
  101. package/dist/esm/shared-lib/dto/business/business-type.dto.d.ts.map +1 -1
  102. package/dist/esm/shared-lib/dto/business/business-type.dto.js +13 -5
  103. package/dist/esm/shared-lib/dto/business/business-type.dto.js.map +1 -1
  104. package/dist/esm/shared-lib/dto/campaign/campaignUserClaim.dto.js +2 -2
  105. package/dist/esm/shared-lib/dto/campaign/campaignUserClaim.dto.js.map +1 -1
  106. package/dist/esm/shared-lib/dto/purchase/donationType.dto.d.ts +4 -2
  107. package/dist/esm/shared-lib/dto/purchase/donationType.dto.d.ts.map +1 -1
  108. package/dist/esm/shared-lib/dto/purchase/donationType.dto.js +14 -7
  109. package/dist/esm/shared-lib/dto/purchase/donationType.dto.js.map +1 -1
  110. package/dist/esm/shared-lib/dto/tenant/email-config.dto.d.ts +7 -0
  111. package/dist/esm/shared-lib/dto/tenant/email-config.dto.d.ts.map +1 -1
  112. package/dist/esm/shared-lib/dto/tenant/email-config.dto.js +24 -0
  113. package/dist/esm/shared-lib/dto/tenant/email-config.dto.js.map +1 -1
  114. package/dist/esm/shared-lib/dto/tenant/tenant.dto.d.ts +0 -2
  115. package/dist/esm/shared-lib/dto/tenant/tenant.dto.d.ts.map +1 -1
  116. package/dist/esm/shared-lib/dto/tenant/tenant.dto.js +8 -10
  117. package/dist/esm/shared-lib/dto/tenant/tenant.dto.js.map +1 -1
  118. package/dist/esm/shared-lib/dto/transaction/transaction.dto.js +2 -2
  119. package/dist/esm/shared-lib/dto/transaction/transaction.dto.js.map +1 -1
  120. package/dist/esm/shared-lib/dto/wallet.dto.d.ts.map +1 -1
  121. package/dist/esm/shared-lib/dto/wallet.dto.js +4 -2
  122. package/dist/esm/shared-lib/dto/wallet.dto.js.map +1 -1
  123. package/dist/esm/shared-lib/dto/webhook/webhook.dto.js +2 -2
  124. package/dist/esm/shared-lib/dto/webhook/webhook.dto.js.map +1 -1
  125. package/dist/esm/shared-lib/enum/index.d.ts +1 -0
  126. package/dist/esm/shared-lib/enum/index.d.ts.map +1 -1
  127. package/dist/esm/shared-lib/enum/index.js +2 -0
  128. package/dist/esm/shared-lib/enum/index.js.map +1 -1
  129. package/dist/esm/shared-lib/interfaces/email-config.interface.d.ts +2 -0
  130. package/dist/esm/shared-lib/interfaces/email-config.interface.d.ts.map +1 -1
  131. package/dist/esm/shared-lib/types/filter-options.type.d.ts +4 -4
  132. package/dist/esm/shared-lib/types/filter-options.type.d.ts.map +1 -1
  133. package/dist/esm/shared-lib/types/index.d.ts +3 -0
  134. package/dist/esm/shared-lib/types/index.d.ts.map +1 -1
  135. package/dist/esm/shared-lib/types/index.js +3 -0
  136. package/dist/esm/shared-lib/types/index.js.map +1 -1
  137. package/dist/esm/shared-lib/types/unique-user-identifier-keys.d.ts +13 -0
  138. package/dist/esm/shared-lib/types/unique-user-identifier-keys.d.ts.map +1 -1
  139. package/dist/esm/shared-lib/types/unique-user-identifier-keys.js +21 -2
  140. package/dist/esm/shared-lib/types/unique-user-identifier-keys.js.map +1 -1
  141. package/dist/esm/shared-lib/types/user-fields.type.d.ts +105 -0
  142. package/dist/esm/shared-lib/types/user-fields.type.d.ts.map +1 -0
  143. package/dist/esm/shared-lib/types/user-fields.type.js +67 -0
  144. package/dist/esm/shared-lib/types/user-fields.type.js.map +1 -0
  145. package/dist/esm/shared-lib/types/uuid.type.d.ts +15 -0
  146. package/dist/esm/shared-lib/types/uuid.type.d.ts.map +1 -0
  147. package/dist/esm/shared-lib/types/uuid.type.js +7 -0
  148. package/dist/esm/shared-lib/types/uuid.type.js.map +1 -0
  149. package/dist/esm/shared-lib/validation/field-validation.d.ts +35 -0
  150. package/dist/esm/shared-lib/validation/field-validation.d.ts.map +1 -0
  151. package/dist/esm/shared-lib/validation/field-validation.js +219 -0
  152. package/dist/esm/shared-lib/validation/field-validation.js.map +1 -0
  153. package/dist/esm/shared-lib/validation/index.d.ts +4 -0
  154. package/dist/esm/shared-lib/validation/index.d.ts.map +1 -0
  155. package/dist/esm/shared-lib/validation/index.js +7 -0
  156. package/dist/esm/shared-lib/validation/index.js.map +1 -0
  157. package/dist/esm/shared-lib/validation/validation.types.d.ts +54 -0
  158. package/dist/esm/shared-lib/validation/validation.types.d.ts.map +1 -0
  159. package/dist/esm/shared-lib/validation/validation.types.js +16 -0
  160. package/dist/esm/shared-lib/validation/validation.types.js.map +1 -0
  161. package/dist/esm/shared-lib/validation/validators.d.ts +37 -0
  162. package/dist/esm/shared-lib/validation/validators.d.ts.map +1 -0
  163. package/dist/esm/shared-lib/validation/validators.js +61 -0
  164. package/dist/esm/shared-lib/validation/validators.js.map +1 -0
  165. package/package.json +1 -1
  166. package/dist/cjs/shared-lib/enum/lambda.enum.d.ts +0 -25
  167. package/dist/cjs/shared-lib/enum/lambda.enum.d.ts.map +0 -1
  168. package/dist/cjs/shared-lib/enum/lambda.enum.js +0 -31
  169. package/dist/cjs/shared-lib/enum/lambda.enum.js.map +0 -1
  170. package/dist/esm/shared-lib/enum/lambda.enum.d.ts +0 -25
  171. package/dist/esm/shared-lib/enum/lambda.enum.d.ts.map +0 -1
  172. package/dist/esm/shared-lib/enum/lambda.enum.js +0 -28
  173. package/dist/esm/shared-lib/enum/lambda.enum.js.map +0 -1
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAllFields = exports.validateFieldComparisons = exports.validateFieldValue = exports.getOperatorText = exports.compareValues = exports.UUID_REGEX = exports.WALLET_ADDRESS_REGEX = exports.URL_REGEX = exports.EMAIL_MAX_LENGTH = exports.EMAIL_REGEX = exports.isValidUuid = exports.isValidNonEmptyString = exports.isValidWalletAddress = exports.isValidUrl = exports.isValidEmail = exports.operatorText = void 0;
4
+ const validation_types_1 = require("./validation.types");
5
+ const validators_1 = require("./validators");
6
+ var validation_types_2 = require("./validation.types");
7
+ Object.defineProperty(exports, "operatorText", { enumerable: true, get: function () { return validation_types_2.operatorText; } });
8
+ // Re-export standalone validators
9
+ var validators_2 = require("./validators");
10
+ Object.defineProperty(exports, "isValidEmail", { enumerable: true, get: function () { return validators_2.isValidEmail; } });
11
+ Object.defineProperty(exports, "isValidUrl", { enumerable: true, get: function () { return validators_2.isValidUrl; } });
12
+ Object.defineProperty(exports, "isValidWalletAddress", { enumerable: true, get: function () { return validators_2.isValidWalletAddress; } });
13
+ Object.defineProperty(exports, "isValidNonEmptyString", { enumerable: true, get: function () { return validators_2.isValidNonEmptyString; } });
14
+ Object.defineProperty(exports, "isValidUuid", { enumerable: true, get: function () { return validators_2.isValidUuid; } });
15
+ Object.defineProperty(exports, "EMAIL_REGEX", { enumerable: true, get: function () { return validators_2.EMAIL_REGEX; } });
16
+ Object.defineProperty(exports, "EMAIL_MAX_LENGTH", { enumerable: true, get: function () { return validators_2.EMAIL_MAX_LENGTH; } });
17
+ Object.defineProperty(exports, "URL_REGEX", { enumerable: true, get: function () { return validators_2.URL_REGEX; } });
18
+ Object.defineProperty(exports, "WALLET_ADDRESS_REGEX", { enumerable: true, get: function () { return validators_2.WALLET_ADDRESS_REGEX; } });
19
+ Object.defineProperty(exports, "UUID_REGEX", { enumerable: true, get: function () { return validators_2.UUID_REGEX; } });
20
+ // ============================================================================
21
+ // Comparison Functions
22
+ // ============================================================================
23
+ /**
24
+ * Compare two values using the specified operator.
25
+ * Works with numbers, dates, and strings.
26
+ */
27
+ const compareValues = (a, b, op) => {
28
+ switch (op) {
29
+ case '<': return a < b;
30
+ case '<=': return a <= b;
31
+ case '>': return a > b;
32
+ case '>=': return a >= b;
33
+ case '==': return a === b;
34
+ case '!=': return a !== b;
35
+ }
36
+ };
37
+ exports.compareValues = compareValues;
38
+ /** Get human-readable operator text for error messages. */
39
+ const getOperatorText = (op) => validation_types_1.operatorText[op];
40
+ exports.getOperatorText = getOperatorText;
41
+ // ============================================================================
42
+ // Single Field Validation
43
+ // ============================================================================
44
+ /**
45
+ * Validate a single field value against validation rules.
46
+ * Does not check cross-field comparisons (use validateFieldComparisons for that).
47
+ */
48
+ const validateFieldValue = (value, rules, fieldType) => {
49
+ // No rules = valid
50
+ if (!rules) {
51
+ return null;
52
+ }
53
+ const stringValue = value !== null && value !== undefined ? String(value) : '';
54
+ const isEmpty = value === null || value === undefined || value === '';
55
+ // Required check
56
+ if (rules.required && isEmpty) {
57
+ return { field: '', message: 'This field is required', rule: 'required' };
58
+ }
59
+ // If empty and not required, skip other validations
60
+ if (isEmpty) {
61
+ return null;
62
+ }
63
+ // Type-specific validation
64
+ switch (fieldType) {
65
+ case 'text':
66
+ if (rules.minLength && stringValue.length < rules.minLength) {
67
+ return { field: '', message: `Minimum ${rules.minLength} characters required`, rule: 'minLength' };
68
+ }
69
+ if (rules.maxLength && stringValue.length > rules.maxLength) {
70
+ return { field: '', message: `Maximum ${rules.maxLength} characters allowed`, rule: 'maxLength' };
71
+ }
72
+ if (rules.pattern && !new RegExp(rules.pattern).test(stringValue)) {
73
+ return { field: '', message: rules.patternMessage || 'Invalid format', rule: 'pattern' };
74
+ }
75
+ break;
76
+ case 'email':
77
+ if (stringValue.length > validators_1.EMAIL_MAX_LENGTH || !validators_1.EMAIL_REGEX.test(stringValue)) {
78
+ return { field: '', message: 'Invalid email format', rule: 'email' };
79
+ }
80
+ if (rules.maxLength && stringValue.length > rules.maxLength) {
81
+ return { field: '', message: `Maximum ${rules.maxLength} characters allowed`, rule: 'maxLength' };
82
+ }
83
+ break;
84
+ case 'url':
85
+ if (!validators_1.URL_REGEX.test(stringValue)) {
86
+ return { field: '', message: 'Invalid URL format', rule: 'url' };
87
+ }
88
+ if (rules.maxLength && stringValue.length > rules.maxLength) {
89
+ return { field: '', message: `Maximum ${rules.maxLength} characters allowed`, rule: 'maxLength' };
90
+ }
91
+ break;
92
+ case 'number':
93
+ const numValue = typeof value === 'number' ? value : parseFloat(stringValue);
94
+ if (isNaN(numValue)) {
95
+ return { field: '', message: 'Must be a valid number', rule: 'type' };
96
+ }
97
+ if (rules.min !== undefined && numValue < rules.min) {
98
+ return { field: '', message: `Minimum value is ${rules.min}`, rule: 'min' };
99
+ }
100
+ if (rules.max !== undefined && numValue > rules.max) {
101
+ return { field: '', message: `Maximum value is ${rules.max}`, rule: 'max' };
102
+ }
103
+ break;
104
+ case 'boolean':
105
+ if (typeof value !== 'boolean' && stringValue !== 'true' && stringValue !== 'false') {
106
+ return { field: '', message: 'Must be true or false', rule: 'type' };
107
+ }
108
+ break;
109
+ case 'date':
110
+ const dateValue = new Date(stringValue);
111
+ if (isNaN(dateValue.getTime())) {
112
+ return { field: '', message: 'Must be a valid date', rule: 'type' };
113
+ }
114
+ const now = new Date();
115
+ if (rules.minDate) {
116
+ const minDate = rules.minDate === 'now' ? now : new Date(rules.minDate);
117
+ if (dateValue < minDate) {
118
+ return {
119
+ field: '',
120
+ message: rules.minDate === 'now' ? 'Date must be in the future' : `Date must be after ${rules.minDate}`,
121
+ rule: 'minDate'
122
+ };
123
+ }
124
+ }
125
+ if (rules.maxDate) {
126
+ const maxDate = rules.maxDate === 'now' ? now : new Date(rules.maxDate);
127
+ if (dateValue > maxDate) {
128
+ return {
129
+ field: '',
130
+ message: rules.maxDate === 'now' ? 'Date must be in the past' : `Date must be before ${rules.maxDate}`,
131
+ rule: 'maxDate'
132
+ };
133
+ }
134
+ }
135
+ break;
136
+ }
137
+ return null;
138
+ };
139
+ exports.validateFieldValue = validateFieldValue;
140
+ // ============================================================================
141
+ // Cross-Field / Literal Comparison Validation
142
+ // ============================================================================
143
+ /** Type guard for field comparison */
144
+ const isFieldComparison = (c) => 'field' in c && c.field !== undefined;
145
+ /**
146
+ * Validate comparison rules for a single field.
147
+ * Supports comparing to another field OR a literal value.
148
+ */
149
+ const validateFieldComparisons = (fieldKey, value, comparisons, allData, fieldType) => {
150
+ if (!comparisons || comparisons.length === 0)
151
+ return [];
152
+ const errors = [];
153
+ for (const comparison of comparisons) {
154
+ // Skip if this field's value is empty
155
+ if (value === null || value === undefined || value === '')
156
+ continue;
157
+ // Get the comparison target (field value or literal)
158
+ const isField = isFieldComparison(comparison);
159
+ const targetValue = isField ? allData[comparison.field] : comparison.value;
160
+ const targetLabel = isField ? comparison.field : String(comparison.value);
161
+ // Skip if comparing to field and that field is empty
162
+ if (isField && (targetValue === null || targetValue === undefined || targetValue === ''))
163
+ continue;
164
+ let isValid = true;
165
+ const { operator, message } = comparison;
166
+ switch (fieldType) {
167
+ case 'date': {
168
+ const thisDate = new Date(String(value));
169
+ const otherDate = new Date(String(targetValue));
170
+ if (isNaN(thisDate.getTime()) || isNaN(otherDate.getTime()))
171
+ continue;
172
+ isValid = (0, exports.compareValues)(thisDate.getTime(), otherDate.getTime(), operator);
173
+ break;
174
+ }
175
+ case 'number': {
176
+ const thisNum = typeof value === 'number' ? value : parseFloat(String(value));
177
+ const otherNum = typeof targetValue === 'number' ? targetValue : parseFloat(String(targetValue));
178
+ if (isNaN(thisNum) || isNaN(otherNum))
179
+ continue;
180
+ isValid = (0, exports.compareValues)(thisNum, otherNum, operator);
181
+ break;
182
+ }
183
+ case 'boolean': {
184
+ const thisBool = typeof value === 'boolean' ? value : value === 'true';
185
+ const otherBool = typeof targetValue === 'boolean' ? targetValue : targetValue === 'true';
186
+ isValid = operator === '==' ? thisBool === otherBool :
187
+ operator === '!=' ? thisBool !== otherBool : true;
188
+ break;
189
+ }
190
+ default: {
191
+ isValid = (0, exports.compareValues)(String(value), String(targetValue), operator);
192
+ break;
193
+ }
194
+ }
195
+ if (!isValid) {
196
+ errors.push({
197
+ field: fieldKey,
198
+ message: message || `Must be ${(0, exports.getOperatorText)(operator)} ${targetLabel}`,
199
+ rule: `comparison:${operator}:${targetLabel}`,
200
+ });
201
+ }
202
+ }
203
+ return errors;
204
+ };
205
+ exports.validateFieldComparisons = validateFieldComparisons;
206
+ // ============================================================================
207
+ // Full Data Validation
208
+ // ============================================================================
209
+ /**
210
+ * Validate all fields in a data object against their definitions.
211
+ * Runs both single-field and comparison validations.
212
+ *
213
+ * @param data - The data object to validate
214
+ * @param definitions - Field definitions with validation rules
215
+ * @returns Array of all validation errors
216
+ */
217
+ const validateAllFields = (data, definitions) => {
218
+ const errors = [];
219
+ const definitionMap = new Map(definitions.map(d => [d.key, d]));
220
+ for (const [key, value] of Object.entries(data)) {
221
+ const def = definitionMap.get(key);
222
+ if (!def)
223
+ continue;
224
+ // Single-field validation
225
+ const error = (0, exports.validateFieldValue)(value, def.validation, def.fieldType);
226
+ if (error) {
227
+ errors.push({ ...error, field: key });
228
+ }
229
+ // Comparison validation
230
+ if (def.validation?.comparisons) {
231
+ const comparisonErrors = (0, exports.validateFieldComparisons)(key, value, def.validation.comparisons, data, def.fieldType);
232
+ errors.push(...comparisonErrors);
233
+ }
234
+ }
235
+ return errors;
236
+ };
237
+ exports.validateAllFields = validateAllFields;
238
+ //# sourceMappingURL=field-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-validation.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/field-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './validation.types';
2
+ export * from './validators';
3
+ export * from './field-validation';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Types
18
+ __exportStar(require("./validation.types"), exports);
19
+ // Standalone validators
20
+ __exportStar(require("./validators"), exports);
21
+ // Field validation functions (also re-exports types and validators)
22
+ __exportStar(require("./field-validation"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,qDAAmC;AAEnC,wBAAwB;AACxB,+CAA6B;AAE7B,oEAAoE;AACpE,qDAAmC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Validation Types
3
+ * Shared type definitions for field validation.
4
+ */
5
+ export type ComparisonOperator = '<' | '<=' | '>' | '>=' | '==' | '!=';
6
+ /**
7
+ * Compare to another field by key.
8
+ * Example: { field: 'checkOutDate', operator: '<' } // thisField < checkOutDate
9
+ */
10
+ export interface FieldComparisonToField {
11
+ field: string;
12
+ operator: ComparisonOperator;
13
+ message?: string;
14
+ }
15
+ /**
16
+ * Compare to a literal value.
17
+ * Example: { value: 18, operator: '>=' } // thisField >= 18
18
+ */
19
+ export interface FieldComparisonToValue {
20
+ value: number | boolean | string;
21
+ operator: ComparisonOperator;
22
+ message?: string;
23
+ }
24
+ /** Discriminated union - compare to field OR value, never both */
25
+ export type FieldComparison = FieldComparisonToField | FieldComparisonToValue;
26
+ export interface FieldValidationRules {
27
+ required?: boolean;
28
+ minLength?: number;
29
+ maxLength?: number;
30
+ min?: number;
31
+ max?: number;
32
+ pattern?: string;
33
+ patternMessage?: string;
34
+ /** Minimum date - supports 'now' for dynamic current date comparison */
35
+ minDate?: string;
36
+ /** Maximum date - supports 'now' for dynamic current date comparison */
37
+ maxDate?: string;
38
+ /** Cross-field / literal comparison rules */
39
+ comparisons?: FieldComparison[];
40
+ }
41
+ export type FieldType = 'text' | 'number' | 'date' | 'select' | 'boolean' | 'url' | 'email';
42
+ export interface FieldValidationError {
43
+ field: string;
44
+ message: string;
45
+ rule: string;
46
+ }
47
+ export interface FieldDefinition {
48
+ key: string;
49
+ fieldType: FieldType;
50
+ label: string;
51
+ validation?: FieldValidationRules | null;
52
+ }
53
+ export declare const operatorText: Record<ComparisonOperator, string>;
54
+ //# sourceMappingURL=validation.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/validation.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,sBAAsB,CAAC;AAM9E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAM5F,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC1C;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAO3D,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * Validation Types
4
+ * Shared type definitions for field validation.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.operatorText = void 0;
8
+ // ============================================================================
9
+ // Operator Text Mapping
10
+ // ============================================================================
11
+ exports.operatorText = {
12
+ '<': 'less than',
13
+ '<=': 'less than or equal to',
14
+ '>': 'greater than',
15
+ '>=': 'greater than or equal to',
16
+ '==': 'equal to',
17
+ '!=': 'not equal to',
18
+ };
19
+ //# sourceMappingURL=validation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.types.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/validation.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAElE,QAAA,YAAY,GAAuC;IAC9D,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,uBAAuB;IAC7B,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,cAAc;CACrB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Standalone Validators
3
+ * Pure validation functions that can be used independently.
4
+ * Shared between backend and frontend.
5
+ */
6
+ /** RFC-compliant email regex */
7
+ export declare const EMAIL_REGEX: RegExp;
8
+ export declare const EMAIL_MAX_LENGTH = 254;
9
+ /** Basic URL pattern - http(s) with domain */
10
+ export declare const URL_REGEX: RegExp;
11
+ /** Ethereum address format: 0x followed by 40 hexadecimal characters */
12
+ export declare const WALLET_ADDRESS_REGEX: RegExp;
13
+ /** UUID v4 format */
14
+ export declare const UUID_REGEX: RegExp;
15
+ /**
16
+ * Validates email format according to RFC standards.
17
+ * RFC 5321 length limit (254 characters) enforced.
18
+ */
19
+ export declare function isValidEmail(email: string): boolean;
20
+ /**
21
+ * Validates URL format (http/https only).
22
+ */
23
+ export declare function isValidUrl(url: string): boolean;
24
+ /**
25
+ * Validates Ethereum wallet address format.
26
+ * Format: 0x followed by 40 hexadecimal characters.
27
+ */
28
+ export declare function isValidWalletAddress(address: string): boolean;
29
+ /**
30
+ * Validates that a string is not empty and meets minimum length.
31
+ */
32
+ export declare function isValidNonEmptyString(value: string, minLength?: number): boolean;
33
+ /**
34
+ * Validates UUID v4 format.
35
+ */
36
+ export declare function isValidUuid(uuid: string): boolean;
37
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,gCAAgC;AAChC,eAAO,MAAM,WAAW,QAA+B,CAAC;AACxD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,8CAA8C;AAC9C,eAAO,MAAM,SAAS,QAAoC,CAAC;AAE3D,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,QAAwB,CAAC;AAE1D,qBAAqB;AACrB,eAAO,MAAM,UAAU,QAA2E,CAAC;AAMnG;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * Standalone Validators
4
+ * Pure validation functions that can be used independently.
5
+ * Shared between backend and frontend.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.UUID_REGEX = exports.WALLET_ADDRESS_REGEX = exports.URL_REGEX = exports.EMAIL_MAX_LENGTH = exports.EMAIL_REGEX = void 0;
9
+ exports.isValidEmail = isValidEmail;
10
+ exports.isValidUrl = isValidUrl;
11
+ exports.isValidWalletAddress = isValidWalletAddress;
12
+ exports.isValidNonEmptyString = isValidNonEmptyString;
13
+ exports.isValidUuid = isValidUuid;
14
+ // ============================================================================
15
+ // Regex Patterns
16
+ // ============================================================================
17
+ /** RFC-compliant email regex */
18
+ exports.EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
19
+ exports.EMAIL_MAX_LENGTH = 254; // RFC 5321
20
+ /** Basic URL pattern - http(s) with domain */
21
+ exports.URL_REGEX = /^https?:\/\/[^\s/$.?#].[^\s]*$/i;
22
+ /** Ethereum address format: 0x followed by 40 hexadecimal characters */
23
+ exports.WALLET_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
24
+ /** UUID v4 format */
25
+ exports.UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
26
+ // ============================================================================
27
+ // Validators
28
+ // ============================================================================
29
+ /**
30
+ * Validates email format according to RFC standards.
31
+ * RFC 5321 length limit (254 characters) enforced.
32
+ */
33
+ function isValidEmail(email) {
34
+ if (!email || email.length > exports.EMAIL_MAX_LENGTH)
35
+ return false;
36
+ return exports.EMAIL_REGEX.test(email);
37
+ }
38
+ /**
39
+ * Validates URL format (http/https only).
40
+ */
41
+ function isValidUrl(url) {
42
+ if (!url)
43
+ return false;
44
+ return exports.URL_REGEX.test(url);
45
+ }
46
+ /**
47
+ * Validates Ethereum wallet address format.
48
+ * Format: 0x followed by 40 hexadecimal characters.
49
+ */
50
+ function isValidWalletAddress(address) {
51
+ if (!address)
52
+ return false;
53
+ return exports.WALLET_ADDRESS_REGEX.test(address);
54
+ }
55
+ /**
56
+ * Validates that a string is not empty and meets minimum length.
57
+ */
58
+ function isValidNonEmptyString(value, minLength = 1) {
59
+ return typeof value === 'string' && value.trim().length >= minLength;
60
+ }
61
+ /**
62
+ * Validates UUID v4 format.
63
+ */
64
+ function isValidUuid(uuid) {
65
+ if (!uuid)
66
+ return false;
67
+ return exports.UUID_REGEX.test(uuid);
68
+ }
69
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/validators.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA2BH,oCAGC;AAKD,gCAGC;AAMD,oDAGC;AAKD,sDAEC;AAKD,kCAGC;AA5DD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,gCAAgC;AACnB,QAAA,WAAW,GAAG,4BAA4B,CAAC;AAC3C,QAAA,gBAAgB,GAAG,GAAG,CAAC,CAAC,WAAW;AAEhD,8CAA8C;AACjC,QAAA,SAAS,GAAG,iCAAiC,CAAC;AAE3D,wEAAwE;AAC3D,QAAA,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,qBAAqB;AACR,QAAA,UAAU,GAAG,wEAAwE,CAAC;AAEnG,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,wBAAgB;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,mBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,iBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAAe;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,4BAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,KAAa,EAAE,YAAoB,CAAC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,kBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
@@ -7,6 +7,7 @@ export type * from './shared-lib/interfaces';
7
7
  export { isServerMessage, isEventMessage, isConnectedMessage, isSubscribedMessage, isUnsubscribedMessage, isErrorMessage, isPingMessage } from './shared-lib/interfaces/ws-relay.types';
8
8
  export type * from './shared-lib/dto';
9
9
  export * from './shared-lib/types';
10
+ export * from './shared-lib/constants';
10
11
  export * from '@explorins/web3-types';
11
12
  export type * from './shared-lib/errors';
12
13
  export { CommonErrorCodes } from './shared-lib/errors/error-codes';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,mBAAmB,yBAAyB,CAAC;AAG7C,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAGhD,mBAAmB,kBAAkB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,uBAAuB,CAAC;AAGtC,mBAAmB,qBAAqB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,mBAAmB,yBAAyB,CAAC;AAG7C,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAGhD,mBAAmB,kBAAkB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,uBAAuB,CAAC;AAGtC,mBAAmB,qBAAqB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -8,6 +8,8 @@ export * from './shared-lib/enum/index.js';
8
8
  export { isServerMessage, isEventMessage, isConnectedMessage, isSubscribedMessage, isUnsubscribedMessage, isErrorMessage, isPingMessage } from './shared-lib/interfaces/ws-relay.types.js';
9
9
  // Export types and constants (runtime exports) - browser-safe only
10
10
  export * from './shared-lib/types/index.js';
11
+ // Export constants (runtime exports) - browser-safe utilities like buildImageCdnUrl
12
+ export * from './shared-lib/constants/index.js';
11
13
  // Re-export web3 types for convenience
12
14
  export * from '@explorins/web3-types';
13
15
  export { CommonErrorCodes } from './shared-lib/errors/error-codes.js';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gEAAgE;AAChE,cAAc,mBAAmB,CAAC;AAKlC,kDAAkD;AAClD,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAKhD,mEAAmE;AACnE,cAAc,oBAAoB,CAAC;AAEnC,uCAAuC;AACvC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,0FAA0F"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gEAAgE;AAChE,cAAc,mBAAmB,CAAC;AAKlC,kDAAkD;AAClD,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAKhD,mEAAmE;AACnE,cAAc,oBAAoB,CAAC;AAEnC,oFAAoF;AACpF,cAAc,wBAAwB,CAAC;AAEvC,uCAAuC;AACvC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,0FAA0F"}
@@ -2,6 +2,7 @@ export * from './shared-lib/enum';
2
2
  export * from './shared-lib/interfaces';
3
3
  export * from './shared-lib/types';
4
4
  export * from './shared-lib/constants';
5
+ export * from './shared-lib/validation';
5
6
  export type * from './shared-lib/dto';
6
7
  export * from '@explorins/web3-types';
7
8
  export type * from './shared-lib/errors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,mBAAmB,kBAAkB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AAGtC,mBAAmB,qBAAqB,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,mBAAmB,kBAAkB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AAGtC,mBAAmB,qBAAqB,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -5,6 +5,7 @@ export * from './shared-lib/enum/index.js';
5
5
  export * from './shared-lib/interfaces/index.js';
6
6
  export * from './shared-lib/types/index.js';
7
7
  export * from './shared-lib/constants/index.js';
8
+ export * from './shared-lib/validation/index.js';
8
9
  // Re-export web3 types for convenience
9
10
  export * from '@explorins/web3-types';
10
11
  export { ErrorCategory } from './shared-lib/errors/base/error-classification-enums.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8FAA8F;AAE9F,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAGvC,uCAAuC;AACvC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAwB,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAA0C,MAAM,iCAAiC,CAAC;AAEzH,4CAA4C;AAC5C,2CAA2C;AAC3C,iFAAiF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8FAA8F;AAE9F,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAGxC,uCAAuC;AACvC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAwB,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAA0C,MAAM,iCAAiC,CAAC;AAEzH,4CAA4C;AAC5C,2CAA2C;AAC3C,iFAAiF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generation-log.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-generation-log.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAK7B,EAAE,EAAG,MAAM,CAAC;IAMZ,QAAQ,EAAG,MAAM,CAAC;IAMlB,MAAM,CAAC,EAAE,MAAM,CAAC;IAOhB,aAAa,EAAG,eAAe,CAAC;IAOhC,kBAAkB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAMjD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMjC,KAAK,EAAG,MAAM,CAAC;IAMf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAM3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAM9B,WAAW,EAAG,MAAM,CAAC;IAMrB,YAAY,EAAG,MAAM,CAAC;IAMtB,WAAW,EAAG,MAAM,CAAC;IAMrB,gBAAgB,EAAG,MAAM,CAAC;IAM1B,cAAc,EAAG,MAAM,CAAC;IAMxB,OAAO,EAAG,OAAO,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAM1C,SAAS,EAAG,IAAI,CAAC;IAMjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"ai-generation-log.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-generation-log.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAK7B,EAAE,EAAG,MAAM,CAAC;IAMZ,QAAQ,EAAG,MAAM,CAAC;IAMlB,MAAM,CAAC,EAAE,MAAM,CAAC;IAOhB,aAAa,EAAG,eAAe,CAAC;IAOhC,kBAAkB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAMjD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMjC,KAAK,EAAG,MAAM,CAAC;IAMf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAM3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAM9B,WAAW,EAAG,MAAM,CAAC;IAMrB,YAAY,EAAG,MAAM,CAAC;IAMtB,WAAW,EAAG,MAAM,CAAC;IAMrB,gBAAgB,EAAG,MAAM,CAAC;IAM1B,cAAc,EAAG,MAAM,CAAC;IAMxB,OAAO,EAAG,OAAO,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAO1C,SAAS,EAAG,IAAI,CAAC;IAOjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
@@ -146,12 +146,14 @@ __decorate([
146
146
  __decorate([
147
147
  ApiProperty({
148
148
  description: 'Creation timestamp',
149
+ type: Date,
149
150
  example: '2026-03-12T10:30:00Z'
150
151
  })
151
152
  ], AiGenerationLogDTO.prototype, "createdAt", void 0);
152
153
  __decorate([
153
154
  ApiProperty({
154
155
  description: 'Last update timestamp',
156
+ type: Date,
155
157
  example: '2026-03-12T10:30:00Z'
156
158
  })
157
159
  ], AiGenerationLogDTO.prototype, "updatedAt", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generation-log.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-generation-log.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-generation-log.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-generation-log.dto.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { ProcessRecordStatus, SortOrder } from '../../enum';
3
3
  import { AnalyticsGroupByType, AnalyticsMetricType, AnalyticsResultItem } from '../../types/analytics.type';
4
4
  import { GroupByExpressionDTO } from '../analytics/group-by-expression.dto';
5
5
  import { BaseAnalyticsMetadata } from '../analytics/base-analytics.dto';
6
- declare const RedemptionRedeemAnalyticsFiltersDTO_base: import("@nestjs/common").Type<Partial<Omit<RedemptionRedeemDTO, "userId" | "id" | "createdAt" | "message" | "updatedAt" | "included" | "redemptionId">>>;
6
+ declare const RedemptionRedeemAnalyticsFiltersDTO_base: import("@nestjs/common").Type<Partial<Omit<RedemptionRedeemDTO, "userId" | "id" | "message" | "createdAt" | "updatedAt" | "included" | "redemptionId">>>;
7
7
  /**
8
8
  * Flexible filters for redemption redeem analytics
9
9
  * Auto-derived from RedemptionRedeemDTO (excludes nested objects and fields we override)
@@ -1 +1 @@
1
- {"version":3,"file":"api-key.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/api-key/api-key.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;GAGG;AACH,qBAAa,SAAS;IAMpB,EAAE,EAAG,MAAM,CAAC;IAQZ,IAAI,EAAG,UAAU,CAAC;IASlB,IAAI,EAAG,MAAM,GAAG,IAAI,CAAC;IAOrB,SAAS,EAAG,IAAI,CAAC;IAQjB,mBAAmB,EAAG,MAAM,CAAC;IAS7B,SAAS,EAAG,IAAI,GAAG,IAAI,CAAC;IAMxB,SAAS,EAAG,OAAO,CAAC;IASpB,UAAU,EAAG,IAAI,GAAG,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;IAM7C,UAAU,EAAG,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"api-key.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/api-key/api-key.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;GAGG;AACH,qBAAa,SAAS;IAMpB,EAAE,EAAG,MAAM,CAAC;IAQZ,IAAI,EAAG,UAAU,CAAC;IASlB,IAAI,EAAG,MAAM,GAAG,IAAI,CAAC;IAQrB,SAAS,EAAG,IAAI,CAAC;IAQjB,mBAAmB,EAAG,MAAM,CAAC;IAS7B,SAAS,EAAG,IAAI,GAAG,IAAI,CAAC;IAMxB,SAAS,EAAG,OAAO,CAAC;IASpB,UAAU,EAAG,IAAI,GAAG,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;IAM7C,UAAU,EAAG,MAAM,CAAC;CACrB"}
@@ -48,6 +48,7 @@ __decorate([
48
48
  __decorate([
49
49
  ApiProperty({
50
50
  description: 'Creation timestamp',
51
+ type: Date,
51
52
  example: '2025-11-22T10:30:00.000Z'
52
53
  }),
53
54
  IsDateString()