@mrpelz/modifiable-date 1.1.1 → 3.0.0

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/main.d.ts CHANGED
@@ -1,3 +1,40 @@
1
1
  export * from './epochs.js';
2
- export * from './modifiable-date.js';
2
+ export declare enum Unit {
3
+ SECOND = 0,
4
+ MINUTE = 1,
5
+ HOUR = 2,
6
+ DAY = 3,
7
+ WEEK = 4,
8
+ MONTH = 5,
9
+ YEAR = 6
10
+ }
11
+ export declare enum Weekday {
12
+ SUNDAY = 0,
13
+ MONDAY = 1,
14
+ TUESDAY = 2,
15
+ WEDNESDAY = 3,
16
+ THURSDAY = 4,
17
+ FIRDAY = 5,
18
+ SATURDAY = 6
19
+ }
20
+ export declare class ModifiableDate {
21
+ private _date;
22
+ constructor(time?: Date);
23
+ get date(): Date;
24
+ get isWeekday(): boolean;
25
+ get isWeekend(): boolean;
26
+ add(amount: number, unit: Unit): this;
27
+ ceil(unit: Unit, modulo: number): this;
28
+ clone(): ModifiableDate;
29
+ floor(unit: Unit, modulo: number): this;
30
+ forwardUntil(matcher: Partial<Record<Unit, number>>): this;
31
+ get(unit: Unit): number;
32
+ reverseUntil(matcher: Record<Unit, number>): this;
33
+ round(unit: Unit, modulo: number): this;
34
+ set(date?: Date | number | null): this;
35
+ subtract(amount: number, unit: Unit): this;
36
+ truncateTo(unit: Unit, inclusive?: boolean): this;
37
+ truncateToNext(unit: Unit, inclusive?: boolean): this;
38
+ truncateToPrevious(unit: Unit, inclusive?: boolean): this;
39
+ }
3
40
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAG5B,oBAAY,IAAI;IACd,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,GAAG,IAAA;IACH,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,oBAAY,OAAO;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAO;gBAER,IAAI,CAAC,EAAE,IAAI;IAIvB,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,SAAS,IAAI,OAAO,CAUvB;IAED,IAAI,SAAS,IAAI,OAAO,CAIvB;IAED,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAuCrC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyCtC,KAAK,IAAI,cAAc;IAIvB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyCvC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IA4B1D,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IA6BvB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI;IA4BjD,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgBvC,GAAG,CAAC,IAAI,GAAE,IAAI,GAAG,MAAM,GAAG,IAAW,GAAG,IAAI;IAM5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAM1C,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;IA6C9C,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;IAOlD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;CAMvD"}
package/dist/main.js CHANGED
@@ -1,3 +1,310 @@
1
1
  export * from './epochs.js';
2
- export * from './modifiable-date.js';
2
+ import { weekNumber } from './epochs.js';
3
+ export var Unit;
4
+ (function (Unit) {
5
+ Unit[Unit["SECOND"] = 0] = "SECOND";
6
+ Unit[Unit["MINUTE"] = 1] = "MINUTE";
7
+ Unit[Unit["HOUR"] = 2] = "HOUR";
8
+ Unit[Unit["DAY"] = 3] = "DAY";
9
+ Unit[Unit["WEEK"] = 4] = "WEEK";
10
+ Unit[Unit["MONTH"] = 5] = "MONTH";
11
+ Unit[Unit["YEAR"] = 6] = "YEAR";
12
+ })(Unit || (Unit = {}));
13
+ export var Weekday;
14
+ (function (Weekday) {
15
+ Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY";
16
+ Weekday[Weekday["MONDAY"] = 1] = "MONDAY";
17
+ Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY";
18
+ Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY";
19
+ Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY";
20
+ Weekday[Weekday["FIRDAY"] = 5] = "FIRDAY";
21
+ Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY";
22
+ })(Weekday || (Weekday = {}));
23
+ export class ModifiableDate {
24
+ _date;
25
+ constructor(time) {
26
+ this._date = time || new Date();
27
+ }
28
+ get date() {
29
+ return this._date;
30
+ }
31
+ get isWeekday() {
32
+ const weekday = this._date.getDay();
33
+ return [
34
+ Weekday.MONDAY,
35
+ Weekday.TUESDAY,
36
+ Weekday.WEDNESDAY,
37
+ Weekday.THURSDAY,
38
+ Weekday.FIRDAY,
39
+ ].includes(weekday);
40
+ }
41
+ get isWeekend() {
42
+ const weekday = this._date.getDay();
43
+ return [Weekday.SATURDAY, Weekday.SUNDAY].includes(weekday);
44
+ }
45
+ add(amount, unit) {
46
+ const _amount = Math.trunc(amount);
47
+ // eslint-disable-next-line default-case
48
+ switch (unit) {
49
+ case Unit.SECOND: {
50
+ this._date.setSeconds(this.get(unit) + _amount);
51
+ break;
52
+ }
53
+ case Unit.MINUTE: {
54
+ this._date.setMinutes(this.get(unit) + _amount);
55
+ break;
56
+ }
57
+ case Unit.HOUR: {
58
+ this._date.setHours(this.get(unit) + _amount);
59
+ break;
60
+ }
61
+ case Unit.DAY: {
62
+ this._date.setDate(this.get(unit) + _amount);
63
+ break;
64
+ }
65
+ case Unit.WEEK: {
66
+ // prettier-ignore
67
+ this._date.setDate(this.get(unit) + (_amount * 7));
68
+ break;
69
+ }
70
+ case Unit.MONTH: {
71
+ this._date.setMonth(this.get(unit) + _amount);
72
+ break;
73
+ }
74
+ case Unit.YEAR: {
75
+ this._date.setFullYear(this.get(unit) + _amount);
76
+ break;
77
+ }
78
+ }
79
+ return this;
80
+ }
81
+ ceil(unit, modulo) {
82
+ const mod = Math.abs(Math.trunc(modulo));
83
+ this.truncateToNext(unit);
84
+ // eslint-disable-next-line default-case
85
+ switch (unit) {
86
+ case Unit.SECOND: {
87
+ this._date.setSeconds(Math.ceil(this.get(unit) / mod) * mod);
88
+ break;
89
+ }
90
+ case Unit.MINUTE: {
91
+ this._date.setMinutes(Math.ceil(this.get(unit) / mod) * mod);
92
+ break;
93
+ }
94
+ case Unit.HOUR: {
95
+ this._date.setHours(Math.ceil(this.get(unit) / mod) * mod);
96
+ break;
97
+ }
98
+ case Unit.DAY: {
99
+ this._date.setDate(Math.ceil(this.get(unit) / mod) * mod);
100
+ break;
101
+ }
102
+ case Unit.WEEK: {
103
+ this._date.setDate(Math.ceil(this.get(unit) / mod) * mod * 7);
104
+ this.truncateTo(Unit.WEEK);
105
+ break;
106
+ }
107
+ case Unit.MONTH: {
108
+ this._date.setMonth(Math.ceil(this.get(unit) / mod) * mod);
109
+ break;
110
+ }
111
+ case Unit.YEAR: {
112
+ this._date.setFullYear(Math.ceil(this.get(unit) / mod) * mod);
113
+ break;
114
+ }
115
+ }
116
+ return this;
117
+ }
118
+ clone() {
119
+ return new ModifiableDate(this._date);
120
+ }
121
+ floor(unit, modulo) {
122
+ const mod = Math.abs(Math.trunc(modulo));
123
+ this.truncateTo(unit);
124
+ // eslint-disable-next-line default-case
125
+ switch (unit) {
126
+ case Unit.SECOND: {
127
+ this._date.setSeconds(Math.floor(this.get(unit) / mod) * mod);
128
+ break;
129
+ }
130
+ case Unit.MINUTE: {
131
+ this._date.setMinutes(Math.floor(this.get(unit) / mod) * mod);
132
+ break;
133
+ }
134
+ case Unit.HOUR: {
135
+ this._date.setHours(Math.floor(this.get(unit) / mod) * mod);
136
+ break;
137
+ }
138
+ case Unit.DAY: {
139
+ this._date.setDate(Math.floor(this.get(unit) / mod) * mod);
140
+ break;
141
+ }
142
+ case Unit.WEEK: {
143
+ this._date.setDate(Math.floor(this.get(unit) / mod) * mod * 7);
144
+ this.truncateTo(Unit.WEEK);
145
+ break;
146
+ }
147
+ case Unit.MONTH: {
148
+ this._date.setMonth(Math.floor(this.get(unit) / mod) * mod);
149
+ break;
150
+ }
151
+ case Unit.YEAR: {
152
+ this._date.setFullYear(Math.floor(this.get(unit) / mod) * mod);
153
+ break;
154
+ }
155
+ }
156
+ return this;
157
+ }
158
+ forwardUntil(matcher) {
159
+ let advancedSmallestUnit = false;
160
+ for (const unit of [
161
+ Unit.SECOND,
162
+ Unit.MINUTE,
163
+ Unit.HOUR,
164
+ Unit.DAY,
165
+ Unit.WEEK,
166
+ Unit.MONTH,
167
+ Unit.YEAR,
168
+ ]) {
169
+ const value = matcher[unit];
170
+ if (value === undefined)
171
+ continue;
172
+ if (!advancedSmallestUnit) {
173
+ advancedSmallestUnit = true;
174
+ this.add(1, unit);
175
+ }
176
+ while (this.get(unit) !== value) {
177
+ this.add(1, unit);
178
+ }
179
+ }
180
+ return this;
181
+ }
182
+ get(unit) {
183
+ switch (unit) {
184
+ case Unit.SECOND: {
185
+ return this._date.getSeconds();
186
+ }
187
+ case Unit.MINUTE: {
188
+ return this._date.getMinutes();
189
+ }
190
+ case Unit.HOUR: {
191
+ return this._date.getHours();
192
+ }
193
+ case Unit.DAY: {
194
+ return this._date.getDate();
195
+ }
196
+ case Unit.WEEK: {
197
+ return weekNumber(this._date);
198
+ }
199
+ case Unit.MONTH: {
200
+ return this._date.getMonth();
201
+ }
202
+ case Unit.YEAR: {
203
+ return this._date.getFullYear();
204
+ }
205
+ default: {
206
+ return 0;
207
+ }
208
+ }
209
+ }
210
+ reverseUntil(matcher) {
211
+ let advancedSmallestUnit = false;
212
+ for (const unit of [
213
+ Unit.SECOND,
214
+ Unit.MINUTE,
215
+ Unit.HOUR,
216
+ Unit.DAY,
217
+ Unit.WEEK,
218
+ Unit.MONTH,
219
+ Unit.YEAR,
220
+ ]) {
221
+ const value = matcher[unit];
222
+ if (value === undefined)
223
+ continue;
224
+ if (!advancedSmallestUnit) {
225
+ advancedSmallestUnit = true;
226
+ this.subtract(1, unit);
227
+ }
228
+ while (this.get(unit) !== value) {
229
+ this.subtract(1, unit);
230
+ }
231
+ }
232
+ return this;
233
+ }
234
+ round(unit, modulo) {
235
+ const mod = Math.abs(Math.trunc(modulo));
236
+ const value = this.get(unit);
237
+ if (Math.round(value / mod) * mod <= value) {
238
+ this.floor(unit, modulo);
239
+ return this;
240
+ }
241
+ this.ceil(unit, modulo);
242
+ return this;
243
+ }
244
+ set(date = null) {
245
+ this._date = date ? new Date(date) : new Date();
246
+ return this;
247
+ }
248
+ subtract(amount, unit) {
249
+ this.add(-amount, unit);
250
+ return this;
251
+ }
252
+ truncateTo(unit, inclusive = true) {
253
+ // eslint-disable-next-line default-case
254
+ switch (unit) {
255
+ case Unit.SECOND: {
256
+ this._date.setMilliseconds(0);
257
+ break;
258
+ }
259
+ case Unit.MINUTE: {
260
+ this._date.setSeconds(0);
261
+ if (inclusive)
262
+ this.truncateTo(Unit.SECOND);
263
+ break;
264
+ }
265
+ case Unit.HOUR: {
266
+ this._date.setMinutes(0);
267
+ if (inclusive)
268
+ this.truncateTo(Unit.MINUTE);
269
+ break;
270
+ }
271
+ case Unit.DAY: {
272
+ this._date.setHours(0);
273
+ if (inclusive)
274
+ this.truncateTo(Unit.HOUR);
275
+ break;
276
+ }
277
+ case Unit.WEEK: {
278
+ this._date.setDate(this._date.getDate() -
279
+ (this._date.getDay() < 1 ? 6 : this._date.getDay() - 1));
280
+ if (inclusive)
281
+ this.truncateTo(Unit.DAY);
282
+ break;
283
+ }
284
+ case Unit.MONTH: {
285
+ this._date.setDate(1);
286
+ if (inclusive)
287
+ this.truncateTo(Unit.DAY);
288
+ break;
289
+ }
290
+ case Unit.YEAR: {
291
+ this._date.setMonth(0);
292
+ if (inclusive)
293
+ this.truncateTo(Unit.MONTH);
294
+ break;
295
+ }
296
+ }
297
+ return this;
298
+ }
299
+ truncateToNext(unit, inclusive = true) {
300
+ this.truncateTo(unit, inclusive);
301
+ this.add(1, unit);
302
+ return this;
303
+ }
304
+ truncateToPrevious(unit, inclusive = true) {
305
+ this.truncateTo(unit, inclusive);
306
+ this.subtract(1, unit);
307
+ return this;
308
+ }
309
+ }
3
310
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrpelz/modifiable-date",
3
- "version": "1.1.1",
3
+ "version": "3.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mrpelz/utils.git",
@@ -13,14 +13,6 @@
13
13
  ".": {
14
14
  "default": "./dist/main.js",
15
15
  "types": "./dist/main.d.ts"
16
- },
17
- "./epochs": {
18
- "default": "./dist/epochs.js",
19
- "types": "./dist/epochs.d.ts"
20
- },
21
- "./modifiable-date": {
22
- "default": "./dist/modifiable-date.js",
23
- "types": "./dist/modifiable-date.d.ts"
24
16
  }
25
17
  },
26
18
  "main": "dist/main.js",
@@ -1,39 +0,0 @@
1
- export declare enum Unit {
2
- SECOND = 0,
3
- MINUTE = 1,
4
- HOUR = 2,
5
- DAY = 3,
6
- WEEK = 4,
7
- MONTH = 5,
8
- YEAR = 6
9
- }
10
- export declare enum Weekday {
11
- SUNDAY = 0,
12
- MONDAY = 1,
13
- TUESDAY = 2,
14
- WEDNESDAY = 3,
15
- THURSDAY = 4,
16
- FIRDAY = 5,
17
- SATURDAY = 6
18
- }
19
- export declare class ModifiableDate {
20
- private _date;
21
- constructor(time?: Date);
22
- get date(): Date;
23
- get isWeekday(): boolean;
24
- get isWeekend(): boolean;
25
- add(amount: number, unit: Unit): this;
26
- ceil(unit: Unit, modulo: number): this;
27
- clone(): ModifiableDate;
28
- floor(unit: Unit, modulo: number): this;
29
- forwardUntil(matcher: Partial<Record<Unit, number>>): this;
30
- get(unit: Unit): number;
31
- reverseUntil(matcher: Record<Unit, number>): this;
32
- round(unit: Unit, modulo: number): this;
33
- set(date?: Date | number | null): this;
34
- subtract(amount: number, unit: Unit): this;
35
- truncateTo(unit: Unit, inclusive?: boolean): this;
36
- truncateToNext(unit: Unit, inclusive?: boolean): this;
37
- truncateToPrevious(unit: Unit, inclusive?: boolean): this;
38
- }
39
- //# sourceMappingURL=modifiable-date.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modifiable-date.d.ts","sourceRoot":"","sources":["../src/modifiable-date.ts"],"names":[],"mappings":"AAEA,oBAAY,IAAI;IACd,MAAM,IAAA;IACN,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,GAAG,IAAA;IACH,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,oBAAY,OAAO;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAO;gBAER,IAAI,CAAC,EAAE,IAAI;IAIvB,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,SAAS,IAAI,OAAO,CAUvB;IAED,IAAI,SAAS,IAAI,OAAO,CAIvB;IAED,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAuCrC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyCtC,KAAK,IAAI,cAAc;IAIvB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyCvC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IA4B1D,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IA6BvB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI;IA4BjD,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgBvC,GAAG,CAAC,IAAI,GAAE,IAAI,GAAG,MAAM,GAAG,IAAW,GAAG,IAAI;IAM5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAM1C,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;IA6C9C,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;IAOlD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,UAAO,GAAG,IAAI;CAMvD"}
@@ -1,309 +0,0 @@
1
- import { weekNumber } from './epochs.js';
2
- export var Unit;
3
- (function (Unit) {
4
- Unit[Unit["SECOND"] = 0] = "SECOND";
5
- Unit[Unit["MINUTE"] = 1] = "MINUTE";
6
- Unit[Unit["HOUR"] = 2] = "HOUR";
7
- Unit[Unit["DAY"] = 3] = "DAY";
8
- Unit[Unit["WEEK"] = 4] = "WEEK";
9
- Unit[Unit["MONTH"] = 5] = "MONTH";
10
- Unit[Unit["YEAR"] = 6] = "YEAR";
11
- })(Unit || (Unit = {}));
12
- export var Weekday;
13
- (function (Weekday) {
14
- Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY";
15
- Weekday[Weekday["MONDAY"] = 1] = "MONDAY";
16
- Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY";
17
- Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY";
18
- Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY";
19
- Weekday[Weekday["FIRDAY"] = 5] = "FIRDAY";
20
- Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY";
21
- })(Weekday || (Weekday = {}));
22
- export class ModifiableDate {
23
- _date;
24
- constructor(time) {
25
- this._date = time || new Date();
26
- }
27
- get date() {
28
- return this._date;
29
- }
30
- get isWeekday() {
31
- const weekday = this._date.getDay();
32
- return [
33
- Weekday.MONDAY,
34
- Weekday.TUESDAY,
35
- Weekday.WEDNESDAY,
36
- Weekday.THURSDAY,
37
- Weekday.FIRDAY,
38
- ].includes(weekday);
39
- }
40
- get isWeekend() {
41
- const weekday = this._date.getDay();
42
- return [Weekday.SATURDAY, Weekday.SUNDAY].includes(weekday);
43
- }
44
- add(amount, unit) {
45
- const _amount = Math.trunc(amount);
46
- // eslint-disable-next-line default-case
47
- switch (unit) {
48
- case Unit.SECOND: {
49
- this._date.setSeconds(this.get(unit) + _amount);
50
- break;
51
- }
52
- case Unit.MINUTE: {
53
- this._date.setMinutes(this.get(unit) + _amount);
54
- break;
55
- }
56
- case Unit.HOUR: {
57
- this._date.setHours(this.get(unit) + _amount);
58
- break;
59
- }
60
- case Unit.DAY: {
61
- this._date.setDate(this.get(unit) + _amount);
62
- break;
63
- }
64
- case Unit.WEEK: {
65
- // prettier-ignore
66
- this._date.setDate(this.get(unit) + (_amount * 7));
67
- break;
68
- }
69
- case Unit.MONTH: {
70
- this._date.setMonth(this.get(unit) + _amount);
71
- break;
72
- }
73
- case Unit.YEAR: {
74
- this._date.setFullYear(this.get(unit) + _amount);
75
- break;
76
- }
77
- }
78
- return this;
79
- }
80
- ceil(unit, modulo) {
81
- const mod = Math.abs(Math.trunc(modulo));
82
- this.truncateToNext(unit);
83
- // eslint-disable-next-line default-case
84
- switch (unit) {
85
- case Unit.SECOND: {
86
- this._date.setSeconds(Math.ceil(this.get(unit) / mod) * mod);
87
- break;
88
- }
89
- case Unit.MINUTE: {
90
- this._date.setMinutes(Math.ceil(this.get(unit) / mod) * mod);
91
- break;
92
- }
93
- case Unit.HOUR: {
94
- this._date.setHours(Math.ceil(this.get(unit) / mod) * mod);
95
- break;
96
- }
97
- case Unit.DAY: {
98
- this._date.setDate(Math.ceil(this.get(unit) / mod) * mod);
99
- break;
100
- }
101
- case Unit.WEEK: {
102
- this._date.setDate(Math.ceil(this.get(unit) / mod) * mod * 7);
103
- this.truncateTo(Unit.WEEK);
104
- break;
105
- }
106
- case Unit.MONTH: {
107
- this._date.setMonth(Math.ceil(this.get(unit) / mod) * mod);
108
- break;
109
- }
110
- case Unit.YEAR: {
111
- this._date.setFullYear(Math.ceil(this.get(unit) / mod) * mod);
112
- break;
113
- }
114
- }
115
- return this;
116
- }
117
- clone() {
118
- return new ModifiableDate(this._date);
119
- }
120
- floor(unit, modulo) {
121
- const mod = Math.abs(Math.trunc(modulo));
122
- this.truncateTo(unit);
123
- // eslint-disable-next-line default-case
124
- switch (unit) {
125
- case Unit.SECOND: {
126
- this._date.setSeconds(Math.floor(this.get(unit) / mod) * mod);
127
- break;
128
- }
129
- case Unit.MINUTE: {
130
- this._date.setMinutes(Math.floor(this.get(unit) / mod) * mod);
131
- break;
132
- }
133
- case Unit.HOUR: {
134
- this._date.setHours(Math.floor(this.get(unit) / mod) * mod);
135
- break;
136
- }
137
- case Unit.DAY: {
138
- this._date.setDate(Math.floor(this.get(unit) / mod) * mod);
139
- break;
140
- }
141
- case Unit.WEEK: {
142
- this._date.setDate(Math.floor(this.get(unit) / mod) * mod * 7);
143
- this.truncateTo(Unit.WEEK);
144
- break;
145
- }
146
- case Unit.MONTH: {
147
- this._date.setMonth(Math.floor(this.get(unit) / mod) * mod);
148
- break;
149
- }
150
- case Unit.YEAR: {
151
- this._date.setFullYear(Math.floor(this.get(unit) / mod) * mod);
152
- break;
153
- }
154
- }
155
- return this;
156
- }
157
- forwardUntil(matcher) {
158
- let advancedSmallestUnit = false;
159
- for (const unit of [
160
- Unit.SECOND,
161
- Unit.MINUTE,
162
- Unit.HOUR,
163
- Unit.DAY,
164
- Unit.WEEK,
165
- Unit.MONTH,
166
- Unit.YEAR,
167
- ]) {
168
- const value = matcher[unit];
169
- if (value === undefined)
170
- continue;
171
- if (!advancedSmallestUnit) {
172
- advancedSmallestUnit = true;
173
- this.add(1, unit);
174
- }
175
- while (this.get(unit) !== value) {
176
- this.add(1, unit);
177
- }
178
- }
179
- return this;
180
- }
181
- get(unit) {
182
- switch (unit) {
183
- case Unit.SECOND: {
184
- return this._date.getSeconds();
185
- }
186
- case Unit.MINUTE: {
187
- return this._date.getMinutes();
188
- }
189
- case Unit.HOUR: {
190
- return this._date.getHours();
191
- }
192
- case Unit.DAY: {
193
- return this._date.getDate();
194
- }
195
- case Unit.WEEK: {
196
- return weekNumber(this._date);
197
- }
198
- case Unit.MONTH: {
199
- return this._date.getMonth();
200
- }
201
- case Unit.YEAR: {
202
- return this._date.getFullYear();
203
- }
204
- default: {
205
- return 0;
206
- }
207
- }
208
- }
209
- reverseUntil(matcher) {
210
- let advancedSmallestUnit = false;
211
- for (const unit of [
212
- Unit.SECOND,
213
- Unit.MINUTE,
214
- Unit.HOUR,
215
- Unit.DAY,
216
- Unit.WEEK,
217
- Unit.MONTH,
218
- Unit.YEAR,
219
- ]) {
220
- const value = matcher[unit];
221
- if (value === undefined)
222
- continue;
223
- if (!advancedSmallestUnit) {
224
- advancedSmallestUnit = true;
225
- this.subtract(1, unit);
226
- }
227
- while (this.get(unit) !== value) {
228
- this.subtract(1, unit);
229
- }
230
- }
231
- return this;
232
- }
233
- round(unit, modulo) {
234
- const mod = Math.abs(Math.trunc(modulo));
235
- const value = this.get(unit);
236
- if (Math.round(value / mod) * mod <= value) {
237
- this.floor(unit, modulo);
238
- return this;
239
- }
240
- this.ceil(unit, modulo);
241
- return this;
242
- }
243
- set(date = null) {
244
- this._date = date ? new Date(date) : new Date();
245
- return this;
246
- }
247
- subtract(amount, unit) {
248
- this.add(-amount, unit);
249
- return this;
250
- }
251
- truncateTo(unit, inclusive = true) {
252
- // eslint-disable-next-line default-case
253
- switch (unit) {
254
- case Unit.SECOND: {
255
- this._date.setMilliseconds(0);
256
- break;
257
- }
258
- case Unit.MINUTE: {
259
- this._date.setSeconds(0);
260
- if (inclusive)
261
- this.truncateTo(Unit.SECOND);
262
- break;
263
- }
264
- case Unit.HOUR: {
265
- this._date.setMinutes(0);
266
- if (inclusive)
267
- this.truncateTo(Unit.MINUTE);
268
- break;
269
- }
270
- case Unit.DAY: {
271
- this._date.setHours(0);
272
- if (inclusive)
273
- this.truncateTo(Unit.HOUR);
274
- break;
275
- }
276
- case Unit.WEEK: {
277
- this._date.setDate(this._date.getDate() -
278
- (this._date.getDay() < 1 ? 6 : this._date.getDay() - 1));
279
- if (inclusive)
280
- this.truncateTo(Unit.DAY);
281
- break;
282
- }
283
- case Unit.MONTH: {
284
- this._date.setDate(1);
285
- if (inclusive)
286
- this.truncateTo(Unit.DAY);
287
- break;
288
- }
289
- case Unit.YEAR: {
290
- this._date.setMonth(0);
291
- if (inclusive)
292
- this.truncateTo(Unit.MONTH);
293
- break;
294
- }
295
- }
296
- return this;
297
- }
298
- truncateToNext(unit, inclusive = true) {
299
- this.truncateTo(unit, inclusive);
300
- this.add(1, unit);
301
- return this;
302
- }
303
- truncateToPrevious(unit, inclusive = true) {
304
- this.truncateTo(unit, inclusive);
305
- this.subtract(1, unit);
306
- return this;
307
- }
308
- }
309
- //# sourceMappingURL=modifiable-date.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modifiable-date.js","sourceRoot":"","sources":["../src/modifiable-date.ts"],"names":[],"mappings":"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"}