@dereekb/date 10.0.5 → 10.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/index.cjs.d.ts +1 -0
  2. package/index.cjs.js +9264 -0
  3. package/index.esm.js +9957 -0
  4. package/package.json +17 -3
  5. package/src/lib/date/date.calendar.d.ts +1 -1
  6. package/src/lib/date/date.cell.d.ts +3 -3
  7. package/src/lib/date/date.cell.factory.d.ts +5 -5
  8. package/src/lib/date/date.cell.filter.d.ts +3 -3
  9. package/src/lib/date/date.cell.index.d.ts +4 -3
  10. package/src/lib/date/date.cell.schedule.d.ts +7 -7
  11. package/src/lib/date/date.cell.schedule.day.d.ts +2 -2
  12. package/src/lib/date/date.cell.validator.d.ts +2 -2
  13. package/src/lib/date/date.cell.week.d.ts +3 -3
  14. package/src/lib/date/date.d.ts +1 -1
  15. package/src/lib/date/date.day.d.ts +3 -3
  16. package/src/lib/date/date.duration.d.ts +2 -2
  17. package/src/lib/date/date.format.d.ts +3 -4
  18. package/src/lib/date/date.logical.d.ts +1 -1
  19. package/src/lib/date/date.range.d.ts +1 -1
  20. package/src/lib/date/date.range.string.d.ts +2 -2
  21. package/src/lib/date/date.range.timezone.d.ts +2 -2
  22. package/src/lib/date/date.rxjs.d.ts +3 -3
  23. package/src/lib/date/date.sort.d.ts +2 -2
  24. package/src/lib/date/date.time.d.ts +3 -3
  25. package/src/lib/date/date.time.limit.d.ts +3 -3
  26. package/src/lib/date/date.time.minute.d.ts +4 -4
  27. package/src/lib/date/date.timezone.d.ts +2 -2
  28. package/src/lib/date/date.unix.d.ts +1 -1
  29. package/src/lib/date/date.week.d.ts +3 -3
  30. package/src/lib/expires/expires.d.ts +1 -1
  31. package/src/lib/expires/expires.rxjs.d.ts +3 -3
  32. package/src/lib/query/query.builder.d.ts +2 -2
  33. package/src/lib/query/query.builder.mongo.d.ts +2 -2
  34. package/src/lib/query/query.filter.d.ts +2 -2
  35. package/src/lib/query/query.request.d.ts +2 -2
  36. package/src/lib/rrule/date.recurrence.d.ts +4 -4
  37. package/src/lib/rrule/date.rrule.d.ts +5 -5
  38. package/src/lib/rrule/date.rrule.extension.d.ts +1 -1
  39. package/src/lib/rrule/date.rrule.parse.d.ts +2 -2
  40. package/src/lib/timezone/timezone.d.ts +1 -1
  41. package/src/lib/timezone/timezone.validator.d.ts +2 -2
  42. package/CHANGELOG.md +0 -1488
  43. package/src/index.js +0 -5
  44. package/src/index.js.map +0 -1
  45. package/src/lib/date/date.calendar.js +0 -65
  46. package/src/lib/date/date.calendar.js.map +0 -1
  47. package/src/lib/date/date.cell.factory.js +0 -493
  48. package/src/lib/date/date.cell.factory.js.map +0 -1
  49. package/src/lib/date/date.cell.filter.js +0 -65
  50. package/src/lib/date/date.cell.filter.js.map +0 -1
  51. package/src/lib/date/date.cell.index.js +0 -731
  52. package/src/lib/date/date.cell.index.js.map +0 -1
  53. package/src/lib/date/date.cell.js +0 -574
  54. package/src/lib/date/date.cell.js.map +0 -1
  55. package/src/lib/date/date.cell.schedule.day.js +0 -15
  56. package/src/lib/date/date.cell.schedule.day.js.map +0 -1
  57. package/src/lib/date/date.cell.schedule.js +0 -711
  58. package/src/lib/date/date.cell.schedule.js.map +0 -1
  59. package/src/lib/date/date.cell.validator.js +0 -67
  60. package/src/lib/date/date.cell.validator.js.map +0 -1
  61. package/src/lib/date/date.cell.week.js +0 -40
  62. package/src/lib/date/date.cell.week.js.map +0 -1
  63. package/src/lib/date/date.day.js +0 -207
  64. package/src/lib/date/date.day.js.map +0 -1
  65. package/src/lib/date/date.duration.js +0 -56
  66. package/src/lib/date/date.duration.js.map +0 -1
  67. package/src/lib/date/date.format.js +0 -231
  68. package/src/lib/date/date.format.js.map +0 -1
  69. package/src/lib/date/date.hashset.js +0 -11
  70. package/src/lib/date/date.hashset.js.map +0 -1
  71. package/src/lib/date/date.js +0 -267
  72. package/src/lib/date/date.js.map +0 -1
  73. package/src/lib/date/date.logical.js +0 -61
  74. package/src/lib/date/date.logical.js.map +0 -1
  75. package/src/lib/date/date.range.js +0 -643
  76. package/src/lib/date/date.range.js.map +0 -1
  77. package/src/lib/date/date.range.string.js +0 -19
  78. package/src/lib/date/date.range.string.js.map +0 -1
  79. package/src/lib/date/date.range.timezone.js +0 -29
  80. package/src/lib/date/date.range.timezone.js.map +0 -1
  81. package/src/lib/date/date.round.js +0 -49
  82. package/src/lib/date/date.round.js.map +0 -1
  83. package/src/lib/date/date.rxjs.js +0 -40
  84. package/src/lib/date/date.rxjs.js.map +0 -1
  85. package/src/lib/date/date.sort.js +0 -43
  86. package/src/lib/date/date.sort.js.map +0 -1
  87. package/src/lib/date/date.time.js +0 -240
  88. package/src/lib/date/date.time.js.map +0 -1
  89. package/src/lib/date/date.time.limit.js +0 -99
  90. package/src/lib/date/date.time.limit.js.map +0 -1
  91. package/src/lib/date/date.time.minute.js +0 -144
  92. package/src/lib/date/date.time.minute.js.map +0 -1
  93. package/src/lib/date/date.timezone.js +0 -494
  94. package/src/lib/date/date.timezone.js.map +0 -1
  95. package/src/lib/date/date.unix.js +0 -41
  96. package/src/lib/date/date.unix.js.map +0 -1
  97. package/src/lib/date/date.week.js +0 -263
  98. package/src/lib/date/date.week.js.map +0 -1
  99. package/src/lib/date/index.js +0 -30
  100. package/src/lib/date/index.js.map +0 -1
  101. package/src/lib/expires/expires.js +0 -81
  102. package/src/lib/expires/expires.js.map +0 -1
  103. package/src/lib/expires/expires.rxjs.js +0 -61
  104. package/src/lib/expires/expires.rxjs.js.map +0 -1
  105. package/src/lib/expires/index.js +0 -6
  106. package/src/lib/expires/index.js.map +0 -1
  107. package/src/lib/index.js +0 -9
  108. package/src/lib/index.js.map +0 -1
  109. package/src/lib/query/index.js +0 -8
  110. package/src/lib/query/index.js.map +0 -1
  111. package/src/lib/query/query.builder.js +0 -85
  112. package/src/lib/query/query.builder.js.map +0 -1
  113. package/src/lib/query/query.builder.mongo.js +0 -41
  114. package/src/lib/query/query.builder.mongo.js.map +0 -1
  115. package/src/lib/query/query.filter.js +0 -3
  116. package/src/lib/query/query.filter.js.map +0 -1
  117. package/src/lib/query/query.request.js +0 -3
  118. package/src/lib/query/query.request.js.map +0 -1
  119. package/src/lib/rrule/date.recurrence.js +0 -93
  120. package/src/lib/rrule/date.recurrence.js.map +0 -1
  121. package/src/lib/rrule/date.rrule.extension.js +0 -151
  122. package/src/lib/rrule/date.rrule.extension.js.map +0 -1
  123. package/src/lib/rrule/date.rrule.js +0 -187
  124. package/src/lib/rrule/date.rrule.js.map +0 -1
  125. package/src/lib/rrule/date.rrule.parse.js +0 -135
  126. package/src/lib/rrule/date.rrule.parse.js.map +0 -1
  127. package/src/lib/rrule/index.js +0 -8
  128. package/src/lib/rrule/index.js.map +0 -1
  129. package/src/lib/timezone/index.js +0 -6
  130. package/src/lib/timezone/index.js.map +0 -1
  131. package/src/lib/timezone/timezone.js +0 -66
  132. package/src/lib/timezone/timezone.js.map +0 -1
  133. package/src/lib/timezone/timezone.validator.js +0 -26
  134. package/src/lib/timezone/timezone.validator.js.map +0 -1
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeMongoDBLikeDateQueryBuilder = exports.mergeMongoDBLikeRangeFilters = void 0;
4
- function mergeMongoDBLikeRangeFilters(startsAt, endsAt) {
5
- var _a, _b;
6
- return {
7
- $lte: (_a = startsAt === null || startsAt === void 0 ? void 0 : startsAt.$lte) !== null && _a !== void 0 ? _a : endsAt === null || endsAt === void 0 ? void 0 : endsAt.$lte,
8
- $gte: (_b = endsAt === null || endsAt === void 0 ? void 0 : endsAt.$gte) !== null && _b !== void 0 ? _b : startsAt === null || startsAt === void 0 ? void 0 : startsAt.$gte
9
- };
10
- }
11
- exports.mergeMongoDBLikeRangeFilters = mergeMongoDBLikeRangeFilters;
12
- function makeMongoDBLikeDateQueryBuilder(config) {
13
- const { fields } = config;
14
- return {
15
- makeRangeFilter(gte, lte) {
16
- let result;
17
- if (gte || lte) {
18
- result = Object.assign(Object.assign({}, (gte ? { $gte: gte } : undefined)), (lte ? { $lte: lte } : undefined));
19
- }
20
- return result;
21
- },
22
- makeFieldFilter({ startsAt, endsAt }) {
23
- let startsAtFilter;
24
- let endsAtFilter;
25
- if (fields.singleFieldForStartAndEnd) {
26
- // A single field that manages start/end will start and end at the same instant (end = start)
27
- // so we merge the gte/lte values.
28
- const merged = mergeMongoDBLikeRangeFilters(startsAt, endsAt);
29
- startsAtFilter = merged ? { [fields.start]: merged } : undefined;
30
- }
31
- else {
32
- startsAtFilter = startsAt ? { [fields.start]: startsAt } : undefined;
33
- endsAtFilter = endsAt && fields.end ? { [fields.end]: endsAt } : undefined;
34
- }
35
- const filter = Object.assign(Object.assign({}, startsAtFilter), endsAtFilter);
36
- return filter;
37
- }
38
- };
39
- }
40
- exports.makeMongoDBLikeDateQueryBuilder = makeMongoDBLikeDateQueryBuilder;
41
- //# sourceMappingURL=query.builder.mongo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.builder.mongo.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/query/query.builder.mongo.ts"],"names":[],"mappings":";;;AAgBA,SAAgB,4BAA4B,CAAC,QAA2C,EAAE,MAAyC;;IACjI,OAAO;QACL,IAAI,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI;QACpC,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI;KACrC,CAAC;AACJ,CAAC;AALD,oEAKC;AAMD,SAAgB,+BAA+B,CAAC,MAA6C;IAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1B,OAAO;QACL,eAAe,CAAC,GAAgB,EAAE,GAAgB;YAChD,IAAI,MAAyC,CAAC;YAE9C,IAAI,GAAG,IAAI,GAAG,EAAE;gBACd,MAAM,mCACD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GACjC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CACrC,CAAC;aACH;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAoD;YACpF,IAAI,cAAc,CAAC;YACnB,IAAI,YAAY,CAAC;YAEjB,IAAI,MAAM,CAAC,yBAAyB,EAAE;gBACpC,6FAA6F;gBAC7F,kCAAkC;gBAClC,MAAM,MAAM,GAA+B,4BAA4B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC1F,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aAClE;iBAAM;gBACL,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrE,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aAC5E;YAED,MAAM,MAAM,mCACP,cAAc,GACd,YAAY,CAChB,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAtCD,0EAsCC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=query.filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.filter.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/query/query.filter.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=query.request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.request.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/query/query.request.ts"],"names":[],"mappings":""}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModelRecurrenceInfoUtility = exports.ModelRecurrenceInfo = void 0;
4
- const tslib_1 = require("tslib");
5
- const class_transformer_1 = require("class-transformer");
6
- const date_rrule_1 = require("./date.rrule");
7
- const date_rrule_parse_1 = require("./date.rrule.parse");
8
- const class_validator_1 = require("class-validator");
9
- /**
10
- * Indexed recurrence information for a model with recurrence information.
11
- */
12
- let ModelRecurrenceInfo = exports.ModelRecurrenceInfo = class ModelRecurrenceInfo {
13
- constructor(template) {
14
- if (template != null) {
15
- this.timezone = template.timezone;
16
- this.rrule = template.rrule;
17
- this.start = template.start;
18
- this.end = template.end;
19
- this.forever = template.forever;
20
- }
21
- }
22
- };
23
- tslib_1.__decorate([
24
- (0, class_transformer_1.Expose)(),
25
- (0, class_validator_1.IsOptional)(),
26
- (0, class_validator_1.IsString)(),
27
- tslib_1.__metadata("design:type", String)
28
- ], ModelRecurrenceInfo.prototype, "timezone", void 0);
29
- tslib_1.__decorate([
30
- (0, class_transformer_1.Expose)(),
31
- (0, class_validator_1.IsString)(),
32
- tslib_1.__metadata("design:type", String)
33
- ], ModelRecurrenceInfo.prototype, "rrule", void 0);
34
- tslib_1.__decorate([
35
- (0, class_transformer_1.Expose)(),
36
- (0, class_transformer_1.Type)(() => Date),
37
- tslib_1.__metadata("design:type", Date)
38
- ], ModelRecurrenceInfo.prototype, "start", void 0);
39
- tslib_1.__decorate([
40
- (0, class_transformer_1.Expose)(),
41
- (0, class_transformer_1.Type)(() => Date),
42
- tslib_1.__metadata("design:type", Date)
43
- ], ModelRecurrenceInfo.prototype, "end", void 0);
44
- tslib_1.__decorate([
45
- (0, class_transformer_1.Expose)(),
46
- (0, class_validator_1.IsOptional)(),
47
- (0, class_validator_1.IsBoolean)(),
48
- tslib_1.__metadata("design:type", Boolean)
49
- ], ModelRecurrenceInfo.prototype, "forever", void 0);
50
- exports.ModelRecurrenceInfo = ModelRecurrenceInfo = tslib_1.__decorate([
51
- (0, class_transformer_1.Exclude)(),
52
- tslib_1.__metadata("design:paramtypes", [ModelRecurrenceInfo])
53
- ], ModelRecurrenceInfo);
54
- /**
55
- * Used for expanding a ModelRecurrenceUpdate into ModelRecurrenceInfo.
56
- */
57
- class ModelRecurrenceInfoUtility {
58
- /**
59
- * Creates a ModelRecurrenceInfo instance from the input ModelRecurrenceStart.
60
- */
61
- static expandModelRecurrenceStartToModelRecurrenceInfo(update) {
62
- var _a;
63
- const { date, rrule, timezone } = update;
64
- const dateRRule = date_rrule_1.DateRRuleUtility.makeInstance({
65
- rruleStringLineSet: rrule,
66
- options: {
67
- date
68
- }
69
- });
70
- const dates = dateRRule.getRecurrenceDateRange();
71
- const rruleSetString = date_rrule_parse_1.DateRRuleParseUtility.toRRuleLines(rrule);
72
- const recurrenceInfo = {
73
- timezone,
74
- rrule: rruleSetString,
75
- start: dates.start,
76
- end: (_a = dates.finalRecurrenceEndsAt) !== null && _a !== void 0 ? _a : dates.end,
77
- forever: dates.forever
78
- };
79
- return new ModelRecurrenceInfo(recurrenceInfo);
80
- }
81
- static makeDateRRuleInstance(info, date) {
82
- const { rrule, timezone } = info;
83
- return date_rrule_1.DateRRuleUtility.makeInstance({
84
- rruleLines: rrule,
85
- options: {
86
- date,
87
- timezone
88
- }
89
- });
90
- }
91
- }
92
- exports.ModelRecurrenceInfoUtility = ModelRecurrenceInfoUtility;
93
- //# sourceMappingURL=date.recurrence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.recurrence.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.recurrence.ts"],"names":[],"mappings":";;;;AAAA,yDAA0D;AAE1D,6CAAmE;AACnE,yDAA2F;AAE3F,qDAAkE;AASlE;;GAEG;AAEI,IAAM,mBAAmB,iCAAzB,MAAM,mBAAmB;IAwC9B,YAAY,QAA8B;QACxC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;SACjC;IACH,CAAC;CACF,CAAA;AAxCC;IAHC,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACe;AAO1B;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;kDACQ;AAOnB;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACT,IAAI;kDAAC;AAOb;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACX,IAAI;gDAAC;AAQX;IAHC,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;oDACM;8BAtCP,mBAAmB;IAD/B,IAAA,2BAAO,GAAE;6CAyCe,mBAAmB;GAxC/B,mBAAmB,CAiD/B;AAmBD;;GAEG;AACH,MAAa,0BAA0B;IACrC;;OAEG;IACH,MAAM,CAAC,+CAA+C,CAAC,MAA4B;;QACjF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAEzC,MAAM,SAAS,GAAG,6BAAgB,CAAC,YAAY,CAAC;YAC9C,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE;gBACP,IAAI;aACL;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAe,wCAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,cAAc,GAAG;YACrB,QAAQ;YACR,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,MAAA,KAAK,CAAC,qBAAqB,mCAAI,KAAK,CAAC,GAAG;YAC7C,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QAEF,OAAO,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,IAAyB,EAAE,IAAkB;QACxE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEjC,OAAO,6BAAgB,CAAC,YAAY,CAAC;YACnC,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE;gBACP,IAAI;gBACJ,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAvCD,gEAuCC"}
@@ -1,151 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnyIterResult = exports.NextIterResult = exports.LastIterResult = exports.DateRRule = exports.DEFAULT_LAST_ITER_RESULT_MAX_ITERATIONS_ALLOWED = void 0;
4
- const date_1 = require("../date/date");
5
- const rrule_1 = require("rrule");
6
- // TODO: Fix typings in RRule, or better yet, add the given types up to RRule.
7
- exports.DEFAULT_LAST_ITER_RESULT_MAX_ITERATIONS_ALLOWED = 10000;
8
- class DateRRule extends rrule_1.RRule {
9
- /**
10
- * Returns the last occurence that occurs in the rule chain.
11
- *
12
- * @returns
13
- */
14
- last() {
15
- return this._iter(new LastIterResult());
16
- }
17
- /**
18
- * Returns the next recurrence that occurs on/after the input date.
19
- *
20
- * @returns
21
- */
22
- next(minDate) {
23
- return this._iter(new NextIterResult(minDate));
24
- }
25
- /**
26
- * Returns any recurrence between the input min and max dates, if specified.
27
- *
28
- * @param minDate
29
- * @param maxDate
30
- * @returns
31
- */
32
- any(filter = {}) {
33
- return this._iter(new AnyIterResult(filter)) != null;
34
- }
35
- }
36
- exports.DateRRule = DateRRule;
37
- /**
38
- * Used for typing information. Unused otherwise.
39
- */
40
- class BaseRRuleIter {
41
- constructor() {
42
- this.method = 'before';
43
- this.minDate = undefined;
44
- this.maxDate = undefined;
45
- this._result = undefined;
46
- this.args = undefined;
47
- this.total = 0;
48
- this._value = null;
49
- }
50
- getValue() {
51
- return this._value;
52
- }
53
- }
54
- /**
55
- * Used by DateRRule to find the last result.
56
- */
57
- class LastIterResult extends BaseRRuleIter {
58
- constructor(maxIterationsAllowed = exports.DEFAULT_LAST_ITER_RESULT_MAX_ITERATIONS_ALLOWED) {
59
- super();
60
- this.maxIterationsAllowed = maxIterationsAllowed;
61
- this.maxDate = (0, date_1.maxFutureDate)();
62
- }
63
- accept(date) {
64
- ++this.total;
65
- const tooLate = date > this.maxDate;
66
- if (tooLate) {
67
- return false;
68
- }
69
- else {
70
- this.add(date);
71
- const maxIterationReached = this.total >= this.maxIterationsAllowed;
72
- return !maxIterationReached;
73
- }
74
- }
75
- add(date) {
76
- this._value = date;
77
- return true;
78
- }
79
- clone() {
80
- return new LastIterResult(this.maxIterationsAllowed);
81
- }
82
- }
83
- exports.LastIterResult = LastIterResult;
84
- class NextIterResult extends BaseRRuleIter {
85
- constructor(minDate, maxIterationsAllowed = exports.DEFAULT_LAST_ITER_RESULT_MAX_ITERATIONS_ALLOWED) {
86
- super();
87
- this.minDate = minDate;
88
- this.maxIterationsAllowed = maxIterationsAllowed;
89
- this.maxDate = this.minDate;
90
- }
91
- accept(date) {
92
- this.total += 1;
93
- const tooEarly = this.minDate > date;
94
- if (tooEarly) {
95
- const maxIterationReached = this.total >= this.maxIterationsAllowed;
96
- return !maxIterationReached;
97
- }
98
- else {
99
- this.add(date);
100
- return false;
101
- }
102
- }
103
- add(date) {
104
- this._value = date;
105
- return false;
106
- }
107
- clone() {
108
- return new NextIterResult(this.minDate, this.maxIterationsAllowed);
109
- }
110
- }
111
- exports.NextIterResult = NextIterResult;
112
- class AnyIterResult extends BaseRRuleIter {
113
- constructor(filter, maxIterationsAllowed = exports.DEFAULT_LAST_ITER_RESULT_MAX_ITERATIONS_ALLOWED) {
114
- var _a, _b;
115
- super();
116
- this.maxIterationsAllowed = maxIterationsAllowed;
117
- this.minDate = null;
118
- this.maxDate = null;
119
- if (filter) {
120
- this.minDate = (_a = filter.minDate) !== null && _a !== void 0 ? _a : null;
121
- this.maxDate = (_b = filter.maxDate) !== null && _b !== void 0 ? _b : null;
122
- }
123
- }
124
- accept(date) {
125
- ++this.total;
126
- const tooEarly = this.minDate != null && this.minDate > date;
127
- if (tooEarly) {
128
- const maxIterationReached = this.total >= this.maxIterationsAllowed;
129
- return !maxIterationReached;
130
- }
131
- else {
132
- const tooLate = this.maxDate != null && this.maxDate < date;
133
- if (tooLate) {
134
- return true;
135
- }
136
- else {
137
- this.add(date);
138
- return false;
139
- }
140
- }
141
- }
142
- add(date) {
143
- this._value = date;
144
- return false;
145
- }
146
- clone() {
147
- return new AnyIterResult({ minDate: this.minDate, maxDate: this.maxDate });
148
- }
149
- }
150
- exports.AnyIterResult = AnyIterResult;
151
- //# sourceMappingURL=date.rrule.extension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.rrule.extension.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.rrule.extension.ts"],"names":[],"mappings":"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"}
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DateRRuleUtility = exports.DateRRuleInstance = void 0;
4
- const rrule_1 = require("rrule");
5
- const date_1 = require("../date");
6
- const date_timezone_1 = require("../date/date.timezone");
7
- const date_rrule_extension_1 = require("./date.rrule.extension");
8
- const date_rrule_parse_1 = require("./date.rrule.parse");
9
- class DateRRuleInstance {
10
- /**
11
- * Creates a new DateRRuleInstance from the input.
12
- */
13
- static make(params) {
14
- var _a, _b;
15
- if (!(params.rruleLines || params.rruleStringLineSet)) {
16
- throw new Error('Missing rruleLines or rruleStringLineSet input.');
17
- }
18
- const rruleStringLineSet = (_a = params.rruleStringLineSet) !== null && _a !== void 0 ? _a : date_rrule_parse_1.DateRRuleParseUtility.toRRuleStringSet(params.rruleLines);
19
- const rruleOptions = DateRRuleUtility.toRRuleOptions(rruleStringLineSet);
20
- const exclude = rruleOptions.exdates.addAll((_b = params.options.exclude) === null || _b === void 0 ? void 0 : _b.valuesArray());
21
- const rrule = new date_rrule_extension_1.DateRRule(rruleOptions.options);
22
- return new DateRRuleInstance(rrule, Object.assign(Object.assign({}, params.options), { exclude }));
23
- }
24
- constructor(rrule, options) {
25
- var _a, _b;
26
- this.options = options;
27
- const tzid = rrule.origOptions.tzid;
28
- let dtstart = rrule.origOptions.dtstart;
29
- const timezone = tzid || options.timezone;
30
- /**
31
- * The normal instance for DateRRuleInstance is used backwards in most cases because DateRRule always
32
- * parses dates as UTC, so we handle all input dates as base dates, an
33
- */
34
- this.normalInstance = new date_timezone_1.DateTimezoneUtcNormalInstance(timezone);
35
- if (dtstart && tzid) {
36
- // Date was passed to both. The dtstart is the base UTC date, but correct for RRule.
37
- }
38
- else if (timezone) {
39
- const startsAt = (_a = options.date) === null || _a === void 0 ? void 0 : _a.startsAt;
40
- // If startsAt is provided, need to change it to start from the base UTC date, if any timezone is provided.
41
- if (startsAt) {
42
- const baseStartDate = this.normalInstance.baseDateToTargetDate(startsAt);
43
- dtstart = baseStartDate;
44
- }
45
- }
46
- else {
47
- // If start date is provided without a timezone, assume timezone is UTC. Do nothing.
48
- dtstart = dtstart !== null && dtstart !== void 0 ? dtstart : (_b = options.date) === null || _b === void 0 ? void 0 : _b.startsAt;
49
- }
50
- const rruleOptions = Object.assign(Object.assign({}, rrule.origOptions), { tzid: undefined, dtstart });
51
- if (!rruleOptions.dtstart) {
52
- throw new Error('No start time specified. Must by specified in options as or via DTSTART.');
53
- }
54
- this.rrule = new date_rrule_extension_1.DateRRule(rruleOptions, true);
55
- }
56
- get timezone() {
57
- return this.normalInstance.config.timezone;
58
- }
59
- nextRecurrenceDate(from = new Date()) {
60
- const baseFrom = this.normalInstance.baseDateToTargetDate(from);
61
- const rawNext = this.rrule.next(baseFrom);
62
- const next = rawNext ? this.normalInstance.targetDateToBaseDate(rawNext) : undefined;
63
- return next;
64
- }
65
- /**
66
- * Expands the input DateRRuleExpansionOptions to a DateRRuleExpansion.
67
- *
68
- * @param options
69
- * @returns
70
- */
71
- expand(options) {
72
- let between;
73
- if (options.range || options.rangeParams) {
74
- if (options.range) {
75
- between = options.range;
76
- }
77
- else {
78
- const rangeParams = options.rangeParams;
79
- between = (0, date_1.dateRange)(rangeParams);
80
- }
81
- between.start = this.normalInstance.baseDateToTargetDate(between.start);
82
- between.end = this.normalInstance.baseDateToTargetDate(between.end);
83
- }
84
- let startsAtDates;
85
- if (between) {
86
- startsAtDates = this.rrule.between(between.start, between.end, true);
87
- }
88
- else if (this.hasForeverRange()) {
89
- throw new Error('Rule expands infinitely. Specify a range.');
90
- }
91
- else {
92
- startsAtDates = this.rrule.all();
93
- }
94
- const referenceDate = this.options.date;
95
- const allDates = startsAtDates.map((startsAt) => (Object.assign(Object.assign({}, referenceDate), { startsAt }))); // Inherit calendar time, etc.
96
- let dates = allDates;
97
- // Fix Dates w/ Timezones
98
- if (this.normalInstance.hasConversion) {
99
- dates = dates.map((x) => (Object.assign(Object.assign({}, x), { startsAt: this.normalInstance.targetDateToBaseDate(x.startsAt) })));
100
- }
101
- // Exclude dates
102
- const exclude = this.options.exclude;
103
- if (exclude) {
104
- dates = dates.filter((x) => !exclude.has(x.startsAt));
105
- }
106
- return {
107
- between,
108
- dates
109
- };
110
- }
111
- /**
112
- * Returns true if there is a single date within the range.
113
- */
114
- haveRecurrenceInDateRange(dateRange) {
115
- const baseStart = this.normalInstance.targetDateToBaseDate(dateRange.start);
116
- const baseEnd = this.normalInstance.targetDateToBaseDate(dateRange.end);
117
- return this.rrule.any({ minDate: baseStart, maxDate: baseEnd });
118
- }
119
- /**
120
- * Returns the date range from when the recurrence starts, to the end date.
121
- */
122
- getRecurrenceDateRange() {
123
- const options = this.rrule.options;
124
- const forever = this.hasForeverRange();
125
- let start = this.rrule.options.dtstart;
126
- let end;
127
- let finalRecurrenceEndsAt;
128
- if (forever) {
129
- end = (0, date_1.maxFutureDate)();
130
- finalRecurrenceEndsAt = undefined;
131
- }
132
- else {
133
- if (options.until) {
134
- end = this.rrule.before(options.until, true);
135
- }
136
- else {
137
- end = this.rrule.last();
138
- }
139
- const referenceDate = this.options.date;
140
- const finalRecurrenceDateRange = (0, date_1.durationSpanToDateRange)(Object.assign(Object.assign({}, referenceDate), { startsAt: end }));
141
- finalRecurrenceEndsAt = finalRecurrenceDateRange.end;
142
- }
143
- // Fix Dates w/ timezone.
144
- if (this.normalInstance.hasConversion) {
145
- const [startF, endF] = [start, end].filter((x) => Boolean(x)).map((x) => this.normalInstance.baseDateToTargetDate(x));
146
- start = startF;
147
- end = endF;
148
- }
149
- return {
150
- forever,
151
- start,
152
- end,
153
- finalRecurrenceEndsAt
154
- };
155
- }
156
- hasForeverRange() {
157
- const options = this.rrule.options;
158
- const forever = !options.count && !options.until;
159
- return forever;
160
- }
161
- }
162
- exports.DateRRuleInstance = DateRRuleInstance;
163
- class DateRRuleUtility {
164
- /**
165
- * Creates the expansion item results based on the input.
166
- */
167
- static expand(options) {
168
- var _a;
169
- if (!options.instance && !options.instanceFrom) {
170
- throw new Error('Rrules be defined for expansion.');
171
- }
172
- const dateRrule = (_a = options.instance) !== null && _a !== void 0 ? _a : DateRRuleInstance.make(options.instanceFrom);
173
- return dateRrule.expand(options);
174
- }
175
- static makeInstance(params) {
176
- return DateRRuleInstance.make(params);
177
- }
178
- // MARK: RRule
179
- static toRRuleOptions(rruleStringLineSet) {
180
- const rules = date_rrule_parse_1.DateRRuleParseUtility.separateRRuleStringSetValues(rruleStringLineSet);
181
- const lines = date_rrule_parse_1.DateRRuleParseUtility.toRRuleLines(rules.basic);
182
- const ruleOptions = rrule_1.RRule.parseString(lines);
183
- return Object.assign(Object.assign({}, rules), { options: ruleOptions });
184
- }
185
- }
186
- exports.DateRRuleUtility = DateRRuleUtility;
187
- //# sourceMappingURL=date.rrule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.rrule.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.rrule.ts"],"names":[],"mappings":"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"}
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DateRRuleParseUtility = exports.RRuleStringSplitter = void 0;
4
- const util_1 = require("@dereekb/util");
5
- const date_fns_tz_1 = require("date-fns-tz");
6
- const date_1 = require("../date");
7
- const date_timezone_1 = require("../date/date.timezone");
8
- exports.RRuleStringSplitter = ':';
9
- class DateRRuleParseUtility {
10
- static separateRRuleStringSetValues(input) {
11
- const basic = [];
12
- const exdateRules = [];
13
- input.forEach((rule) => {
14
- if (rule.startsWith('EXDATE')) {
15
- exdateRules.push(rule);
16
- }
17
- else {
18
- basic.push(rule);
19
- }
20
- });
21
- let exdates = new date_1.DateSet();
22
- if (exdateRules.length) {
23
- exdates = new date_1.DateSet((0, util_1.flattenArray)(exdateRules.map((date) => {
24
- return DateRRuleParseUtility.parseExdateAttributeFromLine(date).dates;
25
- })));
26
- }
27
- return {
28
- basic,
29
- exdates,
30
- input
31
- };
32
- }
33
- // MARK: Rules Parsing
34
- static parseExdateAttributeFromLine(line) {
35
- const property = this.parseProperty(line);
36
- DateRRuleParseUtility.assertPropertyType('EXDATE', property);
37
- return DateRRuleParseUtility.parseExdateAttributeFromProperty(property);
38
- }
39
- static parseExdateAttributeFromProperty(property) {
40
- var _a;
41
- const timezone = (_a = property.params.find((x) => x.key === 'TZID')) === null || _a === void 0 ? void 0 : _a.value;
42
- const rawDates = property.values.split(',');
43
- const conversion = new date_timezone_1.DateTimezoneUtcNormalInstance({ timezone });
44
- const dates = rawDates.map((x) => DateRRuleParseUtility.parseDateTimeString(x, conversion));
45
- return {
46
- timezone,
47
- dates
48
- };
49
- }
50
- static parseDateTimeStringWithTimezone(rfcDateString, timezone) {
51
- return DateRRuleParseUtility.parseDateTimeString(rfcDateString, timezone ? new date_timezone_1.DateTimezoneUtcNormalInstance({ timezone }) : undefined);
52
- }
53
- /**
54
- * Parses the input Date-Time string.
55
- *
56
- * Timezone used to convert date to UTC if date is not specified in UTC (ends in Z).
57
- */
58
- static parseDateTimeString(rfcDateString, converter) {
59
- const RFC5545_DATE_TIME_FORMAT = /^((\d{4})(\d{2})(\d{2}))(T(\d{2})(\d{2})(\d{2})Z?)?$/;
60
- const isDateString = rfcDateString.length === 6;
61
- const isUTCDate = isDateString || rfcDateString.endsWith('Z');
62
- const parsed = RFC5545_DATE_TIME_FORMAT.exec(rfcDateString);
63
- if (parsed == null) {
64
- throw new Error(`Failed parsing input rfcDateString "${rfcDateString}"`);
65
- }
66
- const [, , /*full*/ /*yearDate*/ yearS, monthS, dayS /*time*/, , hourS, minuteS, secondS] = parsed;
67
- const [year, month, day, hour, minute, second] = [yearS, monthS, dayS, hourS, minuteS, secondS].map((x) => (x ? Number.parseInt(x, 10) : 0));
68
- const utcDate = new Date(Date.UTC(year, month - 1, day, hour, minute, second));
69
- let date = utcDate;
70
- if (!isUTCDate) {
71
- // Date was parsed as a base/UTC value by rrule, so convert it to the real date.
72
- if (converter) {
73
- date = converter.baseDateToTargetDate(date);
74
- }
75
- else {
76
- throw new Error('No timezone was provided when parsing DateTime string.');
77
- }
78
- }
79
- return date;
80
- }
81
- static formatDateTimeString(date) {
82
- return (0, date_fns_tz_1.format)(date, `yyyyMMdd'T'HHmmss'Z'`);
83
- }
84
- static parseProperty(line) {
85
- const rawLine = DateRRuleParseUtility.parseRawLine(line);
86
- return DateRRuleParseUtility.propertyFromRawLine(rawLine);
87
- }
88
- static propertyFromRawLine(rawLine) {
89
- const typeAndParams = rawLine.params.split(';');
90
- const type = typeAndParams[0].toUpperCase();
91
- const params = typeAndParams.slice(1).map(DateRRuleParseUtility.parseRawParam);
92
- return {
93
- type,
94
- params,
95
- values: rawLine.values
96
- };
97
- }
98
- static parseRawParam(param) {
99
- const [key, value] = (0, util_1.splitJoinRemainder)(param, '=', 2);
100
- return {
101
- key,
102
- value
103
- };
104
- }
105
- static parseRawLine(line) {
106
- const [params, values] = (0, util_1.splitJoinRemainder)(line, exports.RRuleStringSplitter, 2);
107
- if (line.length === 1) {
108
- return {
109
- params: 'RRULE',
110
- values: params
111
- };
112
- }
113
- else {
114
- return {
115
- params,
116
- values
117
- };
118
- }
119
- }
120
- // MARK: String
121
- static toRRuleStringSet(lines) {
122
- return lines.split('\n');
123
- }
124
- static toRRuleLines(rruleStringSet) {
125
- return rruleStringSet.join('\n');
126
- }
127
- // MARK: Assert
128
- static assertPropertyType(type, property) {
129
- if (property.type !== type) {
130
- throw new Error(`Expected type ${type} but got ${property.type}`);
131
- }
132
- }
133
- }
134
- exports.DateRRuleParseUtility = DateRRuleParseUtility;
135
- //# sourceMappingURL=date.rrule.parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.rrule.parse.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.rrule.parse.ts"],"names":[],"mappings":"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"}