@wisemen/datewise 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -240,6 +240,80 @@ class CreateEventDto {
240
240
  }
241
241
  ```
242
242
 
243
+ ### Timestamp Validation with Comparisons
244
+
245
+ The `@IsTimestamp()` decorator supports additional validation options to compare timestamps:
246
+
247
+ ```typescript
248
+ class BookingDto {
249
+ @IsTimestamp()
250
+ checkInTime: string
251
+
252
+ // Validate that checkOutTime is after checkInTime
253
+ @IsTimestamp({
254
+ isAfter: (dto) => (dto as BookingDto).checkInTime
255
+ })
256
+ checkOutTime: string
257
+ }
258
+
259
+ class ScheduleDto {
260
+ @IsTimestamp()
261
+ deadline: string
262
+
263
+ // Validate that submissionTime is before deadline
264
+ @IsTimestamp({
265
+ isBefore: (dto) => (dto as ScheduleDto).deadline
266
+ })
267
+ submissionTime: string
268
+ }
269
+
270
+ class TimeRangeDto {
271
+ @IsTimestamp()
272
+ minTime: string
273
+
274
+ // Validate that time is same or after minTime
275
+ @IsTimestamp({
276
+ isSameOrAfter: (dto) => (dto as TimeRangeDto).minTime
277
+ })
278
+ time: string
279
+ }
280
+
281
+ class AppointmentDto {
282
+ @IsTimestamp()
283
+ maxTime: string
284
+
285
+ // Validate that appointmentTime is same or before maxTime
286
+ @IsTimestamp({
287
+ isSameOrBefore: (dto) => (dto as AppointmentDto).maxTime
288
+ })
289
+ appointmentTime: string
290
+ }
291
+
292
+ // Multiple constraints can be combined
293
+ class EventDto {
294
+ @IsTimestamp()
295
+ startTime: string
296
+
297
+ @IsTimestamp()
298
+ endTime: string
299
+
300
+ // Validate that eventTime is after startTime AND before endTime
301
+ @IsTimestamp({
302
+ isAfter: (dto) => (dto as EventDto).startTime,
303
+ isBefore: (dto) => (dto as EventDto).endTime
304
+ })
305
+ eventTime: string
306
+ }
307
+ ```
308
+
309
+ Available comparison options:
310
+ - `isAfter`: Validates the timestamp is strictly after the comparison value
311
+ - `isBefore`: Validates the timestamp is strictly before the comparison value
312
+ - `isSameOrAfter`: Validates the timestamp is the same as or after the comparison value
313
+ - `isSameOrBefore`: Validates the timestamp is the same as or before the comparison value
314
+
315
+ Note: If the comparison callback returns `null` or `undefined`, the comparison validation is skipped.
316
+
243
317
  ## NestJS Integration
244
318
 
245
319
  ```typescript
@@ -19,12 +19,16 @@ export class DateTimeRangeDto extends FilterQuery {
19
19
  }
20
20
  __decorate([
21
21
  TimestampApiProperty({ description: 'start of the range, inclusive' }),
22
- IsTimestamp(),
22
+ IsTimestamp({
23
+ isBefore: (dto) => dto.until
24
+ }),
23
25
  __metadata("design:type", String)
24
26
  ], DateTimeRangeDto.prototype, "from", void 0);
25
27
  __decorate([
26
28
  TimestampApiProperty({ description: 'end of the range, exclusive' }),
27
- IsTimestamp(),
29
+ IsTimestamp({
30
+ isAfter: (dto) => dto.from
31
+ }),
28
32
  __metadata("design:type", String)
29
33
  ], DateTimeRangeDto.prototype, "until", void 0);
30
34
  //# sourceMappingURL=date-time-range.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-range.command.js","sourceRoot":"","sources":["../../lib/date-time-range/date-time-range.command.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAG/C,IAAI,CAAQ;IAIZ,KAAK,CAAQ;IAEb,KAAK;QACH,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;CACF;AATC;IAFC,oBAAoB,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACtE,WAAW,EAAE;;8CACF;AAIZ;IAFC,oBAAoB,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IACpE,WAAW,EAAE;;+CACD"}
1
+ {"version":3,"file":"date-time-range.command.js","sourceRoot":"","sources":["../../lib/date-time-range/date-time-range.command.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAK/C,IAAI,CAAQ;IAMZ,KAAK,CAAQ;IAEb,KAAK;QACH,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;CACF;AAXC;IAJC,oBAAoB,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACtE,WAAW,CAAC;QACX,QAAQ,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;KAC/C,CAAC;;8CACU;AAMZ;IAJC,oBAAoB,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IACpE,WAAW,CAAC;QACX,OAAO,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;KAC7C,CAAC;;+CACW"}
@@ -1,7 +1,13 @@
1
1
  import type { ValidatorConstraintInterface, ValidationArguments, ValidationOptions } from 'class-validator';
2
+ export interface IsTimestampValidationOptions extends ValidationOptions {
3
+ isAfter?: (dto: object) => string | null | undefined;
4
+ isBefore?: (dto: object) => string | null | undefined;
5
+ isSameOrAfter?: (dto: object) => string | null | undefined;
6
+ isSameOrBefore?: (dto: object) => string | null | undefined;
7
+ }
2
8
  /** Validate that the value is a string of format YYYY-MM-DD or (+-)infinity */
3
- export declare function IsTimestamp(validationOptions?: ValidationOptions): PropertyDecorator;
9
+ export declare function IsTimestamp(validationOptions?: IsTimestampValidationOptions): PropertyDecorator;
4
10
  export declare class IsTimestampValidator implements ValidatorConstraintInterface {
5
- validate(dateValue: unknown): boolean;
11
+ validate(dateValue: unknown, args: ValidationArguments): boolean;
6
12
  defaultMessage(args: ValidationArguments): string;
7
13
  }
@@ -8,15 +8,60 @@ import { Validate, ValidatorConstraint } from 'class-validator';
8
8
  import { timestamp } from '../index.js';
9
9
  /** Validate that the value is a string of format YYYY-MM-DD or (+-)infinity */
10
10
  export function IsTimestamp(validationOptions) {
11
- return Validate(IsTimestampValidator, [], validationOptions);
11
+ return Validate(IsTimestampValidator, [{
12
+ isAfter: validationOptions?.isAfter,
13
+ isBefore: validationOptions?.isBefore,
14
+ isSameOrAfter: validationOptions?.isSameOrAfter,
15
+ isSameOrBefore: validationOptions?.isSameOrBefore
16
+ }], validationOptions);
12
17
  }
13
18
  let IsTimestampValidator = class IsTimestampValidator {
14
- validate(dateValue) {
19
+ validate(dateValue, args) {
15
20
  if (typeof dateValue !== 'string') {
16
21
  return false;
17
22
  }
18
23
  try {
19
- timestamp(dateValue);
24
+ const currentTimestamp = timestamp(dateValue);
25
+ if (!currentTimestamp.isValid()) {
26
+ return false;
27
+ }
28
+ const constraints = args.constraints[0];
29
+ if (constraints.isAfter != null) {
30
+ const compareValue = constraints.isAfter(args.object);
31
+ if (compareValue != null) {
32
+ const compareTimestamp = timestamp(compareValue);
33
+ if (!currentTimestamp.isAfter(compareTimestamp)) {
34
+ return false;
35
+ }
36
+ }
37
+ }
38
+ if (constraints.isBefore != null) {
39
+ const compareValue = constraints.isBefore(args.object);
40
+ if (compareValue != null) {
41
+ const compareTimestamp = timestamp(compareValue);
42
+ if (!currentTimestamp.isBefore(compareTimestamp)) {
43
+ return false;
44
+ }
45
+ }
46
+ }
47
+ if (constraints.isSameOrAfter != null) {
48
+ const compareValue = constraints.isSameOrAfter(args.object);
49
+ if (compareValue != null) {
50
+ const compareTimestamp = timestamp(compareValue);
51
+ if (!currentTimestamp.isSameOrAfter(compareTimestamp)) {
52
+ return false;
53
+ }
54
+ }
55
+ }
56
+ if (constraints.isSameOrBefore != null) {
57
+ const compareValue = constraints.isSameOrBefore(args.object);
58
+ if (compareValue != null) {
59
+ const compareTimestamp = timestamp(compareValue);
60
+ if (!currentTimestamp.isSameOrBefore(compareTimestamp)) {
61
+ return false;
62
+ }
63
+ }
64
+ }
20
65
  return true;
21
66
  }
22
67
  catch {
@@ -24,6 +69,31 @@ let IsTimestampValidator = class IsTimestampValidator {
24
69
  }
25
70
  }
26
71
  defaultMessage(args) {
72
+ const constraints = args.constraints[0];
73
+ if (constraints.isAfter != null) {
74
+ const compareValue = constraints.isAfter(args.object);
75
+ if (compareValue != null) {
76
+ return `${args.property} must be after ${compareValue}`;
77
+ }
78
+ }
79
+ if (constraints.isBefore != null) {
80
+ const compareValue = constraints.isBefore(args.object);
81
+ if (compareValue != null) {
82
+ return `${args.property} must be before ${compareValue}`;
83
+ }
84
+ }
85
+ if (constraints.isSameOrAfter != null) {
86
+ const compareValue = constraints.isSameOrAfter(args.object);
87
+ if (compareValue != null) {
88
+ return `${args.property} must be same or after ${compareValue}`;
89
+ }
90
+ }
91
+ if (constraints.isSameOrBefore != null) {
92
+ const compareValue = constraints.isSameOrBefore(args.object);
93
+ if (compareValue != null) {
94
+ return `${args.property} must be same or before ${compareValue}`;
95
+ }
96
+ }
27
97
  return `${args.property} must be a ISO8601 string, infinity, +infinity or -infinity'`;
28
98
  }
29
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"is-timestamp.validator.js","sourceRoot":"","sources":["../../../lib/timestamp/validators/is-timestamp.validator.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAE,iBAAqC;IAChE,OAAO,QAAQ,CAAC,oBAAoB,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC9D,CAAC;AAGM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,QAAQ,CAAE,SAAkB;QAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC;YACH,SAAS,CAAC,SAAS,CAAC,CAAA;YAEpB,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,cAAc,CAAE,IAAyB;QACvC,OAAO,GAAG,IAAI,CAAC,QAAQ,8DAA8D,CAAA;IACvF,CAAC;CACF,CAAA;AAlBY,oBAAoB;IADhC,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;GAC9C,oBAAoB,CAkBhC"}
1
+ {"version":3,"file":"is-timestamp.validator.js","sourceRoot":"","sources":["../../../lib/timestamp/validators/is-timestamp.validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { describe, before, it } from 'node:test';
11
+ import { expect } from 'expect';
12
+ import { validate } from 'class-validator';
13
+ import { initDayjs } from '../../common/init-dayjs.js';
14
+ import { IsTimestamp } from './is-timestamp.validator.js';
15
+ describe('IsTimestamp', () => {
16
+ before(() => initDayjs());
17
+ describe('basic validation', () => {
18
+ class TestDto {
19
+ timestamp;
20
+ }
21
+ __decorate([
22
+ IsTimestamp(),
23
+ __metadata("design:type", String)
24
+ ], TestDto.prototype, "timestamp", void 0);
25
+ it('should validate a valid ISO8601 timestamp', async () => {
26
+ const dto = new TestDto();
27
+ dto.timestamp = '2025-01-15T10:30:00Z';
28
+ const errors = await validate(dto);
29
+ expect(errors).toHaveLength(0);
30
+ });
31
+ it('should validate infinity', async () => {
32
+ const dto = new TestDto();
33
+ dto.timestamp = 'infinity';
34
+ const errors = await validate(dto);
35
+ expect(errors).toHaveLength(0);
36
+ });
37
+ it('should validate +infinity', async () => {
38
+ const dto = new TestDto();
39
+ dto.timestamp = '+infinity';
40
+ const errors = await validate(dto);
41
+ expect(errors).toHaveLength(0);
42
+ });
43
+ it('should validate -infinity', async () => {
44
+ const dto = new TestDto();
45
+ dto.timestamp = '-infinity';
46
+ const errors = await validate(dto);
47
+ expect(errors).toHaveLength(0);
48
+ });
49
+ it('should fail for invalid timestamp string', async () => {
50
+ const dto = new TestDto();
51
+ dto.timestamp = 'not-a-timestamp';
52
+ const errors = await validate(dto);
53
+ expect(errors).toHaveLength(1);
54
+ expect(errors[0].property).toBe('timestamp');
55
+ });
56
+ it('should fail for non-string values', async () => {
57
+ const dto = new TestDto();
58
+ dto.timestamp = 12345;
59
+ const errors = await validate(dto);
60
+ expect(errors).toHaveLength(1);
61
+ });
62
+ });
63
+ describe('isAfter validation', () => {
64
+ class TestDto {
65
+ startTime;
66
+ endTime;
67
+ }
68
+ __decorate([
69
+ IsTimestamp(),
70
+ __metadata("design:type", String)
71
+ ], TestDto.prototype, "startTime", void 0);
72
+ __decorate([
73
+ IsTimestamp({ isAfter: (dto) => dto.startTime }),
74
+ __metadata("design:type", String)
75
+ ], TestDto.prototype, "endTime", void 0);
76
+ it('should pass when endTime is after startTime', async () => {
77
+ const dto = new TestDto();
78
+ dto.startTime = '2025-01-15T10:00:00Z';
79
+ dto.endTime = '2025-01-15T11:00:00Z';
80
+ const errors = await validate(dto);
81
+ expect(errors).toHaveLength(0);
82
+ });
83
+ it('should fail when endTime is before startTime', async () => {
84
+ const dto = new TestDto();
85
+ dto.startTime = '2025-01-15T11:00:00Z';
86
+ dto.endTime = '2025-01-15T10:00:00Z';
87
+ const errors = await validate(dto);
88
+ expect(errors.length).toBeGreaterThan(0);
89
+ const endTimeError = errors.find(e => e.property === 'endTime');
90
+ expect(endTimeError).toBeDefined();
91
+ expect(endTimeError?.constraints?.isTimestamp).toContain('must be after');
92
+ });
93
+ it('should fail when endTime equals startTime', async () => {
94
+ const dto = new TestDto();
95
+ dto.startTime = '2025-01-15T10:00:00Z';
96
+ dto.endTime = '2025-01-15T10:00:00Z';
97
+ const errors = await validate(dto);
98
+ const endTimeError = errors.find(e => e.property === 'endTime');
99
+ expect(endTimeError).toBeDefined();
100
+ });
101
+ it('should pass when comparison value is null', async () => {
102
+ const dto = new TestDto();
103
+ dto.startTime = null;
104
+ dto.endTime = '2025-01-15T10:00:00Z';
105
+ const errors = await validate(dto);
106
+ const endTimeError = errors.find(e => e.property === 'endTime');
107
+ expect(endTimeError).toBeUndefined();
108
+ });
109
+ });
110
+ describe('isBefore validation', () => {
111
+ class TestDto {
112
+ submissionTime;
113
+ deadline;
114
+ }
115
+ __decorate([
116
+ IsTimestamp({ isBefore: (dto) => dto.deadline }),
117
+ __metadata("design:type", String)
118
+ ], TestDto.prototype, "submissionTime", void 0);
119
+ __decorate([
120
+ IsTimestamp(),
121
+ __metadata("design:type", String)
122
+ ], TestDto.prototype, "deadline", void 0);
123
+ it('should pass when submissionTime is before deadline', async () => {
124
+ const dto = new TestDto();
125
+ dto.submissionTime = '2025-01-15T10:00:00Z';
126
+ dto.deadline = '2025-01-15T11:00:00Z';
127
+ const errors = await validate(dto);
128
+ expect(errors).toHaveLength(0);
129
+ });
130
+ it('should fail when submissionTime is after deadline', async () => {
131
+ const dto = new TestDto();
132
+ dto.submissionTime = '2025-01-15T11:00:00Z';
133
+ dto.deadline = '2025-01-15T10:00:00Z';
134
+ const errors = await validate(dto);
135
+ const submissionError = errors.find(e => e.property === 'submissionTime');
136
+ expect(submissionError).toBeDefined();
137
+ expect(submissionError?.constraints?.isTimestamp).toContain('must be before');
138
+ });
139
+ it('should fail when submissionTime equals deadline', async () => {
140
+ const dto = new TestDto();
141
+ dto.submissionTime = '2025-01-15T10:00:00Z';
142
+ dto.deadline = '2025-01-15T10:00:00Z';
143
+ const errors = await validate(dto);
144
+ const submissionError = errors.find(e => e.property === 'submissionTime');
145
+ expect(submissionError).toBeDefined();
146
+ });
147
+ it('should pass when comparison value is null', async () => {
148
+ const dto = new TestDto();
149
+ dto.submissionTime = '2025-01-15T10:00:00Z';
150
+ dto.deadline = null;
151
+ const errors = await validate(dto);
152
+ const submissionError = errors.find(e => e.property === 'submissionTime');
153
+ expect(submissionError).toBeUndefined();
154
+ });
155
+ });
156
+ describe('isSameOrAfter validation', () => {
157
+ class TestDto {
158
+ minTime;
159
+ actualTime;
160
+ }
161
+ __decorate([
162
+ IsTimestamp(),
163
+ __metadata("design:type", String)
164
+ ], TestDto.prototype, "minTime", void 0);
165
+ __decorate([
166
+ IsTimestamp({ isSameOrAfter: (dto) => dto.minTime }),
167
+ __metadata("design:type", String)
168
+ ], TestDto.prototype, "actualTime", void 0);
169
+ it('should pass when actualTime is after minTime', async () => {
170
+ const dto = new TestDto();
171
+ dto.minTime = '2025-01-15T10:00:00Z';
172
+ dto.actualTime = '2025-01-15T11:00:00Z';
173
+ const errors = await validate(dto);
174
+ expect(errors).toHaveLength(0);
175
+ });
176
+ it('should pass when actualTime equals minTime', async () => {
177
+ const dto = new TestDto();
178
+ dto.minTime = '2025-01-15T10:00:00Z';
179
+ dto.actualTime = '2025-01-15T10:00:00Z';
180
+ const errors = await validate(dto);
181
+ expect(errors).toHaveLength(0);
182
+ });
183
+ it('should fail when actualTime is before minTime', async () => {
184
+ const dto = new TestDto();
185
+ dto.minTime = '2025-01-15T11:00:00Z';
186
+ dto.actualTime = '2025-01-15T10:00:00Z';
187
+ const errors = await validate(dto);
188
+ const actualTimeError = errors.find(e => e.property === 'actualTime');
189
+ expect(actualTimeError).toBeDefined();
190
+ expect(actualTimeError?.constraints?.isTimestamp).toContain('must be same or after');
191
+ });
192
+ it('should pass when comparison value is null', async () => {
193
+ const dto = new TestDto();
194
+ dto.minTime = null;
195
+ dto.actualTime = '2025-01-15T10:00:00Z';
196
+ const errors = await validate(dto);
197
+ const actualTimeError = errors.find(e => e.property === 'actualTime');
198
+ expect(actualTimeError).toBeUndefined();
199
+ });
200
+ });
201
+ describe('isSameOrBefore validation', () => {
202
+ class TestDto {
203
+ actualTime;
204
+ maxTime;
205
+ }
206
+ __decorate([
207
+ IsTimestamp({ isSameOrBefore: (dto) => dto.maxTime }),
208
+ __metadata("design:type", String)
209
+ ], TestDto.prototype, "actualTime", void 0);
210
+ __decorate([
211
+ IsTimestamp(),
212
+ __metadata("design:type", String)
213
+ ], TestDto.prototype, "maxTime", void 0);
214
+ it('should pass when actualTime is before maxTime', async () => {
215
+ const dto = new TestDto();
216
+ dto.actualTime = '2025-01-15T10:00:00Z';
217
+ dto.maxTime = '2025-01-15T11:00:00Z';
218
+ const errors = await validate(dto);
219
+ expect(errors).toHaveLength(0);
220
+ });
221
+ it('should pass when actualTime equals maxTime', async () => {
222
+ const dto = new TestDto();
223
+ dto.actualTime = '2025-01-15T10:00:00Z';
224
+ dto.maxTime = '2025-01-15T10:00:00Z';
225
+ const errors = await validate(dto);
226
+ expect(errors).toHaveLength(0);
227
+ });
228
+ it('should fail when actualTime is after maxTime', async () => {
229
+ const dto = new TestDto();
230
+ dto.actualTime = '2025-01-15T11:00:00Z';
231
+ dto.maxTime = '2025-01-15T10:00:00Z';
232
+ const errors = await validate(dto);
233
+ const actualTimeError = errors.find(e => e.property === 'actualTime');
234
+ expect(actualTimeError).toBeDefined();
235
+ expect(actualTimeError?.constraints?.isTimestamp).toContain('must be same or before');
236
+ });
237
+ it('should pass when comparison value is null', async () => {
238
+ const dto = new TestDto();
239
+ dto.actualTime = '2025-01-15T10:00:00Z';
240
+ dto.maxTime = null;
241
+ const errors = await validate(dto);
242
+ const actualTimeError = errors.find(e => e.property === 'actualTime');
243
+ expect(actualTimeError).toBeUndefined();
244
+ });
245
+ });
246
+ describe('combined validations', () => {
247
+ class TestDto {
248
+ start;
249
+ middle;
250
+ end;
251
+ }
252
+ __decorate([
253
+ IsTimestamp(),
254
+ __metadata("design:type", String)
255
+ ], TestDto.prototype, "start", void 0);
256
+ __decorate([
257
+ IsTimestamp({
258
+ isAfter: (dto) => dto.start,
259
+ isBefore: (dto) => dto.end
260
+ }),
261
+ __metadata("design:type", String)
262
+ ], TestDto.prototype, "middle", void 0);
263
+ __decorate([
264
+ IsTimestamp(),
265
+ __metadata("design:type", String)
266
+ ], TestDto.prototype, "end", void 0);
267
+ it('should pass when middle is between start and end', async () => {
268
+ const dto = new TestDto();
269
+ dto.start = '2025-01-15T10:00:00Z';
270
+ dto.middle = '2025-01-15T11:00:00Z';
271
+ dto.end = '2025-01-15T12:00:00Z';
272
+ const errors = await validate(dto);
273
+ expect(errors).toHaveLength(0);
274
+ });
275
+ it('should fail when middle is before start', async () => {
276
+ const dto = new TestDto();
277
+ dto.start = '2025-01-15T11:00:00Z';
278
+ dto.middle = '2025-01-15T10:00:00Z';
279
+ dto.end = '2025-01-15T12:00:00Z';
280
+ const errors = await validate(dto);
281
+ const middleError = errors.find(e => e.property === 'middle');
282
+ expect(middleError).toBeDefined();
283
+ });
284
+ it('should fail when middle is after end', async () => {
285
+ const dto = new TestDto();
286
+ dto.start = '2025-01-15T10:00:00Z';
287
+ dto.middle = '2025-01-15T13:00:00Z';
288
+ dto.end = '2025-01-15T12:00:00Z';
289
+ const errors = await validate(dto);
290
+ const middleError = errors.find(e => e.property === 'middle');
291
+ expect(middleError).toBeDefined();
292
+ });
293
+ });
294
+ describe('infinity handling', () => {
295
+ class TestDto {
296
+ start;
297
+ end;
298
+ }
299
+ __decorate([
300
+ IsTimestamp(),
301
+ __metadata("design:type", String)
302
+ ], TestDto.prototype, "start", void 0);
303
+ __decorate([
304
+ IsTimestamp({ isAfter: (dto) => dto.start }),
305
+ __metadata("design:type", String)
306
+ ], TestDto.prototype, "end", void 0);
307
+ it('should handle infinity correctly', async () => {
308
+ const dto = new TestDto();
309
+ dto.start = '2025-01-15T10:00:00Z';
310
+ dto.end = 'infinity';
311
+ const errors = await validate(dto);
312
+ expect(errors).toHaveLength(0);
313
+ });
314
+ it('should handle -infinity correctly', async () => {
315
+ const dto = new TestDto();
316
+ dto.start = '-infinity';
317
+ dto.end = '2025-01-15T10:00:00Z';
318
+ const errors = await validate(dto);
319
+ expect(errors).toHaveLength(0);
320
+ });
321
+ it('should validate -infinity is before infinity', async () => {
322
+ const dto = new TestDto();
323
+ dto.start = '-infinity';
324
+ dto.end = 'infinity';
325
+ const errors = await validate(dto);
326
+ expect(errors).toHaveLength(0);
327
+ });
328
+ });
329
+ });
330
+ //# sourceMappingURL=is-timestamp.validator.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-timestamp.validator.unit.test.js","sourceRoot":"","sources":["../../../lib/timestamp/validators/is-timestamp.validator.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/datewise",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",