@globalart/ddd 1.0.16 → 1.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.
package/dist/index.d.ts CHANGED
@@ -153,6 +153,29 @@ declare abstract class ValueObject<T = any> {
153
153
  private isDomainPrimitive;
154
154
  }
155
155
  //#endregion
156
+ //#region src/filter/fields/boolean/boolean-field.type.d.ts
157
+ declare const booleanFieldValue: z.ZodNullable<z.ZodBoolean>;
158
+ type IBooleanFieldValue = z.infer<typeof booleanFieldValue>;
159
+ //#endregion
160
+ //#region src/filter/fields/boolean/boolean-field-value.d.ts
161
+ declare class BooleanFieldValue extends FieldValueBase<IBooleanFieldValue> {
162
+ constructor(value: IBooleanFieldValue);
163
+ accept(visitor: IFieldValueVisitor): void;
164
+ }
165
+ //#endregion
166
+ //#region src/filter/fields/boolean/boolean.filter.d.ts
167
+ declare const booleanFilterOperators: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
168
+ declare const booleanFilterValue: z.ZodNullable<z.ZodBoolean>;
169
+ declare const booleanFilter: z.ZodObject<{
170
+ type: z.ZodLiteral<"boolean">;
171
+ operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
172
+ value: z.ZodNullable<z.ZodBoolean>;
173
+ field: z.ZodString;
174
+ relation: z.ZodOptional<z.ZodString>;
175
+ }, z.core.$strip>;
176
+ type IBooleanFilter = z.infer<typeof booleanFilter>;
177
+ type IBooleanFilterOperator = z.infer<typeof booleanFilterOperators>;
178
+ //#endregion
156
179
  //#region src/filter/fields/number/number-field.type.d.ts
157
180
  declare const numberFieldValue: z.ZodUnion<[z.ZodNumber, z.ZodNull]>;
158
181
  type INumberFieldValue = z.infer<typeof numberFieldValue>;
@@ -178,6 +201,7 @@ interface IFieldValueVisitor {
178
201
  number(value: NumberFieldValue): void;
179
202
  string(value: StringFieldValue): void;
180
203
  date(value: DateFieldValue): void;
204
+ boolean(value: BooleanFieldValue): void;
181
205
  }
182
206
  //#endregion
183
207
  //#region src/filter/fields/date/date-field.type.d.ts
@@ -185,7 +209,7 @@ declare const dateFieldValue: z.ZodNullable<z.ZodDate>;
185
209
  type IDateFieldValue = z.infer<typeof dateFieldValue>;
186
210
  //#endregion
187
211
  //#region src/filter/fields/field.type.d.ts
188
- type UnpackedFieldValue = IStringFieldValue | INumberFieldValue | IDateFieldValue;
212
+ type UnpackedFieldValue = IStringFieldValue | INumberFieldValue | IDateFieldValue | IBooleanFieldValue;
189
213
  //#endregion
190
214
  //#region src/filter/fields/field-value.base.d.ts
191
215
  declare abstract class FieldValueBase<V extends UnpackedFieldValue> extends ValueObject<V> {
@@ -384,6 +408,12 @@ declare const filter: z.ZodDiscriminatedUnion<[z.ZodObject<{
384
408
  value: z.ZodUnion<[z.ZodNullable<z.ZodString>, z.ZodTuple<[z.ZodString, z.ZodString], null>]>;
385
409
  field: z.ZodString;
386
410
  relation: z.ZodOptional<z.ZodString>;
411
+ }, z.core.$strip>, z.ZodObject<{
412
+ type: z.ZodLiteral<"boolean">;
413
+ operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
414
+ value: z.ZodNullable<z.ZodBoolean>;
415
+ field: z.ZodString;
416
+ relation: z.ZodOptional<z.ZodString>;
387
417
  }, z.core.$strip>], "type">;
388
418
  type IFilter = z.infer<typeof filter>;
389
419
  type IFilters = IFilter[];
@@ -410,42 +440,60 @@ declare const filterOrGroupList: z.ZodArray<z.ZodUnion<[z.ZodDiscriminatedUnion<
410
440
  value: z.ZodUnion<[z.ZodNullable<z.ZodString>, z.ZodTuple<[z.ZodString, z.ZodString], null>]>;
411
441
  field: z.ZodString;
412
442
  relation: z.ZodOptional<z.ZodString>;
443
+ }, z.core.$strip>, z.ZodObject<{
444
+ type: z.ZodLiteral<"boolean">;
445
+ operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
446
+ value: z.ZodNullable<z.ZodBoolean>;
447
+ field: z.ZodString;
448
+ relation: z.ZodOptional<z.ZodString>;
413
449
  }, z.core.$strip>], "type">, z.ZodType<IGroup<{
414
450
  type: "number";
415
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
451
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
416
452
  value: number | null;
417
453
  field: string;
418
454
  relation?: string | undefined;
419
455
  } | {
420
456
  type: "string";
421
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
457
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
422
458
  value: string | null;
423
459
  field: string;
424
460
  relation?: string | undefined;
425
461
  } | {
426
462
  type: "date";
427
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
463
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
428
464
  value: string | [string, string] | null;
429
465
  field: string;
430
466
  relation?: string | undefined;
467
+ } | {
468
+ type: "boolean";
469
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
470
+ value: boolean | null;
471
+ field: string;
472
+ relation?: string | undefined;
431
473
  }>, unknown, z.core.$ZodTypeInternals<IGroup<{
432
474
  type: "number";
433
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
475
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
434
476
  value: number | null;
435
477
  field: string;
436
478
  relation?: string | undefined;
437
479
  } | {
438
480
  type: "string";
439
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
481
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
440
482
  value: string | null;
441
483
  field: string;
442
484
  relation?: string | undefined;
443
485
  } | {
444
486
  type: "date";
445
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
487
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
446
488
  value: string | [string, string] | null;
447
489
  field: string;
448
490
  relation?: string | undefined;
491
+ } | {
492
+ type: "boolean";
493
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
494
+ value: boolean | null;
495
+ field: string;
496
+ relation?: string | undefined;
449
497
  }>, unknown>>]>>;
450
498
  type IFilterOrGroupList<Filter extends IFilter = IFilter> = IFilterOrGroup<Filter>[];
451
499
  declare const rootFilter: z.ZodUnion<[z.ZodUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -466,42 +514,60 @@ declare const rootFilter: z.ZodUnion<[z.ZodUnion<[z.ZodDiscriminatedUnion<[z.Zod
466
514
  value: z.ZodUnion<[z.ZodNullable<z.ZodString>, z.ZodTuple<[z.ZodString, z.ZodString], null>]>;
467
515
  field: z.ZodString;
468
516
  relation: z.ZodOptional<z.ZodString>;
517
+ }, z.core.$strip>, z.ZodObject<{
518
+ type: z.ZodLiteral<"boolean">;
519
+ operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
520
+ value: z.ZodNullable<z.ZodBoolean>;
521
+ field: z.ZodString;
522
+ relation: z.ZodOptional<z.ZodString>;
469
523
  }, z.core.$strip>], "type">, z.ZodType<IGroup<{
470
524
  type: "number";
471
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
525
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
472
526
  value: number | null;
473
527
  field: string;
474
528
  relation?: string | undefined;
475
529
  } | {
476
530
  type: "string";
477
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
531
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
478
532
  value: string | null;
479
533
  field: string;
480
534
  relation?: string | undefined;
481
535
  } | {
482
536
  type: "date";
483
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
537
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
484
538
  value: string | [string, string] | null;
485
539
  field: string;
486
540
  relation?: string | undefined;
541
+ } | {
542
+ type: "boolean";
543
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
544
+ value: boolean | null;
545
+ field: string;
546
+ relation?: string | undefined;
487
547
  }>, unknown, z.core.$ZodTypeInternals<IGroup<{
488
548
  type: "number";
489
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
549
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
490
550
  value: number | null;
491
551
  field: string;
492
552
  relation?: string | undefined;
493
553
  } | {
494
554
  type: "string";
495
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
555
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
496
556
  value: string | null;
497
557
  field: string;
498
558
  relation?: string | undefined;
499
559
  } | {
500
560
  type: "date";
501
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
561
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
502
562
  value: string | [string, string] | null;
503
563
  field: string;
504
564
  relation?: string | undefined;
565
+ } | {
566
+ type: "boolean";
567
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
568
+ value: boolean | null;
569
+ field: string;
570
+ relation?: string | undefined;
505
571
  }>, unknown>>]>, z.ZodArray<z.ZodUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
506
572
  type: z.ZodLiteral<"number">;
507
573
  operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$gt">, z.ZodLiteral<"$gte">, z.ZodLiteral<"$lt">, z.ZodLiteral<"$lte">, z.ZodLiteral<"$is_empty">, z.ZodLiteral<"$is_not_empty">]>;
@@ -520,42 +586,60 @@ declare const rootFilter: z.ZodUnion<[z.ZodUnion<[z.ZodDiscriminatedUnion<[z.Zod
520
586
  value: z.ZodUnion<[z.ZodNullable<z.ZodString>, z.ZodTuple<[z.ZodString, z.ZodString], null>]>;
521
587
  field: z.ZodString;
522
588
  relation: z.ZodOptional<z.ZodString>;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"boolean">;
591
+ operator: z.ZodUnion<readonly [z.ZodLiteral<"$eq">, z.ZodLiteral<"$neq">, z.ZodLiteral<"$contains">, z.ZodLiteral<"$not_contains">]>;
592
+ value: z.ZodNullable<z.ZodBoolean>;
593
+ field: z.ZodString;
594
+ relation: z.ZodOptional<z.ZodString>;
523
595
  }, z.core.$strip>], "type">, z.ZodType<IGroup<{
524
596
  type: "number";
525
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
597
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
526
598
  value: number | null;
527
599
  field: string;
528
600
  relation?: string | undefined;
529
601
  } | {
530
602
  type: "string";
531
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
603
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
532
604
  value: string | null;
533
605
  field: string;
534
606
  relation?: string | undefined;
535
607
  } | {
536
608
  type: "date";
537
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
609
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
538
610
  value: string | [string, string] | null;
539
611
  field: string;
540
612
  relation?: string | undefined;
613
+ } | {
614
+ type: "boolean";
615
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
616
+ value: boolean | null;
617
+ field: string;
618
+ relation?: string | undefined;
541
619
  }>, unknown, z.core.$ZodTypeInternals<IGroup<{
542
620
  type: "number";
543
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_empty" | "$is_not_empty";
621
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$is_empty" | "$is_not_empty";
544
622
  value: number | null;
545
623
  field: string;
546
624
  relation?: string | undefined;
547
625
  } | {
548
626
  type: "string";
549
- operator: "$eq" | "$neq" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex" | "$is_empty" | "$is_not_empty";
627
+ operator: "$eq" | "$neq" | "$is_empty" | "$is_not_empty" | "$contains" | "$not_contains" | "$starts_with" | "$ends_with" | "$regex";
550
628
  value: string | null;
551
629
  field: string;
552
630
  relation?: string | undefined;
553
631
  } | {
554
632
  type: "date";
555
- operator: "$eq" | "$neq" | "$gt" | "$lt" | "$gte" | "$lte" | "$is_today" | "$is_not_today" | "$is_tomorrow" | "$is_yesterday" | "$between";
633
+ operator: "$eq" | "$neq" | "$gt" | "$gte" | "$lt" | "$lte" | "$between" | "$is_today" | "$is_tomorrow" | "$is_yesterday" | "$is_not_today";
556
634
  value: string | [string, string] | null;
557
635
  field: string;
558
636
  relation?: string | undefined;
637
+ } | {
638
+ type: "boolean";
639
+ operator: "$eq" | "$neq" | "$contains" | "$not_contains";
640
+ value: boolean | null;
641
+ field: string;
642
+ relation?: string | undefined;
559
643
  }>, unknown>>]>>]>;
560
644
  type IRootFilter<Filter extends IFilter = IFilter> = IFilterOrGroup<Filter> | IFilterOrGroupList<Filter>;
561
645
  declare const isGroup: (filterOrGroup: IFilterOrGroup) => filterOrGroup is IGroup;
@@ -773,5 +857,5 @@ declare class StringVO extends ValueObject<string> {
773
857
  static empty(): StringVO;
774
858
  }
775
859
  //#endregion
776
- export { $between, $contains, $end_eq, $end_gt, $end_gte, $end_lt, $end_lte, $end_neq, $ends_with, $eq, $gt, $gte, $has_file_extension, $has_file_type, $in, $is_empty, $is_false, $is_me, $is_not_empty, $is_not_me, $is_not_today, $is_root, $is_today, $is_tomorrow, $is_true, $is_yesterday, $lt, $lte, $neq, $nin, $not_contains, $regex, $start_eq, $start_gt, $start_gte, $start_lt, $start_lte, $start_neq, $starts_with, AggregateRoot, BaseEvent, BaseFilterSpecification, BoolVO, Command, CommandProps, CompositeSpecification, DateBetween, DateEqual, DateFieldValue, DateGreaterThan, DateGreaterThanOrEqual, DateIsToday, DateIsTomorrow, DateIsYesterday, DateLessThan, DateLessThanOrEqual, DateVO, DomainPrimitive, ExceptionBase, FieldValueBase, ICommandBus, ICommandHandler, IConjunction, ID, IDateFieldValue, IDateFilter, IDateFilterOperator, IDateFilterValue, IEvent, IEventHandler, IEventJSON, IFieldValueVisitor, IFilter, IFilterBaseVisitor, IFilterOrGroup, IFilterOrGroupList, IFilters, IGroup, INumberFieldValue, INumberFilter, INumberFilterOperators, INumberFilterValue, IOperator, IOutboxService, IPagination, IQueryBus, IQueryHandler, IRepositoryOption, IRootFilter, ISorting, ISpecVisitor, ISpecification, IStringFieldValue, IStringFilter, IStringFilterOperator, IUnitOfWork, IntegerVO, NanoID, NumberEmpty, NumberEqual, NumberFieldValue, NumberGreaterThan, NumberGreaterThanOrEqual, NumberLessThan, NumberLessThanOrEqual, PaginatedRepositoryMethodResult, Primitives, Query, RootFilter, SerializedException, StringContain, StringEmpty, StringEndsWith, StringEqual, StringFieldValue, StringNotEqual, StringRegex, StringStartsWith, StringVO, UnpackedFieldValue, ValueObject, and, andOptions, baseFilter, conjunctions, convertFilterSpec, convertPropsToObject, dateFieldValue, dateFilter, dateFilterOperators, dateFilterValue, eventSchema, filterOrGroupList, filterRoorFilter, isEmptyFilter, isFilter, isGroup, isOperatorWithoutValue, numberFieldValue, numberFilter, numberFilterOperators, numberFilterValue, operators, operatorsMap, operatorsWihtoutValue, or, paginatedResponseSchema, paginationSchema, rootFilter, sortingSchema, stringFieldValue, stringFilter, stringFilterOperators, stringFilterValue };
860
+ export { $between, $contains, $end_eq, $end_gt, $end_gte, $end_lt, $end_lte, $end_neq, $ends_with, $eq, $gt, $gte, $has_file_extension, $has_file_type, $in, $is_empty, $is_false, $is_me, $is_not_empty, $is_not_me, $is_not_today, $is_root, $is_today, $is_tomorrow, $is_true, $is_yesterday, $lt, $lte, $neq, $nin, $not_contains, $regex, $start_eq, $start_gt, $start_gte, $start_lt, $start_lte, $start_neq, $starts_with, AggregateRoot, BaseEvent, BaseFilterSpecification, BoolVO, BooleanFieldValue, Command, CommandProps, CompositeSpecification, DateBetween, DateEqual, DateFieldValue, DateGreaterThan, DateGreaterThanOrEqual, DateIsToday, DateIsTomorrow, DateIsYesterday, DateLessThan, DateLessThanOrEqual, DateVO, DomainPrimitive, ExceptionBase, FieldValueBase, IBooleanFieldValue, IBooleanFilter, IBooleanFilterOperator, ICommandBus, ICommandHandler, IConjunction, ID, IDateFieldValue, IDateFilter, IDateFilterOperator, IDateFilterValue, IEvent, IEventHandler, IEventJSON, IFieldValueVisitor, IFilter, IFilterBaseVisitor, IFilterOrGroup, IFilterOrGroupList, IFilters, IGroup, INumberFieldValue, INumberFilter, INumberFilterOperators, INumberFilterValue, IOperator, IOutboxService, IPagination, IQueryBus, IQueryHandler, IRepositoryOption, IRootFilter, ISorting, ISpecVisitor, ISpecification, IStringFieldValue, IStringFilter, IStringFilterOperator, IUnitOfWork, IntegerVO, NanoID, NumberEmpty, NumberEqual, NumberFieldValue, NumberGreaterThan, NumberGreaterThanOrEqual, NumberLessThan, NumberLessThanOrEqual, PaginatedRepositoryMethodResult, Primitives, Query, RootFilter, SerializedException, StringContain, StringEmpty, StringEndsWith, StringEqual, StringFieldValue, StringNotEqual, StringRegex, StringStartsWith, StringVO, UnpackedFieldValue, ValueObject, and, andOptions, baseFilter, booleanFieldValue, booleanFilter, booleanFilterOperators, booleanFilterValue, conjunctions, convertFilterSpec, convertPropsToObject, dateFieldValue, dateFilter, dateFilterOperators, dateFilterValue, eventSchema, filterOrGroupList, filterRoorFilter, isEmptyFilter, isFilter, isGroup, isOperatorWithoutValue, numberFieldValue, numberFilter, numberFilterOperators, numberFilterValue, operators, operatorsMap, operatorsWihtoutValue, or, paginatedResponseSchema, paginationSchema, rootFilter, sortingSchema, stringFieldValue, stringFilter, stringFilterOperators, stringFilterValue };
777
861
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -160,20 +160,20 @@ var ValueObject = class ValueObject {
160
160
  var FieldValueBase = class extends ValueObject {};
161
161
 
162
162
  //#endregion
163
- //#region src/filter/fields/date/date-field-value.ts
164
- var DateFieldValue = class extends FieldValueBase {
163
+ //#region src/filter/fields/boolean/boolean-field-value.ts
164
+ var BooleanFieldValue = class extends FieldValueBase {
165
165
  constructor(value) {
166
166
  super({ value });
167
167
  }
168
168
  accept(visitor) {
169
- visitor.date(this);
170
- }
171
- static fromNullableString(str) {
172
- if (!str) return new this(null);
173
- return new this(new Date(str));
169
+ visitor.boolean(this);
174
170
  }
175
171
  };
176
172
 
173
+ //#endregion
174
+ //#region src/filter/fields/boolean/boolean-field.type.ts
175
+ const booleanFieldValue = z.boolean().nullable();
176
+
177
177
  //#endregion
178
178
  //#region src/filter/operators.ts
179
179
  const $eq = z.literal("$eq");
@@ -228,6 +228,40 @@ const operatorsWihtoutValue = z.union([
228
228
  ]);
229
229
  const isOperatorWithoutValue = (value) => operatorsWihtoutValue.safeParse(value).success;
230
230
 
231
+ //#endregion
232
+ //#region src/filter/fields/boolean/boolean.filter.ts
233
+ const booleanFilterOperators = z.union([
234
+ $eq,
235
+ $neq,
236
+ $contains,
237
+ $not_contains
238
+ ]);
239
+ const booleanFilterValue = z.boolean().nullable();
240
+ const booleanFilter = z.object({
241
+ type: z.literal("boolean"),
242
+ operator: booleanFilterOperators,
243
+ value: booleanFilterValue
244
+ }).merge(baseFilter);
245
+
246
+ //#endregion
247
+ //#region src/filter/fields/date/date-field-value.ts
248
+ var DateFieldValue = class extends FieldValueBase {
249
+ constructor(value) {
250
+ super({ value });
251
+ }
252
+ accept(visitor) {
253
+ visitor.date(this);
254
+ }
255
+ static fromNullableString(str) {
256
+ if (!str) return new this(null);
257
+ return new this(new Date(str));
258
+ }
259
+ };
260
+
261
+ //#endregion
262
+ //#region src/filter/fields/date/date-field.type.ts
263
+ const dateFieldValue = z.date().nullable();
264
+
231
265
  //#endregion
232
266
  //#region src/filter/fields/date/date.filter.ts
233
267
  const dateFilterOperators = z.union([
@@ -261,6 +295,10 @@ var NumberFieldValue = class extends FieldValueBase {
261
295
  }
262
296
  };
263
297
 
298
+ //#endregion
299
+ //#region src/filter/fields/number/number-field.type.ts
300
+ const numberFieldValue = z.number().or(z.null());
301
+
264
302
  //#endregion
265
303
  //#region src/filter/fields/number/number.filter.ts
266
304
  const numberFilterOperators = z.union([
@@ -291,6 +329,10 @@ var StringFieldValue = class extends FieldValueBase {
291
329
  }
292
330
  };
293
331
 
332
+ //#endregion
333
+ //#region src/filter/fields/string/string-field.type.ts
334
+ const stringFieldValue = z.string().nullable();
335
+
294
336
  //#endregion
295
337
  //#region src/filter/fields/string/string.filter.ts
296
338
  const stringFilterOperators = z.union([
@@ -688,13 +730,15 @@ const filterRoorFilter = (filters) => {
688
730
  conjunction: conjunctions,
689
731
  children: z.union([group$1, filter$1]).array().nonempty().optional()
690
732
  }));
691
- const filterOrGroupList$1 = filter$1.or(group$1).array();
733
+ const filterOrGroup$1 = filter$1.or(group$1);
734
+ const filterOrGroupList$1 = filterOrGroup$1.array();
692
735
  return group$1.or(filterOrGroupList$1);
693
736
  };
694
737
  const filter = z.discriminatedUnion("type", [
695
738
  numberFilter,
696
739
  stringFilter,
697
- dateFilter
740
+ dateFilter,
741
+ booleanFilter
698
742
  ]);
699
743
  const group = z.lazy(() => z.object({
700
744
  conjunction: conjunctions,
@@ -740,6 +784,9 @@ const convertNumberFilter = (filter$1) => {
740
784
  default: return None;
741
785
  }
742
786
  };
787
+ const convertBooleanFilter = (filter$1) => {
788
+ if (filter$1 === void 0) return None;
789
+ };
743
790
  const convertDateFilter = (filter$1) => {
744
791
  if (filter$1 === void 0) return None;
745
792
  switch (filter$1.operator) {
@@ -748,7 +795,7 @@ const convertDateFilter = (filter$1) => {
748
795
  }
749
796
  };
750
797
  const convertFilter = (filter$1) => {
751
- return match(filter$1).returnType().with({ type: "number" }, (f) => convertNumberFilter(f)).with({ type: "string" }, (f) => convertStringFilter(f)).with({ type: "date" }, (f) => convertDateFilter(f)).otherwise(() => None);
798
+ return match(filter$1).returnType().with({ type: "number" }, (f) => convertNumberFilter(f)).with({ type: "string" }, (f) => convertStringFilter(f)).with({ type: "date" }, (f) => convertDateFilter(f)).with({ type: "boolean" }, (f) => convertBooleanFilter(f)).otherwise(() => None);
752
799
  };
753
800
  const convertFilterOrGroup = (filterOrGroup$1) => {
754
801
  if (isGroup(filterOrGroup$1)) return convertFilterOrGroupList(filterOrGroup$1.children, filterOrGroup$1.conjunction);
@@ -787,18 +834,6 @@ function isEmptyNative(value) {
787
834
  }
788
835
  const isEmptyFilter = (filter$1) => isEmptyNative(filter$1);
789
836
 
790
- //#endregion
791
- //#region src/filter/fields/date/date-field.type.ts
792
- const dateFieldValue = z.date().nullable();
793
-
794
- //#endregion
795
- //#region src/filter/fields/number/number-field.type.ts
796
- const numberFieldValue = z.number().or(z.null());
797
-
798
- //#endregion
799
- //#region src/filter/fields/string/string-field.type.ts
800
- const stringFieldValue = z.string().nullable();
801
-
802
837
  //#endregion
803
838
  //#region src/filter/root-filter.ts
804
839
  var RootFilter = class extends ValueObject {
@@ -864,7 +899,8 @@ var BoolVO = class BoolVO extends ValueObject {
864
899
  //#region src/value-objects/date.vo.ts
865
900
  var DateVO = class DateVO extends ValueObject {
866
901
  constructor(value) {
867
- super({ value: new Date(value) });
902
+ const date = new Date(value);
903
+ super({ value: date });
868
904
  }
869
905
  get value() {
870
906
  return this.props.value;
@@ -933,5 +969,5 @@ var StringVO = class StringVO extends ValueObject {
933
969
  };
934
970
 
935
971
  //#endregion
936
- export { $between, $contains, $end_eq, $end_gt, $end_gte, $end_lt, $end_lte, $end_neq, $ends_with, $eq, $gt, $gte, $has_file_extension, $has_file_type, $in, $is_empty, $is_false, $is_me, $is_not_empty, $is_not_me, $is_not_today, $is_root, $is_today, $is_tomorrow, $is_true, $is_yesterday, $lt, $lte, $neq, $nin, $not_contains, $regex, $start_eq, $start_gt, $start_gte, $start_lt, $start_lte, $start_neq, $starts_with, AggregateRoot, BaseEvent, BaseFilterSpecification, BoolVO, Command, CompositeSpecification, DateBetween, DateEqual, DateFieldValue, DateGreaterThan, DateGreaterThanOrEqual, DateIsToday, DateIsTomorrow, DateIsYesterday, DateLessThan, DateLessThanOrEqual, DateVO, ExceptionBase, FieldValueBase, ID, IntegerVO, NanoID, NumberEmpty, NumberEqual, NumberFieldValue, NumberGreaterThan, NumberGreaterThanOrEqual, NumberLessThan, NumberLessThanOrEqual, Query, RootFilter, StringContain, StringEmpty, StringEndsWith, StringEqual, StringFieldValue, StringNotEqual, StringRegex, StringStartsWith, StringVO, ValueObject, and, andOptions, baseFilter, conjunctions, convertFilterSpec, convertPropsToObject, dateFieldValue, dateFilter, dateFilterOperators, dateFilterValue, eventSchema, filterOrGroupList, filterRoorFilter, isEmptyFilter, isFilter, isGroup, isOperatorWithoutValue, numberFieldValue, numberFilter, numberFilterOperators, numberFilterValue, operators, operatorsMap, operatorsWihtoutValue, or, paginatedResponseSchema, paginationSchema, rootFilter, sortingSchema, stringFieldValue, stringFilter, stringFilterOperators, stringFilterValue };
972
+ export { $between, $contains, $end_eq, $end_gt, $end_gte, $end_lt, $end_lte, $end_neq, $ends_with, $eq, $gt, $gte, $has_file_extension, $has_file_type, $in, $is_empty, $is_false, $is_me, $is_not_empty, $is_not_me, $is_not_today, $is_root, $is_today, $is_tomorrow, $is_true, $is_yesterday, $lt, $lte, $neq, $nin, $not_contains, $regex, $start_eq, $start_gt, $start_gte, $start_lt, $start_lte, $start_neq, $starts_with, AggregateRoot, BaseEvent, BaseFilterSpecification, BoolVO, BooleanFieldValue, Command, CompositeSpecification, DateBetween, DateEqual, DateFieldValue, DateGreaterThan, DateGreaterThanOrEqual, DateIsToday, DateIsTomorrow, DateIsYesterday, DateLessThan, DateLessThanOrEqual, DateVO, ExceptionBase, FieldValueBase, ID, IntegerVO, NanoID, NumberEmpty, NumberEqual, NumberFieldValue, NumberGreaterThan, NumberGreaterThanOrEqual, NumberLessThan, NumberLessThanOrEqual, Query, RootFilter, StringContain, StringEmpty, StringEndsWith, StringEqual, StringFieldValue, StringNotEqual, StringRegex, StringStartsWith, StringVO, ValueObject, and, andOptions, baseFilter, booleanFieldValue, booleanFilter, booleanFilterOperators, booleanFilterValue, conjunctions, convertFilterSpec, convertPropsToObject, dateFieldValue, dateFilter, dateFilterOperators, dateFilterValue, eventSchema, filterOrGroupList, filterRoorFilter, isEmptyFilter, isFilter, isGroup, isOperatorWithoutValue, numberFieldValue, numberFilter, numberFilterOperators, numberFilterValue, operators, operatorsMap, operatorsWihtoutValue, or, paginatedResponseSchema, paginationSchema, rootFilter, sortingSchema, stringFieldValue, stringFilter, stringFilterOperators, stringFilterValue };
937
973
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["#domainEvents","payload: TPayload","operatorId: string","meta: TMeta","message: string","cause?: Error","metadata?: unknown","props: ValueObjectProps<T>","left: ISpecification<T, V>","right: ISpecification<T, V>","spec: ISpecification<T, V>","field: string","value: V","relation?: string","field: string","dateStart: Date","dateEnd: Date","relation?: string","field: string","filterTuple: [T, ...T[]]","filter","group: z.ZodType<{\n conjunction?: IConjunction;\n children?: (z.infer<typeof group> | z.infer<typeof filter>)[];\n }>","group","filterOrGroupList","group: z.ZodType<IGroup>","filterOrGroup","operatorsMap: Record<IFieldType, IOperator[]>","spec: Option<BaseFilterSpecification>"],"sources":["../src/aggregate-root.ts","../src/command.ts","../src/event.ts","../src/exception.base.ts","../src/filter/base.filter.ts","../src/filter/conjunction.ts","../src/utils.ts","../src/value-objects/value-object.ts","../src/filter/fields/field-value.base.ts","../src/filter/fields/date/date-field-value.ts","../src/filter/operators.ts","../src/filter/fields/date/date.filter.ts","../src/filter/fields/number/number-field-value.ts","../src/filter/fields/number/number.filter.ts","../src/filter/fields/string/string-field-value.ts","../src/filter/fields/string/string.filter.ts","../src/specification.ts","../src/filter/filter-specification.base.ts","../src/filter/specifications/date.specification.ts","../src/filter/specifications/number.specification.ts","../src/filter/specifications/string.specification.ts","../src/filter/filter.ts","../src/filter/fields/date/date-field.type.ts","../src/filter/fields/number/number-field.type.ts","../src/filter/fields/string/string-field.type.ts","../src/filter/root-filter.ts","../src/pagination.ts","../src/query.ts","../src/sort.ts","../src/value-objects/boolean.vo.ts","../src/value-objects/date.vo.ts","../src/value-objects/id.vo.ts","../src/value-objects/nanoid.vo.ts","../src/value-objects/integer.vo.ts","../src/value-objects/string.vo.ts"],"sourcesContent":["import { type BaseEvent } from \"./event\";\n\nexport abstract class AggregateRoot<E extends BaseEvent> {\n #domainEvents: E[] = [];\n\n get domainEvents() {\n return this.#domainEvents;\n }\n\n set domainEvents(events: E[]) {\n this.#domainEvents = events;\n }\n\n addDomainEvent(event: E) {\n this.#domainEvents.push(event);\n }\n\n removeEvents(events: E[]) {\n this.#domainEvents = this.#domainEvents.filter(\n (event) => !events.includes(event),\n );\n }\n}\n","import { v4 } from \"uuid\";\n\nexport type CommandProps<T> = Omit<T, \"correlationId\" | \"commandId\"> &\n Partial<Command>;\n\nexport abstract class Command {\n public readonly commandId: string;\n\n public readonly correlationId: string;\n\n public readonly causationId?: string;\n\n constructor(props: CommandProps<unknown>) {\n this.correlationId = props.correlationId ?? v4();\n this.commandId = props.commandId ?? v4();\n }\n}\n","import { v4 } from \"uuid\";\nimport { z } from \"zod\";\n\nexport const eventSchema = <\n TName extends string,\n TPayload extends z.ZodTypeAny,\n TMeta extends z.ZodTypeAny,\n>(\n name: TName,\n payload: TPayload,\n meta: TMeta,\n) =>\n z.object({\n id: z.string().uuid(),\n name: z.literal(name),\n operatorId: z.string().optional(),\n payload: payload,\n timestamp: z.coerce.date(),\n meta: meta,\n });\n\nexport interface IEvent<TPayload extends object = object, TMeta = any> {\n id: string;\n name: string;\n operatorId: string;\n payload: TPayload;\n timestamp: Date;\n meta: TMeta;\n}\n\nexport interface IEventJSON<TPayload extends object = object, TMeta = any> {\n id: string;\n name: string;\n operatorId: string;\n payload: TPayload;\n timestamp: string;\n meta: TMeta;\n}\n\nexport abstract class BaseEvent<\n TPayload extends object = object,\n TName extends string = string,\n TMeta extends any = { key?: string; headers?: Record<string, string> },\n> implements IEvent<TPayload>\n{\n abstract name: TName;\n constructor(\n public readonly payload: TPayload,\n public readonly operatorId: string,\n public readonly meta: TMeta,\n public readonly id = v4(),\n public readonly timestamp = new Date(),\n ) {}\n\n toJSON(): IEventJSON<TPayload, TMeta> {\n return {\n id: this.id,\n name: this.name,\n operatorId: this.operatorId,\n timestamp: this.timestamp.toISOString(),\n payload: this.payload,\n meta: this.meta,\n };\n }\n}\n","export interface SerializedException {\n message: string;\n code: string;\n correlationId?: string;\n stack?: string;\n cause?: string;\n metadata?: unknown;\n}\n\nexport abstract class ExceptionBase extends Error {\n abstract code: string;\n\n public readonly correlationId?: string;\n\n /**\n *\n * @param message\n * @param correlationId\n * @param cause\n * @param metadata\n */\n constructor(\n readonly message: string,\n correlationId?: string,\n readonly cause?: Error,\n readonly metadata?: unknown,\n ) {\n super(message);\n Error.captureStackTrace(this, this.constructor);\n this.correlationId = correlationId;\n }\n\n toJSON(): SerializedException {\n return {\n message: this.message,\n code: this.code,\n stack: this.stack,\n correlationId: this.correlationId,\n cause: JSON.stringify(this.cause),\n metadata: this.metadata,\n };\n }\n}\n","import { z } from \"zod\";\n\nexport const baseFilter = z.object({\n field: z.string().min(1),\n relation: z.string().min(1).optional(),\n});\n","import { z } from \"zod\";\n\nconst $and = z.literal(\"$and\");\nconst $or = z.literal(\"$or\");\nconst $not = z.literal(\"$not\");\nexport const conjunctions = z.union([$and, $or, $not]);\nexport type IConjunction = z.infer<typeof conjunctions>;\n","import { ValueObject } from \"./value-objects/value-object\";\n\nexport function convertPropsToObject(props: any): any {\n const propsCopy = { ...props };\n\n // eslint-disable-next-line guard-for-in\n for (const prop in propsCopy) {\n if (Array.isArray(propsCopy[prop])) {\n propsCopy[prop] = (propsCopy[prop] as Array<unknown>).map((item) => {\n return convertToPlainObject(item);\n });\n }\n propsCopy[prop] = convertToPlainObject(propsCopy[prop]);\n }\n\n return propsCopy;\n}\n\nfunction convertToPlainObject(item: any): any {\n if (ValueObject.isValueObject(item)) {\n return item.unpack();\n }\n\n return item;\n}\n","import { dequal } from \"dequal\";\nimport { convertPropsToObject } from \"../utils.js\";\nexport type Primitives = string | number | boolean | null;\nexport interface DomainPrimitive<T extends Primitives | Date> {\n value: T;\n}\n\ntype ValueObjectProps<T> = T extends Primitives | Date ? DomainPrimitive<T> : T;\n\nexport abstract class ValueObject<T = any> {\n constructor(protected readonly props: ValueObjectProps<T>) {}\n\n public equals(vo?: ValueObject<T>): boolean {\n if (vo === null || vo === undefined) {\n return false;\n }\n\n return dequal(vo, this);\n }\n\n static isValueObject(obj: unknown): obj is ValueObject<unknown> {\n return obj instanceof ValueObject;\n }\n\n public unpack(): T {\n if (this.isDomainPrimitive(this.props)) {\n return this.props.value;\n }\n\n const propsCopy = convertPropsToObject(this.props);\n\n return Object.freeze(propsCopy);\n }\n\n private isDomainPrimitive(\n obj: unknown,\n ): obj is DomainPrimitive<T & (Primitives | Date)> {\n if (Object.prototype.hasOwnProperty.call(obj, \"value\")) {\n return true;\n }\n\n return false;\n }\n}\n","import { ValueObject } from \"../../value-objects/value-object\";\nimport { type IFieldValueVisitor } from \"./field-value.visitor\";\nimport { type UnpackedFieldValue } from \"./field.type\";\n\nexport abstract class FieldValueBase<\n V extends UnpackedFieldValue,\n> extends ValueObject<V> {\n abstract accept(visitor: IFieldValueVisitor): void;\n}\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type IDateFieldValue } from \"./date-field.type\";\n\nexport class DateFieldValue extends FieldValueBase<IDateFieldValue> {\n constructor(value: IDateFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.date(this);\n }\n\n static fromNullableString(str: string | null): DateFieldValue {\n if (!str) {\n return new this(null);\n }\n\n return new this(new Date(str));\n }\n}\n","import { z } from \"zod\";\n\nexport const $eq = z.literal(\"$eq\");\nexport const $neq = z.literal(\"$neq\");\nexport const $contains = z.literal(\"$contains\");\nexport const $not_contains = z.literal(\"$not_contains\");\nexport const $starts_with = z.literal(\"$starts_with\");\nexport const $ends_with = z.literal(\"$ends_with\");\nexport const $regex = z.literal(\"$regex\");\n\nexport const $is_true = z.literal(\"$is_true\");\nexport const $is_false = z.literal(\"$is_false\");\n\nexport const $in = z.literal(\"$in\");\nexport const $nin = z.literal(\"$nin\");\n\nexport const $gt = z.literal(\"$gt\");\nexport const $lt = z.literal(\"$lt\");\nexport const $gte = z.literal(\"$gte\");\nexport const $lte = z.literal(\"$lte\");\n\nexport const $start_eq = z.literal(\"$start_eq\");\nexport const $start_neq = z.literal(\"$start_neq\");\nexport const $start_gt = z.literal(\"$start_gt\");\nexport const $start_lt = z.literal(\"$start_lt\");\nexport const $start_gte = z.literal(\"$start_gte\");\nexport const $start_lte = z.literal(\"$start_lte\");\n\nexport const $end_eq = z.literal(\"$end_eq\");\nexport const $end_neq = z.literal(\"$end_neq\");\nexport const $end_gt = z.literal(\"$end_gt\");\nexport const $end_lt = z.literal(\"$end_lt\");\nexport const $end_gte = z.literal(\"$end_gte\");\nexport const $end_lte = z.literal(\"$end_lte\");\n\nexport const $is_empty = z.literal(\"$is_empty\");\nexport const $is_not_empty = z.literal(\"$is_not_empty\");\n\nexport const $is_today = z.literal(\"$is_today\");\nexport const $is_not_today = z.literal(\"$is_not_today\");\nexport const $is_tomorrow = z.literal(\"$is_tomorrow\");\nexport const $is_yesterday = z.literal(\"$is_yesterday\");\nexport const $between = z.literal(\"$between\");\n\nexport const $has_file_type = z.literal(\"$has_file_type\");\nexport const $has_file_extension = z.literal(\"$has_file_extension\");\n\nexport const $is_root = z.literal(\"$is_root\");\n\nexport const $is_me = z.literal(\"$is_me\");\nexport const $is_not_me = z.literal(\"$is_not_me\");\n\nexport const operatorsWihtoutValue = z.union([\n $is_empty,\n $is_not_empty,\n $is_today,\n $is_not_today,\n $is_tomorrow,\n $is_yesterday,\n $is_root,\n $is_me,\n $is_not_me,\n]);\nexport const isOperatorWithoutValue = (value: string): boolean =>\n operatorsWihtoutValue.safeParse(value).success;\n","import { z } from \"zod\";\nimport {\n $between,\n $eq,\n $gt,\n $gte,\n $is_not_today,\n $is_today,\n $is_tomorrow,\n $is_yesterday,\n $lt,\n $lte,\n $neq,\n} from \"../../operators\";\nimport { baseFilter } from \"../../base.filter\";\n\nexport const dateFilterOperators = z.union([\n $eq,\n $neq,\n $gt,\n $gte,\n $lt,\n $lte,\n $between,\n $is_today,\n $is_tomorrow,\n $is_yesterday,\n $is_not_today,\n]);\n\nexport const dateFilterValue = z\n .string()\n .nullable()\n .or(z.tuple([z.string(), z.string()]));\nexport const dateFilter = z\n .object({\n type: z.literal(\"date\"),\n operator: dateFilterOperators,\n value: dateFilterValue,\n })\n .merge(baseFilter);\n\nexport type IDateFilter = z.infer<typeof dateFilter>;\nexport type IDateFilterValue = z.infer<typeof dateFilterValue>;\nexport type IDateFilterOperator = z.infer<typeof dateFilterOperators>;\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type INumberFieldValue } from \"./number-field.type\";\n\nexport class NumberFieldValue extends FieldValueBase<INumberFieldValue> {\n constructor(value: INumberFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.number(this);\n }\n}\n","import { z } from \"zod\";\nimport {\n $eq,\n $gt,\n $gte,\n $is_empty,\n $is_not_empty,\n $lt,\n $lte,\n $neq,\n} from \"../../operators\";\nimport { baseFilter } from \"../../base.filter\";\n\nexport const numberFilterOperators = z.union([\n $eq,\n $neq,\n $gt,\n $gte,\n $lt,\n $lte,\n $is_empty,\n $is_not_empty,\n]);\nexport type INumberFilterOperators = z.infer<typeof numberFilterOperators>;\n\nexport const numberFilterValue = z.number().nullable();\nexport const numberFilter = z\n .object({\n type: z.literal(\"number\"),\n operator: numberFilterOperators,\n value: numberFilterValue,\n })\n .merge(baseFilter);\n\nexport type INumberFilter = z.infer<typeof numberFilter>;\nexport type INumberFilterValue = z.infer<typeof numberFilterValue>;\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type IStringFieldValue } from \"./string-field.type\";\n\nexport class StringFieldValue extends FieldValueBase<IStringFieldValue> {\n constructor(value: IStringFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.string(this);\n }\n}\n","import { z } from \"zod\";\nimport { baseFilter } from \"../../base.filter\";\nimport {\n $eq,\n $neq,\n $contains,\n $not_contains,\n $starts_with,\n $ends_with,\n $regex,\n $is_empty,\n $is_not_empty,\n} from \"../../operators\";\n\nexport const stringFilterOperators = z.union([\n $eq,\n $neq,\n $contains,\n $not_contains,\n $starts_with,\n $ends_with,\n $regex,\n $is_empty,\n $is_not_empty,\n]);\n\nexport const stringFilterValue = z.string().nullable();\nexport const stringFilter = z\n .object({\n type: z.literal(\"string\"),\n operator: stringFilterOperators,\n value: stringFilterValue,\n })\n .merge(baseFilter);\n\nexport type IStringFilter = z.infer<typeof stringFilter>;\nexport type IStringFilterOperator = z.infer<typeof stringFilterOperators>;\n","import type { Option, Result } from \"oxide.ts\";\nimport { None, Ok, Some } from \"oxide.ts\";\n\nexport interface ISpecVisitor {\n or(left: ISpecification, right: ISpecification): this;\n not(): this;\n}\n\nexport interface ISpecification<\n T = any,\n V extends ISpecVisitor = ISpecVisitor,\n> {\n isSatisfiedBy(t: T): boolean;\n mutate(t: T): Result<T, string>;\n accept(v: V): Result<void, string>;\n}\n\nexport abstract class CompositeSpecification<\n T = any,\n V extends ISpecVisitor = ISpecVisitor,\n> implements ISpecification<T, V>\n{\n abstract isSatisfiedBy(t: T): boolean;\n abstract mutate(t: T): Result<T, string>;\n abstract accept(v: V): Result<void, string>;\n\n public and(s: ISpecification<T, V>): CompositeSpecification<T, V> {\n return new And(this, s);\n }\n\n public or(s: ISpecification<T, V>): CompositeSpecification<T, V> {\n return new Or(this, s);\n }\n\n public not(): Not<T, V> {\n return new Not(this);\n }\n}\n\nclass And<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(\n private readonly left: ISpecification<T, V>,\n private readonly right: ISpecification<T, V>,\n ) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return this.left.isSatisfiedBy(t) && this.right.isSatisfiedBy(t);\n }\n\n mutate(t: T): Result<T, string> {\n return this.left.mutate(t).and(this.right.mutate(t));\n }\n\n accept(v: V): Result<void, string> {\n return this.left.accept(v).and(this.right.accept(v));\n }\n}\n\nclass Or<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(\n private readonly left: ISpecification<T, V>,\n private readonly right: ISpecification<T, V>,\n ) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return this.left.isSatisfiedBy(t) || this.right.isSatisfiedBy(t);\n }\n\n mutate(t: T): Result<T, string> {\n return this.left.mutate(t).orElse(() => this.right.mutate(t));\n }\n\n accept(v: V): Result<void, string> {\n v.or(this.left, this.right);\n\n return Ok(undefined);\n }\n}\n\nclass Not<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(public readonly spec: ISpecification<T, V>) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return !this.spec.isSatisfiedBy(t);\n }\n\n mutate(): Result<T, string> {\n throw new Error(\"[Not.mutate] Method not implemented.\");\n }\n\n accept(v: V): Result<void, string> {\n return this.spec.accept(v.not());\n }\n}\n\nexport const and = <T, V extends ISpecVisitor>(\n ...specs: CompositeSpecification<T, V>[]\n): Option<CompositeSpecification<T, V>> => {\n if (!specs.length) {\n return None;\n }\n\n let s = specs[0];\n for (const spec of specs.slice(1)) {\n s = s.and(spec);\n }\n\n return Some(s);\n};\n\nexport const andOptions = <T, V extends ISpecVisitor>(\n ...specs: Option<CompositeSpecification<T, V>>[]\n): Option<CompositeSpecification<T, V>> => {\n return and(\n ...specs.filter((spec) => spec.isSome()).map((spec) => spec.unwrap()),\n );\n};\n\nexport const or = <T, V extends ISpecVisitor>(\n ...specs: CompositeSpecification<T, V>[]\n): Option<CompositeSpecification<T, V>> => {\n if (!specs.length) {\n return None;\n }\n\n let s = specs[0];\n for (const spec of specs.slice(1)) {\n s = s.or(spec);\n }\n\n return Some(s);\n};\n","import { type IFilterBaseVisitor } from \"./filter-specification-visitor.base\";\nimport { CompositeSpecification } from \"../specification\";\nimport { type Result } from \"oxide.ts\";\n\nexport abstract class BaseFilterSpecification<\n E = unknown,\n V = unknown,\n> extends CompositeSpecification<E, IFilterBaseVisitor> {\n constructor(\n public readonly field: string,\n public readonly value: V,\n public readonly relation?: string,\n ) {\n super();\n }\n\n mutate(t: E): Result<E, string> {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { DateFieldValue } from \"../fields/date/date-field-value\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\nimport {\n isAfter,\n isBefore,\n isEqual,\n isToday,\n isTomorrow,\n isWithinInterval,\n isYesterday,\n} from \"date-fns\";\n\nexport class DateEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof DateFieldValue && value.equals(this.value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateGreaterThan extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && isAfter(d1, d2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateGreaterThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateLessThan extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && isBefore(d1, d2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateLessThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateGreaterThanOrEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && (isEqual(d1, d2) || isAfter(d1, d2));\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateGreaterThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateLessThanOrEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && (isEqual(d1, d2) || isBefore(d1, d2));\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateLessThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsToday extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isToday(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsToday(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsTomorrow extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isTomorrow(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsTomorrow(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsYesterday extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isYesterday(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsYesterday(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateBetween extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n constructor(\n public field: string,\n public dateStart: Date,\n public dateEnd: Date,\n public relation?: string,\n ) {\n super(field, null, relation);\n }\n\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return (\n !!date &&\n isWithinInterval(date, { start: this.dateStart, end: this.dateEnd })\n );\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateBetween(this);\n\n return Ok(undefined);\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\nimport { NumberFieldValue } from \"../fields/number/number-field-value\";\n\nfunction isNil(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === \"number\";\n}\n\nexport class NumberEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof NumberFieldValue && value.equals(this.value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberGreaterThan extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n if (n1 === null && isNumber(n2)) {\n return true;\n }\n\n return n1 !== null && n2 !== null && n1 > n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberGreaterThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberLessThan extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n\n return n1 !== null && n2 !== null && n1 < n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberLessThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberGreaterThanOrEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n if (n1 === null && isNumber(n2)) {\n return true;\n }\n\n return n1 !== null && n2 !== null && n1 >= n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberGreaterThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberLessThanOrEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n\n return n1 !== null && n2 !== null && n1 <= n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberLessThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberEmpty extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n constructor(public readonly field: string) {\n super(field, new NumberFieldValue(null));\n }\n\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof NumberFieldValue && isNil(value.unpack());\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberEmpty(this);\n\n return Ok(undefined);\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { StringFieldValue } from \"../fields/string/string-field-value\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\n\nexport class StringEqual extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof StringFieldValue && this.value.equals(value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringNotEqual extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof StringFieldValue && this.value.equals(value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringNotEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringContain extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.includes(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringContain(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringStartsWith extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.startsWith(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringStartsWith(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringEndsWith extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.endsWith(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEndsWith(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringRegex extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && new RegExp(s2).test(s1);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringRegex(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringEmpty extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n constructor(field: string) {\n super(field, new StringFieldValue(null));\n }\n\n isSatisfiedBy(value: unknown): boolean {\n if (value instanceof StringFieldValue) {\n return !value.unpack();\n }\n\n return !value;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEmpty(this);\n\n return Ok(undefined);\n }\n}\n","import { None, Some, type Option } from \"oxide.ts\";\nimport { match } from \"ts-pattern\";\nimport { z } from \"zod\";\nimport { conjunctions, type IConjunction } from \"./conjunction\";\nimport { DateFieldValue } from \"./fields/date/date-field-value\";\nimport { dateFilter, type IDateFilter } from \"./fields/date/date.filter\";\nimport { NumberFieldValue } from \"./fields/number/number-field-value\";\nimport {\n numberFilter,\n numberFilterOperators,\n type INumberFilter,\n} from \"./fields/number/number.filter\";\nimport { StringFieldValue } from \"./fields/string/string-field-value\";\nimport {\n stringFilter,\n stringFilterOperators,\n type IStringFilter,\n} from \"./fields/string/string.filter\";\nimport { type BaseFilterSpecification } from \"./filter-specification.base\";\nimport { DateBetween, DateEqual } from \"./specifications/date.specification\";\nimport {\n NumberEmpty,\n NumberEqual,\n NumberGreaterThan,\n NumberGreaterThanOrEqual,\n NumberLessThan,\n NumberLessThanOrEqual,\n} from \"./specifications/number.specification\";\nimport {\n StringContain,\n StringEmpty,\n StringEndsWith,\n StringEqual,\n StringNotEqual,\n StringRegex,\n StringStartsWith,\n} from \"./specifications/string.specification\";\n\nexport const filterRoorFilter = <T extends z.ZodType>(filters: [T, ...T[]]) => {\n const filterTuple: [T, ...T[]] = [filters[0], ...filters.slice(1)];\n\n const filter = z.union(filterTuple as [T, T, ...T[]]);\n\n const group: z.ZodType<{\n conjunction?: IConjunction;\n children?: (z.infer<typeof group> | z.infer<typeof filter>)[];\n }> = z.lazy(() =>\n z.object({\n conjunction: conjunctions,\n children: z.union([group, filter]).array().nonempty().optional(),\n })\n );\n\n const filterOrGroup = filter.or(group);\n type IFilterOrGroup = z.infer<typeof filterOrGroup>;\n const filterOrGroupList = filterOrGroup.array();\n\n return group.or(filterOrGroupList);\n};\n\nconst filter = z.discriminatedUnion(\"type\", [\n numberFilter,\n stringFilter,\n dateFilter,\n]);\n\nexport type IFilter = z.infer<typeof filter>;\nexport type IFilters = IFilter[];\n\nexport interface IGroup<Filter extends IFilter = IFilter> {\n conjunction?: IConjunction;\n children?: IFilterOrGroupList<Filter>;\n}\n\nconst group: z.ZodType<IGroup> = z.lazy(() =>\n z.object({\n conjunction: conjunctions,\n children: z.union([group, filter]).array().nonempty().optional(),\n })\n);\n\nconst filterOrGroup = filter.or(group);\nexport type IFilterOrGroup<Filter extends IFilter = IFilter> =\n | Filter\n | IGroup<Filter>;\n\nexport const filterOrGroupList = filterOrGroup.array();\nexport type IFilterOrGroupList<Filter extends IFilter = IFilter> =\n IFilterOrGroup<Filter>[];\nexport const rootFilter = filterOrGroup.or(filterOrGroupList);\nexport type IRootFilter<Filter extends IFilter = IFilter> =\n | IFilterOrGroup<Filter>\n | IFilterOrGroupList<Filter>;\n\nexport const isGroup = (\n filterOrGroup: IFilterOrGroup\n): filterOrGroup is IGroup => {\n return Reflect.has(filterOrGroup, \"conjunction\");\n};\n\nexport const isFilter = (\n filterOrGroup: IFilterOrGroup\n): filterOrGroup is IFilter => {\n return (\n Reflect.has(filterOrGroup, \"type\") && Reflect.has(filterOrGroup, \"operator\")\n );\n};\n\nexport const operators = z.union([\n numberFilterOperators,\n stringFilterOperators,\n]);\nexport type IOperator = z.infer<typeof operators>;\n\ntype IFieldType = \"number\";\n\nexport const operatorsMap: Record<IFieldType, IOperator[]> = {\n number: numberFilterOperators.options.map((v) => v.value),\n};\n\nconst convertStringFilter = (\n filter: IStringFilter\n): Option<BaseFilterSpecification> => {\n if (filter.value === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\": {\n return Some(\n new StringEqual(\n filter.field,\n new StringFieldValue(filter.value),\n filter.relation\n )\n );\n }\n case \"$neq\": {\n return Some(\n new StringNotEqual(\n filter.field,\n new StringFieldValue(filter.value),\n filter.relation\n )\n );\n }\n case \"$contains\": {\n return Some(\n new StringContain(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$not_contains\": {\n return Some(\n new StringContain(\n filter.field,\n new StringFieldValue(filter.value)\n ).not() as unknown as BaseFilterSpecification\n );\n }\n case \"$starts_with\": {\n return Some(\n new StringStartsWith(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$ends_with\": {\n return Some(\n new StringEndsWith(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$regex\": {\n return Some(\n new StringRegex(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$is_empty\": {\n return Some(new StringEmpty(filter.field));\n }\n case \"$is_not_empty\": {\n return Some(\n new StringEmpty(\n filter.field\n ).not() as unknown as BaseFilterSpecification\n );\n }\n\n default:\n return None;\n }\n};\n\nconst convertNumberFilter = (\n filter: INumberFilter\n): Option<BaseFilterSpecification> => {\n if (filter === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\":\n return Some(\n new NumberEqual(filter.field, new NumberFieldValue(filter.value))\n );\n case \"$neq\": {\n // @ts-ignore\n return Some(\n new NumberEqual(filter.field, new NumberFieldValue(filter.value)).not()\n );\n }\n case \"$gt\": {\n return Some(\n new NumberGreaterThan(filter.field, new NumberFieldValue(filter.value))\n );\n }\n case \"$gte\": {\n return Some(\n new NumberGreaterThanOrEqual(\n filter.field,\n new NumberFieldValue(filter.value)\n )\n );\n }\n case \"$lt\": {\n return Some(\n new NumberLessThan(filter.field, new NumberFieldValue(filter.value))\n );\n }\n case \"$lte\": {\n return Some(\n new NumberLessThanOrEqual(\n filter.field,\n new NumberFieldValue(filter.value)\n )\n );\n }\n case \"$is_empty\": {\n return Some(new NumberEmpty(filter.field));\n }\n case \"$is_not_empty\": {\n // @ts-ignore\n return Some(new NumberEmpty(filter.field).not());\n }\n default:\n return None;\n }\n};\n\nconst convertDateFilter = (\n filter: IDateFilter\n): Option<BaseFilterSpecification> => {\n if (filter === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\": {\n return Some(\n new DateEqual(\n filter.field,\n DateFieldValue.fromNullableString(filter.value as string),\n filter.relation\n )\n );\n }\n case \"$between\": {\n return Some(\n new DateBetween(\n filter.field,\n new Date((filter.value as [string, string])[0]),\n new Date((filter.value as [string, string])[1])\n )\n );\n }\n }\n};\n\nconst convertFilter = (filter: IFilter): Option<BaseFilterSpecification> => {\n return match(filter)\n .returnType<Option<BaseFilterSpecification>>()\n .with({ type: \"number\" }, (f) => convertNumberFilter(f))\n .with({ type: \"string\" }, (f) => convertStringFilter(f))\n .with({ type: \"date\" }, (f) => convertDateFilter(f))\n .otherwise(() => None);\n};\n\nconst convertFilterOrGroup = (\n filterOrGroup: IFilterOrGroup\n): Option<BaseFilterSpecification> => {\n if (isGroup(filterOrGroup)) {\n return convertFilterOrGroupList(\n filterOrGroup.children,\n filterOrGroup.conjunction\n );\n } else if (isFilter(filterOrGroup)) {\n return convertFilter(filterOrGroup);\n }\n\n return None;\n};\n\nconst convertFilterOrGroupList = (\n filterOrGroupList: IFilterOrGroupList = [],\n conjunction: IConjunction = \"$and\"\n): Option<BaseFilterSpecification> => {\n let spec: Option<BaseFilterSpecification> = None;\n for (const filter of filterOrGroupList) {\n if (spec.isNone()) {\n spec = convertFilterOrGroup(filter);\n if (conjunction === \"$not\") {\n // @ts-ignore\n return spec.map((s) => s.not());\n }\n } else {\n if (isFilter(filter)) {\n // @ts-ignore\n spec = spec.map((left) => {\n const right = convertFilterOrGroup(filter);\n if (right.isSome()) {\n if (conjunction === \"$and\") {\n return left.and(right.unwrap());\n } else if (conjunction === \"$or\") {\n return left.or(right.unwrap());\n }\n\n return left.and(right.unwrap().not());\n }\n\n return left;\n });\n } else if (isGroup(filter)) {\n spec = convertFilterOrGroupList(filter.children, filter.conjunction);\n }\n }\n }\n\n return spec;\n};\n\nexport const convertFilterSpec = (\n filter: IRootFilter\n): Option<BaseFilterSpecification> => {\n if (Array.isArray(filter)) {\n return convertFilterOrGroupList(filter);\n }\n\n return convertFilterOrGroup(filter);\n};\n\nfunction isEmptyNative(value: unknown): boolean {\n if (value == null) return true;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") {\n for (const _ in value as object) {\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport const isEmptyFilter = (filter: IRootFilter) => isEmptyNative(filter);\n","import { z } from \"zod\";\n\nexport const dateFieldValue = z.date().nullable();\n\nexport type IDateFieldValue = z.infer<typeof dateFieldValue>;\n","import { z } from \"zod\";\n\nexport const numberFieldValue = z.number().or(z.null());\nexport type INumberFieldValue = z.infer<typeof numberFieldValue>;\n","import { z } from \"zod\";\n\nexport const stringFieldValue = z.string().nullable();\nexport type IStringFieldValue = z.infer<typeof stringFieldValue>;\n","import { type Option } from \"oxide.ts\";\nimport { ValueObject } from \"../value-objects/value-object\";\nimport {\n type IFilter,\n type IRootFilter,\n convertFilterSpec,\n isGroup,\n} from \"./filter\";\nimport { type BaseFilterSpecification } from \"./filter-specification.base\";\n\nexport class RootFilter<T extends IFilter = IFilter> extends ValueObject<\n IRootFilter<T>\n> {\n get value() {\n return this.props;\n }\n\n get group() {\n if (Array.isArray(this.value)) {\n return { conjunction: \"$and\", children: this.value };\n }\n if (isGroup(this.value)) {\n return this.value;\n }\n\n return { conjunction: \"$and\", children: [this.value] };\n }\n\n getSpec(): Option<BaseFilterSpecification> {\n return convertFilterSpec(this.value);\n }\n\n public toJSON() {\n return this.props;\n }\n}\n","import { z } from \"zod\";\n\nexport const paginationSchema = z.object({\n limit: z.coerce.number().positive().int().default(10).optional(),\n offset: z.coerce.number().nonnegative().int().default(0).optional(),\n});\n\nexport type IPagination = z.infer<typeof paginationSchema>;\n\nexport const paginatedResponseSchema = paginationSchema.extend({\n total: z.number().nonnegative().int(),\n});\n","export abstract class Query {}\n","import { z } from \"zod\";\n\n// TODO: base sort with possibility limit sorting fields for concrete entity\nexport const sortingSchema = z.record(z.string(), z.enum([\"ASC\", \"DESC\"]));\n\nexport type ISorting = z.infer<typeof sortingSchema>;\n","import { ValueObject } from \"./value-object.js\";\n\nexport class BoolVO extends ValueObject<boolean> {\n constructor(value: boolean) {\n super({ value });\n }\n\n public get value(): boolean {\n return this.props.value;\n }\n\n public static fromBoolean(value: boolean) {\n return new BoolVO(value);\n }\n\n public static True(): BoolVO {\n return new BoolVO(true);\n }\n\n public static False(): BoolVO {\n return new BoolVO(false);\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class DateVO extends ValueObject<Date> {\n constructor(value: Date | string | number) {\n const date = new Date(value);\n super({ value: date });\n }\n\n public get value(): Date {\n return this.props.value;\n }\n\n public static fromDate(value: Date) {\n return new DateVO(value);\n }\n\n public static now(): DateVO {\n return new DateVO(Date.now());\n }\n}\n","import { ValueObject } from \"./value-object\";\n\nexport abstract class ID extends ValueObject<number> {\n constructor(value: number) {\n super({ value });\n }\n\n public get value(): number {\n return this.props.value;\n }\n}\n","import { customAlphabet } from \"nanoid\";\nimport { ID } from \"./id.vo.js\";\n\nexport abstract class NanoID extends ID {\n private static ALPHABETS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n static createId(prefix = \"\", size = 5) {\n const id = customAlphabet(NanoID.ALPHABETS, size)();\n\n return prefix + id;\n }\n\n public get value(): number {\n return this.props.value;\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class IntegerVO extends ValueObject<number> {\n constructor(value: number) {\n super({ value });\n }\n\n public get value(): number {\n return this.props.value;\n }\n\n public static fromNumber(value: number) {\n return new IntegerVO(value);\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class StringVO extends ValueObject<string> {\n constructor(value: string) {\n super({ value });\n }\n\n public get value(): string {\n return this.props.value;\n }\n\n public static fromString(value: string) {\n return new StringVO(value);\n }\n\n public static empty(): StringVO {\n return new StringVO(\"\");\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["#domainEvents","payload: TPayload","operatorId: string","meta: TMeta","message: string","cause?: Error","metadata?: unknown","props: ValueObjectProps<T>","left: ISpecification<T, V>","right: ISpecification<T, V>","spec: ISpecification<T, V>","field: string","value: V","relation?: string","field: string","dateStart: Date","dateEnd: Date","relation?: string","field: string","filterTuple: [T, ...T[]]","filter","group: z.ZodType<{\n conjunction?: IConjunction;\n children?: (z.infer<typeof group> | z.infer<typeof filter>)[];\n }>","group","filterOrGroup","filterOrGroupList","group: z.ZodType<IGroup>","operatorsMap: Record<IFieldType, IOperator[]>","spec: Option<BaseFilterSpecification>"],"sources":["../src/aggregate-root.ts","../src/command.ts","../src/event.ts","../src/exception.base.ts","../src/filter/base.filter.ts","../src/filter/conjunction.ts","../src/utils.ts","../src/value-objects/value-object.ts","../src/filter/fields/field-value.base.ts","../src/filter/fields/boolean/boolean-field-value.ts","../src/filter/fields/boolean/boolean-field.type.ts","../src/filter/operators.ts","../src/filter/fields/boolean/boolean.filter.ts","../src/filter/fields/date/date-field-value.ts","../src/filter/fields/date/date-field.type.ts","../src/filter/fields/date/date.filter.ts","../src/filter/fields/number/number-field-value.ts","../src/filter/fields/number/number-field.type.ts","../src/filter/fields/number/number.filter.ts","../src/filter/fields/string/string-field-value.ts","../src/filter/fields/string/string-field.type.ts","../src/filter/fields/string/string.filter.ts","../src/specification.ts","../src/filter/filter-specification.base.ts","../src/filter/specifications/date.specification.ts","../src/filter/specifications/number.specification.ts","../src/filter/specifications/string.specification.ts","../src/filter/filter.ts","../src/filter/root-filter.ts","../src/pagination.ts","../src/query.ts","../src/sort.ts","../src/value-objects/boolean.vo.ts","../src/value-objects/date.vo.ts","../src/value-objects/id.vo.ts","../src/value-objects/nanoid.vo.ts","../src/value-objects/integer.vo.ts","../src/value-objects/string.vo.ts"],"sourcesContent":["import { type BaseEvent } from \"./event\";\n\nexport abstract class AggregateRoot<E extends BaseEvent> {\n #domainEvents: E[] = [];\n\n get domainEvents() {\n return this.#domainEvents;\n }\n\n set domainEvents(events: E[]) {\n this.#domainEvents = events;\n }\n\n addDomainEvent(event: E) {\n this.#domainEvents.push(event);\n }\n\n removeEvents(events: E[]) {\n this.#domainEvents = this.#domainEvents.filter(\n (event) => !events.includes(event),\n );\n }\n}\n","import { v4 } from \"uuid\";\n\nexport type CommandProps<T> = Omit<T, \"correlationId\" | \"commandId\"> &\n Partial<Command>;\n\nexport abstract class Command {\n public readonly commandId: string;\n\n public readonly correlationId: string;\n\n public readonly causationId?: string;\n\n constructor(props: CommandProps<unknown>) {\n this.correlationId = props.correlationId ?? v4();\n this.commandId = props.commandId ?? v4();\n }\n}\n","import { v4 } from \"uuid\";\nimport { z } from \"zod\";\n\nexport const eventSchema = <\n TName extends string,\n TPayload extends z.ZodTypeAny,\n TMeta extends z.ZodTypeAny,\n>(\n name: TName,\n payload: TPayload,\n meta: TMeta,\n) =>\n z.object({\n id: z.string().uuid(),\n name: z.literal(name),\n operatorId: z.string().optional(),\n payload: payload,\n timestamp: z.coerce.date(),\n meta: meta,\n });\n\nexport interface IEvent<TPayload extends object = object, TMeta = any> {\n id: string;\n name: string;\n operatorId: string;\n payload: TPayload;\n timestamp: Date;\n meta: TMeta;\n}\n\nexport interface IEventJSON<TPayload extends object = object, TMeta = any> {\n id: string;\n name: string;\n operatorId: string;\n payload: TPayload;\n timestamp: string;\n meta: TMeta;\n}\n\nexport abstract class BaseEvent<\n TPayload extends object = object,\n TName extends string = string,\n TMeta extends any = { key?: string; headers?: Record<string, string> },\n> implements IEvent<TPayload>\n{\n abstract name: TName;\n constructor(\n public readonly payload: TPayload,\n public readonly operatorId: string,\n public readonly meta: TMeta,\n public readonly id = v4(),\n public readonly timestamp = new Date(),\n ) {}\n\n toJSON(): IEventJSON<TPayload, TMeta> {\n return {\n id: this.id,\n name: this.name,\n operatorId: this.operatorId,\n timestamp: this.timestamp.toISOString(),\n payload: this.payload,\n meta: this.meta,\n };\n }\n}\n","export interface SerializedException {\n message: string;\n code: string;\n correlationId?: string;\n stack?: string;\n cause?: string;\n metadata?: unknown;\n}\n\nexport abstract class ExceptionBase extends Error {\n abstract code: string;\n\n public readonly correlationId?: string;\n\n /**\n *\n * @param message\n * @param correlationId\n * @param cause\n * @param metadata\n */\n constructor(\n readonly message: string,\n correlationId?: string,\n readonly cause?: Error,\n readonly metadata?: unknown,\n ) {\n super(message);\n Error.captureStackTrace(this, this.constructor);\n this.correlationId = correlationId;\n }\n\n toJSON(): SerializedException {\n return {\n message: this.message,\n code: this.code,\n stack: this.stack,\n correlationId: this.correlationId,\n cause: JSON.stringify(this.cause),\n metadata: this.metadata,\n };\n }\n}\n","import { z } from \"zod\";\n\nexport const baseFilter = z.object({\n field: z.string().min(1),\n relation: z.string().min(1).optional(),\n});\n","import { z } from \"zod\";\n\nconst $and = z.literal(\"$and\");\nconst $or = z.literal(\"$or\");\nconst $not = z.literal(\"$not\");\nexport const conjunctions = z.union([$and, $or, $not]);\nexport type IConjunction = z.infer<typeof conjunctions>;\n","import { ValueObject } from \"./value-objects/value-object\";\n\nexport function convertPropsToObject(props: any): any {\n const propsCopy = { ...props };\n\n // eslint-disable-next-line guard-for-in\n for (const prop in propsCopy) {\n if (Array.isArray(propsCopy[prop])) {\n propsCopy[prop] = (propsCopy[prop] as Array<unknown>).map((item) => {\n return convertToPlainObject(item);\n });\n }\n propsCopy[prop] = convertToPlainObject(propsCopy[prop]);\n }\n\n return propsCopy;\n}\n\nfunction convertToPlainObject(item: any): any {\n if (ValueObject.isValueObject(item)) {\n return item.unpack();\n }\n\n return item;\n}\n","import { dequal } from \"dequal\";\nimport { convertPropsToObject } from \"../utils.js\";\nexport type Primitives = string | number | boolean | null;\nexport interface DomainPrimitive<T extends Primitives | Date> {\n value: T;\n}\n\ntype ValueObjectProps<T> = T extends Primitives | Date ? DomainPrimitive<T> : T;\n\nexport abstract class ValueObject<T = any> {\n constructor(protected readonly props: ValueObjectProps<T>) {}\n\n public equals(vo?: ValueObject<T>): boolean {\n if (vo === null || vo === undefined) {\n return false;\n }\n\n return dequal(vo, this);\n }\n\n static isValueObject(obj: unknown): obj is ValueObject<unknown> {\n return obj instanceof ValueObject;\n }\n\n public unpack(): T {\n if (this.isDomainPrimitive(this.props)) {\n return this.props.value;\n }\n\n const propsCopy = convertPropsToObject(this.props);\n\n return Object.freeze(propsCopy);\n }\n\n private isDomainPrimitive(\n obj: unknown,\n ): obj is DomainPrimitive<T & (Primitives | Date)> {\n if (Object.prototype.hasOwnProperty.call(obj, \"value\")) {\n return true;\n }\n\n return false;\n }\n}\n","import { ValueObject } from \"../../value-objects/value-object\";\nimport { type IFieldValueVisitor } from \"./field-value.visitor\";\nimport { type UnpackedFieldValue } from \"./field.type\";\n\nexport abstract class FieldValueBase<\n V extends UnpackedFieldValue,\n> extends ValueObject<V> {\n abstract accept(visitor: IFieldValueVisitor): void;\n}\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type IBooleanFieldValue } from \"./boolean-field.type\";\n \nexport class BooleanFieldValue extends FieldValueBase<IBooleanFieldValue> {\n constructor(value: IBooleanFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.boolean(this);\n }\n}\n","import { z } from \"zod\";\n\nexport const booleanFieldValue = z.boolean().nullable();\nexport type IBooleanFieldValue = z.infer<typeof booleanFieldValue>;\n","import { z } from \"zod\";\n\nexport const $eq = z.literal(\"$eq\");\nexport const $neq = z.literal(\"$neq\");\nexport const $contains = z.literal(\"$contains\");\nexport const $not_contains = z.literal(\"$not_contains\");\nexport const $starts_with = z.literal(\"$starts_with\");\nexport const $ends_with = z.literal(\"$ends_with\");\nexport const $regex = z.literal(\"$regex\");\n\nexport const $is_true = z.literal(\"$is_true\");\nexport const $is_false = z.literal(\"$is_false\");\n\nexport const $in = z.literal(\"$in\");\nexport const $nin = z.literal(\"$nin\");\n\nexport const $gt = z.literal(\"$gt\");\nexport const $lt = z.literal(\"$lt\");\nexport const $gte = z.literal(\"$gte\");\nexport const $lte = z.literal(\"$lte\");\n\nexport const $start_eq = z.literal(\"$start_eq\");\nexport const $start_neq = z.literal(\"$start_neq\");\nexport const $start_gt = z.literal(\"$start_gt\");\nexport const $start_lt = z.literal(\"$start_lt\");\nexport const $start_gte = z.literal(\"$start_gte\");\nexport const $start_lte = z.literal(\"$start_lte\");\n\nexport const $end_eq = z.literal(\"$end_eq\");\nexport const $end_neq = z.literal(\"$end_neq\");\nexport const $end_gt = z.literal(\"$end_gt\");\nexport const $end_lt = z.literal(\"$end_lt\");\nexport const $end_gte = z.literal(\"$end_gte\");\nexport const $end_lte = z.literal(\"$end_lte\");\n\nexport const $is_empty = z.literal(\"$is_empty\");\nexport const $is_not_empty = z.literal(\"$is_not_empty\");\n\nexport const $is_today = z.literal(\"$is_today\");\nexport const $is_not_today = z.literal(\"$is_not_today\");\nexport const $is_tomorrow = z.literal(\"$is_tomorrow\");\nexport const $is_yesterday = z.literal(\"$is_yesterday\");\nexport const $between = z.literal(\"$between\");\n\nexport const $has_file_type = z.literal(\"$has_file_type\");\nexport const $has_file_extension = z.literal(\"$has_file_extension\");\n\nexport const $is_root = z.literal(\"$is_root\");\n\nexport const $is_me = z.literal(\"$is_me\");\nexport const $is_not_me = z.literal(\"$is_not_me\");\n\nexport const operatorsWihtoutValue = z.union([\n $is_empty,\n $is_not_empty,\n $is_today,\n $is_not_today,\n $is_tomorrow,\n $is_yesterday,\n $is_root,\n $is_me,\n $is_not_me,\n]);\nexport const isOperatorWithoutValue = (value: string): boolean =>\n operatorsWihtoutValue.safeParse(value).success;\n","import { z } from \"zod\";\nimport { baseFilter } from \"../../base.filter\";\nimport {\n $eq,\n $neq,\n $contains,\n $not_contains,\n} from \"../../operators\";\n\nexport const booleanFilterOperators = z.union([\n $eq,\n $neq,\n $contains,\n $not_contains,\n]);\n\nexport const booleanFilterValue = z.boolean().nullable();\nexport const booleanFilter = z\n .object({\n type: z.literal(\"boolean\"),\n operator: booleanFilterOperators,\n value: booleanFilterValue,\n })\n .merge(baseFilter);\n\nexport type IBooleanFilter = z.infer<typeof booleanFilter>;\nexport type IBooleanFilterOperator = z.infer<typeof booleanFilterOperators>;\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type IDateFieldValue } from \"./date-field.type\";\n\nexport class DateFieldValue extends FieldValueBase<IDateFieldValue> {\n constructor(value: IDateFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.date(this);\n }\n\n static fromNullableString(str: string | null): DateFieldValue {\n if (!str) {\n return new this(null);\n }\n\n return new this(new Date(str));\n }\n}\n","import { z } from \"zod\";\n\nexport const dateFieldValue = z.date().nullable();\n\nexport type IDateFieldValue = z.infer<typeof dateFieldValue>;\n","import { z } from \"zod\";\nimport {\n $between,\n $eq,\n $gt,\n $gte,\n $is_not_today,\n $is_today,\n $is_tomorrow,\n $is_yesterday,\n $lt,\n $lte,\n $neq,\n} from \"../../operators\";\nimport { baseFilter } from \"../../base.filter\";\n\nexport const dateFilterOperators = z.union([\n $eq,\n $neq,\n $gt,\n $gte,\n $lt,\n $lte,\n $between,\n $is_today,\n $is_tomorrow,\n $is_yesterday,\n $is_not_today,\n]);\n\nexport const dateFilterValue = z\n .string()\n .nullable()\n .or(z.tuple([z.string(), z.string()]));\nexport const dateFilter = z\n .object({\n type: z.literal(\"date\"),\n operator: dateFilterOperators,\n value: dateFilterValue,\n })\n .merge(baseFilter);\n\nexport type IDateFilter = z.infer<typeof dateFilter>;\nexport type IDateFilterValue = z.infer<typeof dateFilterValue>;\nexport type IDateFilterOperator = z.infer<typeof dateFilterOperators>;\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type INumberFieldValue } from \"./number-field.type\";\n\nexport class NumberFieldValue extends FieldValueBase<INumberFieldValue> {\n constructor(value: INumberFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.number(this);\n }\n}\n","import { z } from \"zod\";\n\nexport const numberFieldValue = z.number().or(z.null());\nexport type INumberFieldValue = z.infer<typeof numberFieldValue>;\n","import { z } from \"zod\";\nimport {\n $eq,\n $gt,\n $gte,\n $is_empty,\n $is_not_empty,\n $lt,\n $lte,\n $neq,\n} from \"../../operators\";\nimport { baseFilter } from \"../../base.filter\";\n\nexport const numberFilterOperators = z.union([\n $eq,\n $neq,\n $gt,\n $gte,\n $lt,\n $lte,\n $is_empty,\n $is_not_empty,\n]);\nexport type INumberFilterOperators = z.infer<typeof numberFilterOperators>;\n\nexport const numberFilterValue = z.number().nullable();\nexport const numberFilter = z\n .object({\n type: z.literal(\"number\"),\n operator: numberFilterOperators,\n value: numberFilterValue,\n })\n .merge(baseFilter);\n\nexport type INumberFilter = z.infer<typeof numberFilter>;\nexport type INumberFilterValue = z.infer<typeof numberFilterValue>;\n","import { FieldValueBase } from \"../field-value.base\";\nimport { type IFieldValueVisitor } from \"../field-value.visitor\";\nimport { type IStringFieldValue } from \"./string-field.type\";\n\nexport class StringFieldValue extends FieldValueBase<IStringFieldValue> {\n constructor(value: IStringFieldValue) {\n super({ value });\n }\n\n accept(visitor: IFieldValueVisitor): void {\n visitor.string(this);\n }\n}\n","import { z } from \"zod\";\n\nexport const stringFieldValue = z.string().nullable();\nexport type IStringFieldValue = z.infer<typeof stringFieldValue>;\n","import { z } from \"zod\";\nimport { baseFilter } from \"../../base.filter\";\nimport {\n $eq,\n $neq,\n $contains,\n $not_contains,\n $starts_with,\n $ends_with,\n $regex,\n $is_empty,\n $is_not_empty,\n} from \"../../operators\";\n\nexport const stringFilterOperators = z.union([\n $eq,\n $neq,\n $contains,\n $not_contains,\n $starts_with,\n $ends_with,\n $regex,\n $is_empty,\n $is_not_empty,\n]);\n\nexport const stringFilterValue = z.string().nullable();\nexport const stringFilter = z\n .object({\n type: z.literal(\"string\"),\n operator: stringFilterOperators,\n value: stringFilterValue,\n })\n .merge(baseFilter);\n\nexport type IStringFilter = z.infer<typeof stringFilter>;\nexport type IStringFilterOperator = z.infer<typeof stringFilterOperators>;\n","import type { Option, Result } from \"oxide.ts\";\nimport { None, Ok, Some } from \"oxide.ts\";\n\nexport interface ISpecVisitor {\n or(left: ISpecification, right: ISpecification): this;\n not(): this;\n}\n\nexport interface ISpecification<\n T = any,\n V extends ISpecVisitor = ISpecVisitor,\n> {\n isSatisfiedBy(t: T): boolean;\n mutate(t: T): Result<T, string>;\n accept(v: V): Result<void, string>;\n}\n\nexport abstract class CompositeSpecification<\n T = any,\n V extends ISpecVisitor = ISpecVisitor,\n> implements ISpecification<T, V>\n{\n abstract isSatisfiedBy(t: T): boolean;\n abstract mutate(t: T): Result<T, string>;\n abstract accept(v: V): Result<void, string>;\n\n public and(s: ISpecification<T, V>): CompositeSpecification<T, V> {\n return new And(this, s);\n }\n\n public or(s: ISpecification<T, V>): CompositeSpecification<T, V> {\n return new Or(this, s);\n }\n\n public not(): Not<T, V> {\n return new Not(this);\n }\n}\n\nclass And<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(\n private readonly left: ISpecification<T, V>,\n private readonly right: ISpecification<T, V>,\n ) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return this.left.isSatisfiedBy(t) && this.right.isSatisfiedBy(t);\n }\n\n mutate(t: T): Result<T, string> {\n return this.left.mutate(t).and(this.right.mutate(t));\n }\n\n accept(v: V): Result<void, string> {\n return this.left.accept(v).and(this.right.accept(v));\n }\n}\n\nclass Or<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(\n private readonly left: ISpecification<T, V>,\n private readonly right: ISpecification<T, V>,\n ) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return this.left.isSatisfiedBy(t) || this.right.isSatisfiedBy(t);\n }\n\n mutate(t: T): Result<T, string> {\n return this.left.mutate(t).orElse(() => this.right.mutate(t));\n }\n\n accept(v: V): Result<void, string> {\n v.or(this.left, this.right);\n\n return Ok(undefined);\n }\n}\n\nclass Not<T, V extends ISpecVisitor> extends CompositeSpecification<T, V> {\n constructor(public readonly spec: ISpecification<T, V>) {\n super();\n }\n\n isSatisfiedBy(t: T): boolean {\n return !this.spec.isSatisfiedBy(t);\n }\n\n mutate(): Result<T, string> {\n throw new Error(\"[Not.mutate] Method not implemented.\");\n }\n\n accept(v: V): Result<void, string> {\n return this.spec.accept(v.not());\n }\n}\n\nexport const and = <T, V extends ISpecVisitor>(\n ...specs: CompositeSpecification<T, V>[]\n): Option<CompositeSpecification<T, V>> => {\n if (!specs.length) {\n return None;\n }\n\n let s = specs[0];\n for (const spec of specs.slice(1)) {\n s = s.and(spec);\n }\n\n return Some(s);\n};\n\nexport const andOptions = <T, V extends ISpecVisitor>(\n ...specs: Option<CompositeSpecification<T, V>>[]\n): Option<CompositeSpecification<T, V>> => {\n return and(\n ...specs.filter((spec) => spec.isSome()).map((spec) => spec.unwrap()),\n );\n};\n\nexport const or = <T, V extends ISpecVisitor>(\n ...specs: CompositeSpecification<T, V>[]\n): Option<CompositeSpecification<T, V>> => {\n if (!specs.length) {\n return None;\n }\n\n let s = specs[0];\n for (const spec of specs.slice(1)) {\n s = s.or(spec);\n }\n\n return Some(s);\n};\n","import { type IFilterBaseVisitor } from \"./filter-specification-visitor.base\";\nimport { CompositeSpecification } from \"../specification\";\nimport { type Result } from \"oxide.ts\";\n\nexport abstract class BaseFilterSpecification<\n E = unknown,\n V = unknown,\n> extends CompositeSpecification<E, IFilterBaseVisitor> {\n constructor(\n public readonly field: string,\n public readonly value: V,\n public readonly relation?: string,\n ) {\n super();\n }\n\n mutate(t: E): Result<E, string> {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { DateFieldValue } from \"../fields/date/date-field-value\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\nimport {\n isAfter,\n isBefore,\n isEqual,\n isToday,\n isTomorrow,\n isWithinInterval,\n isYesterday,\n} from \"date-fns\";\n\nexport class DateEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof DateFieldValue && value.equals(this.value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateGreaterThan extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && isAfter(d1, d2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateGreaterThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateLessThan extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && isBefore(d1, d2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateLessThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateGreaterThanOrEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && (isEqual(d1, d2) || isAfter(d1, d2));\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateGreaterThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateLessThanOrEqual extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const d1 = value.unpack();\n const d2 = this.value.unpack();\n\n return !!d1 && !!d2 && (isEqual(d1, d2) || isBefore(d1, d2));\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateLessThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsToday extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isToday(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsToday(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsTomorrow extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isTomorrow(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsTomorrow(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateIsYesterday extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return !!date && isYesterday(date);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateIsYesterday(this);\n\n return Ok(undefined);\n }\n}\n\nexport class DateBetween extends BaseFilterSpecification<\n unknown,\n DateFieldValue\n> {\n constructor(\n public field: string,\n public dateStart: Date,\n public dateEnd: Date,\n public relation?: string,\n ) {\n super(field, null, relation);\n }\n\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof DateFieldValue)) {\n return false;\n }\n\n const date = value.unpack();\n\n return (\n !!date &&\n isWithinInterval(date, { start: this.dateStart, end: this.dateEnd })\n );\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.dateBetween(this);\n\n return Ok(undefined);\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\nimport { NumberFieldValue } from \"../fields/number/number-field-value\";\n\nfunction isNil(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === \"number\";\n}\n\nexport class NumberEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof NumberFieldValue && value.equals(this.value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberGreaterThan extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n if (n1 === null && isNumber(n2)) {\n return true;\n }\n\n return n1 !== null && n2 !== null && n1 > n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberGreaterThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberLessThan extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n\n return n1 !== null && n2 !== null && n1 < n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberLessThan(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberGreaterThanOrEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n if (n1 === null && isNumber(n2)) {\n return true;\n }\n\n return n1 !== null && n2 !== null && n1 >= n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberGreaterThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberLessThanOrEqual extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof NumberFieldValue)) {\n return false;\n }\n const n1 = value.unpack();\n const n2 = this.value.unpack();\n\n return n1 !== null && n2 !== null && n1 <= n2;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberLessThanOrEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class NumberEmpty extends BaseFilterSpecification<\n unknown,\n NumberFieldValue\n> {\n constructor(public readonly field: string) {\n super(field, new NumberFieldValue(null));\n }\n\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof NumberFieldValue && isNil(value.unpack());\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.numberEmpty(this);\n\n return Ok(undefined);\n }\n}\n","import { Ok, type Result } from \"oxide.ts\";\nimport { StringFieldValue } from \"../fields/string/string-field-value\";\nimport { type IFilterBaseVisitor } from \"../filter-specification-visitor.base\";\nimport { BaseFilterSpecification } from \"../filter-specification.base\";\n\nexport class StringEqual extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof StringFieldValue && this.value.equals(value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringNotEqual extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n return value instanceof StringFieldValue && this.value.equals(value);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringNotEqual(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringContain extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.includes(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringContain(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringStartsWith extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.startsWith(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringStartsWith(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringEndsWith extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && s1.endsWith(s2);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEndsWith(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringRegex extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n isSatisfiedBy(value: unknown): boolean {\n if (!(value instanceof StringFieldValue)) {\n return false;\n }\n\n const s1 = value.unpack();\n const s2 = this.value.unpack();\n\n return !!s1 && !!s2 && new RegExp(s2).test(s1);\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringRegex(this);\n\n return Ok(undefined);\n }\n}\n\nexport class StringEmpty extends BaseFilterSpecification<\n unknown,\n StringFieldValue\n> {\n constructor(field: string) {\n super(field, new StringFieldValue(null));\n }\n\n isSatisfiedBy(value: unknown): boolean {\n if (value instanceof StringFieldValue) {\n return !value.unpack();\n }\n\n return !value;\n }\n\n accept(v: IFilterBaseVisitor): Result<void, string> {\n v.stringEmpty(this);\n\n return Ok(undefined);\n }\n}\n","import { None, Some, type Option } from \"oxide.ts\";\nimport { match } from \"ts-pattern\";\nimport { z } from \"zod\";\nimport { conjunctions, type IConjunction } from \"./conjunction\";\nimport { booleanFilter, IBooleanFilter } from \"./fields\";\nimport { DateFieldValue } from \"./fields/date/date-field-value\";\nimport { dateFilter, type IDateFilter } from \"./fields/date/date.filter\";\nimport { NumberFieldValue } from \"./fields/number/number-field-value\";\nimport {\n numberFilter,\n numberFilterOperators,\n type INumberFilter,\n} from \"./fields/number/number.filter\";\nimport { StringFieldValue } from \"./fields/string/string-field-value\";\nimport {\n stringFilter,\n stringFilterOperators,\n type IStringFilter,\n} from \"./fields/string/string.filter\";\nimport { type BaseFilterSpecification } from \"./filter-specification.base\";\nimport { DateBetween, DateEqual } from \"./specifications/date.specification\";\nimport {\n NumberEmpty,\n NumberEqual,\n NumberGreaterThan,\n NumberGreaterThanOrEqual,\n NumberLessThan,\n NumberLessThanOrEqual,\n} from \"./specifications/number.specification\";\nimport {\n StringContain,\n StringEmpty,\n StringEndsWith,\n StringEqual,\n StringNotEqual,\n StringRegex,\n StringStartsWith,\n} from \"./specifications/string.specification\";\n\nexport const filterRoorFilter = <T extends z.ZodType>(filters: [T, ...T[]]) => {\n const filterTuple: [T, ...T[]] = [filters[0], ...filters.slice(1)];\n\n const filter = z.union(filterTuple as [T, T, ...T[]]);\n\n const group: z.ZodType<{\n conjunction?: IConjunction;\n children?: (z.infer<typeof group> | z.infer<typeof filter>)[];\n }> = z.lazy(() =>\n z.object({\n conjunction: conjunctions,\n children: z.union([group, filter]).array().nonempty().optional(),\n })\n );\n\n const filterOrGroup = filter.or(group);\n type IFilterOrGroup = z.infer<typeof filterOrGroup>;\n const filterOrGroupList = filterOrGroup.array();\n\n return group.or(filterOrGroupList);\n};\n\nconst filter = z.discriminatedUnion(\"type\", [\n numberFilter,\n stringFilter,\n dateFilter,\n booleanFilter,\n]);\n\nexport type IFilter = z.infer<typeof filter>;\nexport type IFilters = IFilter[];\n\nexport interface IGroup<Filter extends IFilter = IFilter> {\n conjunction?: IConjunction;\n children?: IFilterOrGroupList<Filter>;\n}\n\nconst group: z.ZodType<IGroup> = z.lazy(() =>\n z.object({\n conjunction: conjunctions,\n children: z.union([group, filter]).array().nonempty().optional(),\n })\n);\n\nconst filterOrGroup = filter.or(group);\nexport type IFilterOrGroup<Filter extends IFilter = IFilter> =\n | Filter\n | IGroup<Filter>;\n\nexport const filterOrGroupList = filterOrGroup.array();\nexport type IFilterOrGroupList<Filter extends IFilter = IFilter> =\n IFilterOrGroup<Filter>[];\nexport const rootFilter = filterOrGroup.or(filterOrGroupList);\nexport type IRootFilter<Filter extends IFilter = IFilter> =\n | IFilterOrGroup<Filter>\n | IFilterOrGroupList<Filter>;\n\nexport const isGroup = (\n filterOrGroup: IFilterOrGroup\n): filterOrGroup is IGroup => {\n return Reflect.has(filterOrGroup, \"conjunction\");\n};\n\nexport const isFilter = (\n filterOrGroup: IFilterOrGroup\n): filterOrGroup is IFilter => {\n return (\n Reflect.has(filterOrGroup, \"type\") && Reflect.has(filterOrGroup, \"operator\")\n );\n};\n\nexport const operators = z.union([\n numberFilterOperators,\n stringFilterOperators,\n]);\nexport type IOperator = z.infer<typeof operators>;\n\ntype IFieldType = \"number\";\n\nexport const operatorsMap: Record<IFieldType, IOperator[]> = {\n number: numberFilterOperators.options.map((v) => v.value),\n};\n\nconst convertStringFilter = (\n filter: IStringFilter\n): Option<BaseFilterSpecification> => {\n if (filter.value === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\": {\n return Some(\n new StringEqual(\n filter.field,\n new StringFieldValue(filter.value),\n filter.relation\n )\n );\n }\n case \"$neq\": {\n return Some(\n new StringNotEqual(\n filter.field,\n new StringFieldValue(filter.value),\n filter.relation\n )\n );\n }\n case \"$contains\": {\n return Some(\n new StringContain(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$not_contains\": {\n return Some(\n new StringContain(\n filter.field,\n new StringFieldValue(filter.value)\n ).not() as unknown as BaseFilterSpecification\n );\n }\n case \"$starts_with\": {\n return Some(\n new StringStartsWith(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$ends_with\": {\n return Some(\n new StringEndsWith(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$regex\": {\n return Some(\n new StringRegex(filter.field, new StringFieldValue(filter.value))\n );\n }\n case \"$is_empty\": {\n return Some(new StringEmpty(filter.field));\n }\n case \"$is_not_empty\": {\n return Some(\n new StringEmpty(\n filter.field\n ).not() as unknown as BaseFilterSpecification\n );\n }\n\n default:\n return None;\n }\n};\n\nconst convertNumberFilter = (\n filter: INumberFilter\n): Option<BaseFilterSpecification> => {\n if (filter === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\":\n return Some(\n new NumberEqual(filter.field, new NumberFieldValue(filter.value))\n );\n case \"$neq\": {\n // @ts-ignore\n return Some(\n new NumberEqual(filter.field, new NumberFieldValue(filter.value)).not()\n );\n }\n case \"$gt\": {\n return Some(\n new NumberGreaterThan(filter.field, new NumberFieldValue(filter.value))\n );\n }\n case \"$gte\": {\n return Some(\n new NumberGreaterThanOrEqual(\n filter.field,\n new NumberFieldValue(filter.value)\n )\n );\n }\n case \"$lt\": {\n return Some(\n new NumberLessThan(filter.field, new NumberFieldValue(filter.value))\n );\n }\n case \"$lte\": {\n return Some(\n new NumberLessThanOrEqual(\n filter.field,\n new NumberFieldValue(filter.value)\n )\n );\n }\n case \"$is_empty\": {\n return Some(new NumberEmpty(filter.field));\n }\n case \"$is_not_empty\": {\n // @ts-ignore\n return Some(new NumberEmpty(filter.field).not());\n }\n default:\n return None;\n }\n};\n\nconst convertBooleanFilter = (\n filter: IBooleanFilter\n): Option<BaseFilterSpecification> => {\n if (filter === undefined) {\n return None;\n }\n};\n\nconst convertDateFilter = (\n filter: IDateFilter\n): Option<BaseFilterSpecification> => {\n if (filter === undefined) {\n return None;\n }\n\n switch (filter.operator) {\n case \"$eq\": {\n return Some(\n new DateEqual(\n filter.field,\n DateFieldValue.fromNullableString(filter.value as string),\n filter.relation\n )\n );\n }\n case \"$between\": {\n return Some(\n new DateBetween(\n filter.field,\n new Date((filter.value as [string, string])[0]),\n new Date((filter.value as [string, string])[1])\n )\n );\n }\n }\n};\n\nconst convertFilter = (filter: IFilter): Option<BaseFilterSpecification> => {\n return match(filter)\n .returnType<Option<BaseFilterSpecification>>()\n .with({ type: \"number\" }, (f) => convertNumberFilter(f))\n .with({ type: \"string\" }, (f) => convertStringFilter(f))\n .with({ type: \"date\" }, (f) => convertDateFilter(f))\n .with({ type: \"boolean\" }, (f) => convertBooleanFilter(f))\n .otherwise(() => None);\n};\n\nconst convertFilterOrGroup = (\n filterOrGroup: IFilterOrGroup\n): Option<BaseFilterSpecification> => {\n if (isGroup(filterOrGroup)) {\n return convertFilterOrGroupList(\n filterOrGroup.children,\n filterOrGroup.conjunction\n );\n } else if (isFilter(filterOrGroup)) {\n return convertFilter(filterOrGroup);\n }\n\n return None;\n};\n\nconst convertFilterOrGroupList = (\n filterOrGroupList: IFilterOrGroupList = [],\n conjunction: IConjunction = \"$and\"\n): Option<BaseFilterSpecification> => {\n let spec: Option<BaseFilterSpecification> = None;\n for (const filter of filterOrGroupList) {\n if (spec.isNone()) {\n spec = convertFilterOrGroup(filter);\n if (conjunction === \"$not\") {\n // @ts-ignore\n return spec.map((s) => s.not());\n }\n } else {\n if (isFilter(filter)) {\n // @ts-ignore\n spec = spec.map((left) => {\n const right = convertFilterOrGroup(filter);\n if (right.isSome()) {\n if (conjunction === \"$and\") {\n return left.and(right.unwrap());\n } else if (conjunction === \"$or\") {\n return left.or(right.unwrap());\n }\n\n return left.and(right.unwrap().not());\n }\n\n return left;\n });\n } else if (isGroup(filter)) {\n spec = convertFilterOrGroupList(filter.children, filter.conjunction);\n }\n }\n }\n\n return spec;\n};\n\nexport const convertFilterSpec = (\n filter: IRootFilter\n): Option<BaseFilterSpecification> => {\n if (Array.isArray(filter)) {\n return convertFilterOrGroupList(filter);\n }\n\n return convertFilterOrGroup(filter);\n};\n\nfunction isEmptyNative(value: unknown): boolean {\n if (value == null) return true;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") {\n for (const _ in value as object) {\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport const isEmptyFilter = (filter: IRootFilter) => isEmptyNative(filter);\n","import { type Option } from \"oxide.ts\";\nimport { ValueObject } from \"../value-objects/value-object\";\nimport {\n type IFilter,\n type IRootFilter,\n convertFilterSpec,\n isGroup,\n} from \"./filter\";\nimport { type BaseFilterSpecification } from \"./filter-specification.base\";\n\nexport class RootFilter<T extends IFilter = IFilter> extends ValueObject<\n IRootFilter<T>\n> {\n get value() {\n return this.props;\n }\n\n get group() {\n if (Array.isArray(this.value)) {\n return { conjunction: \"$and\", children: this.value };\n }\n if (isGroup(this.value)) {\n return this.value;\n }\n\n return { conjunction: \"$and\", children: [this.value] };\n }\n\n getSpec(): Option<BaseFilterSpecification> {\n return convertFilterSpec(this.value);\n }\n\n public toJSON() {\n return this.props;\n }\n}\n","import { z } from \"zod\";\n\nexport const paginationSchema = z.object({\n limit: z.coerce.number().positive().int().default(10).optional(),\n offset: z.coerce.number().nonnegative().int().default(0).optional(),\n});\n\nexport type IPagination = z.infer<typeof paginationSchema>;\n\nexport const paginatedResponseSchema = paginationSchema.extend({\n total: z.number().nonnegative().int(),\n});\n","export abstract class Query {}\n","import { z } from \"zod\";\n\n// TODO: base sort with possibility limit sorting fields for concrete entity\nexport const sortingSchema = z.record(z.string(), z.enum([\"ASC\", \"DESC\"]));\n\nexport type ISorting = z.infer<typeof sortingSchema>;\n","import { ValueObject } from \"./value-object.js\";\n\nexport class BoolVO extends ValueObject<boolean> {\n constructor(value: boolean) {\n super({ value });\n }\n\n public get value(): boolean {\n return this.props.value;\n }\n\n public static fromBoolean(value: boolean) {\n return new BoolVO(value);\n }\n\n public static True(): BoolVO {\n return new BoolVO(true);\n }\n\n public static False(): BoolVO {\n return new BoolVO(false);\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class DateVO extends ValueObject<Date> {\n constructor(value: Date | string | number) {\n const date = new Date(value);\n super({ value: date });\n }\n\n public get value(): Date {\n return this.props.value;\n }\n\n public static fromDate(value: Date) {\n return new DateVO(value);\n }\n\n public static now(): DateVO {\n return new DateVO(Date.now());\n }\n}\n","import { ValueObject } from \"./value-object\";\n\nexport abstract class ID extends ValueObject<number> {\n constructor(value: number) {\n super({ value });\n }\n\n public get value(): number {\n return this.props.value;\n }\n}\n","import { customAlphabet } from \"nanoid\";\nimport { ID } from \"./id.vo.js\";\n\nexport abstract class NanoID extends ID {\n private static ALPHABETS = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n static createId(prefix = \"\", size = 5) {\n const id = customAlphabet(NanoID.ALPHABETS, size)();\n\n return prefix + id;\n }\n\n public get value(): number {\n return this.props.value;\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class IntegerVO extends ValueObject<number> {\n constructor(value: number) {\n super({ value });\n }\n\n public get value(): number {\n return this.props.value;\n }\n\n public static fromNumber(value: number) {\n return new IntegerVO(value);\n }\n}\n","import { ValueObject } from \"./value-object.js\";\n\nexport class StringVO extends ValueObject<string> {\n constructor(value: string) {\n super({ value });\n }\n\n public get value(): string {\n return this.props.value;\n }\n\n public static fromString(value: string) {\n return new StringVO(value);\n }\n\n public static empty(): StringVO {\n return new StringVO(\"\");\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@globalart/ddd",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "Advanced Domain-Driven Design",
5
5
  "author": {
6
6
  "name": "GlobalArt, Inc"