@ehmpathy/uni-time 1.6.0 → 1.7.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.
@@ -1,6 +1,6 @@
1
1
  import { AsOfGlossary } from 'domain-glossaries';
2
- import { PickOne } from 'type-fns';
3
- export type UniDuration = AsOfGlossary<PickOne<{
2
+ import { PickAny } from 'type-fns';
3
+ export type UniDuration = AsOfGlossary<PickAny<{
4
4
  weeks: number;
5
5
  days: number;
6
6
  hours: number;
@@ -8,4 +8,3 @@ export type UniDuration = AsOfGlossary<PickOne<{
8
8
  seconds: number;
9
9
  milliseconds: number;
10
10
  }>, 'uni-time', false>;
11
- export declare const toMilliseconds: (duration: UniDuration) => number;
@@ -1,22 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toMilliseconds = void 0;
4
- const error_fns_1 = require("@ehmpathy/error-fns");
5
- const type_fns_1 = require("type-fns");
6
- const toMilliseconds = (duration) => {
7
- if ((0, type_fns_1.isPresent)(duration.weeks))
8
- return duration.weeks * 7 * 24 * 60 * 60 * 1000;
9
- if ((0, type_fns_1.isPresent)(duration.days))
10
- return duration.days * 24 * 60 * 60 * 1000;
11
- if ((0, type_fns_1.isPresent)(duration.hours))
12
- return duration.hours * 60 * 60 * 1000;
13
- if ((0, type_fns_1.isPresent)(duration.minutes))
14
- return duration.minutes * 60 * 1000;
15
- if ((0, type_fns_1.isPresent)(duration.seconds))
16
- return duration.seconds * 1000;
17
- if ((0, type_fns_1.isPresent)(duration.milliseconds))
18
- return duration.milliseconds;
19
- throw new error_fns_1.UnexpectedCodePathError('unsupported duration unit to convert to milliseconds', { duration });
20
- };
21
- exports.toMilliseconds = toMilliseconds;
22
3
  //# sourceMappingURL=UniDuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UniDuration.js","sourceRoot":"","sources":["../../src/domain/UniDuration.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAE9D,uCAA8C;AAevC,MAAM,cAAc,GAAG,CAAC,QAAqB,EAAU,EAAE;IAC9D,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC;QAC3B,OAAO,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAClD,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzE,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtE,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;IACrE,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAChE,IAAI,IAAA,oBAAS,EAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC,YAAY,CAAC;IACnE,MAAM,IAAI,mCAAuB,CAC/B,sDAAsD,EACtD,EAAE,QAAQ,EAAE,CACb,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
1
+ {"version":3,"file":"UniDuration.js","sourceRoot":"","sources":["../../src/domain/UniDuration.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export * from './logic/checks/isUniDate';
5
5
  export * from './logic/checks/isUniDateTime';
6
6
  export * from './logic/casts/toMillisecondsSinceEpoch';
7
7
  export * from './logic/manipulate/addDuration';
8
+ export * from './logic/manipulate/getDuration';
8
9
  export * from './logic/manipulate/subDuration';
10
+ export * from './logic/manipulate/toMilliseconds';
9
11
  export * from './logic/wrappers/waitFor';
10
12
  export * from './logic/observe/stopwatch/startDurationStopwatch';
package/dist/index.js CHANGED
@@ -21,7 +21,9 @@ __exportStar(require("./logic/checks/isUniDate"), exports);
21
21
  __exportStar(require("./logic/checks/isUniDateTime"), exports);
22
22
  __exportStar(require("./logic/casts/toMillisecondsSinceEpoch"), exports);
23
23
  __exportStar(require("./logic/manipulate/addDuration"), exports);
24
+ __exportStar(require("./logic/manipulate/getDuration"), exports);
24
25
  __exportStar(require("./logic/manipulate/subDuration"), exports);
26
+ __exportStar(require("./logic/manipulate/toMilliseconds"), exports);
25
27
  __exportStar(require("./logic/wrappers/waitFor"), exports);
26
28
  __exportStar(require("./logic/observe/stopwatch/startDurationStopwatch"), exports);
27
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,2DAAyC;AACzC,+DAA6C;AAC7C,yEAAuD;AACvD,iEAA+C;AAC/C,iEAA+C;AAC/C,2DAAyC;AACzC,mFAAiE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,2DAAyC;AACzC,+DAA6C;AAC7C,yEAAuD;AACvD,iEAA+C;AAC/C,iEAA+C;AAC/C,iEAA+C;AAC/C,oEAAkD;AAClD,2DAAyC;AACzC,mFAAiE"}
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.subDuration = void 0;
4
4
  const date_fns_1 = require("date-fns");
5
- const UniDuration_1 = require("../../domain/UniDuration");
6
5
  const isUniDate_1 = require("../checks/isUniDate");
7
6
  const isUniDateTime_1 = require("../checks/isUniDateTime");
7
+ const toMilliseconds_1 = require("./toMilliseconds");
8
8
  /**
9
9
  * subtract a duration from a datetime
10
10
  */
11
11
  const subDuration = (...args) => (0, isUniDate_1.isUniDate)(args[0])
12
- ? (0, isUniDate_1.asUniDate)((0, date_fns_1.subMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, UniDuration_1.toMilliseconds)(args[1])))
13
- : (0, isUniDateTime_1.asUniDateTime)((0, date_fns_1.subMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, UniDuration_1.toMilliseconds)(args[1])));
12
+ ? (0, isUniDate_1.asUniDate)((0, date_fns_1.subMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, toMilliseconds_1.toMilliseconds)(args[1])))
13
+ : (0, isUniDateTime_1.asUniDateTime)((0, date_fns_1.subMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, toMilliseconds_1.toMilliseconds)(args[1])));
14
14
  exports.subDuration = subDuration;
15
15
  //# sourceMappingURL=addDuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addDuration.js","sourceRoot":"","sources":["../../../src/logic/manipulate/addDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAIrD,0DAAuE;AACvE,mDAA2D;AAC3D,2DAAwD;AAExD;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,GAAG,IAEwD,EAC3D,EAAE,CACF,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,IAAA,qBAAS,EAAC,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAA,6BAAa,EACX,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;AATK,QAAA,WAAW,eAShB"}
1
+ {"version":3,"file":"addDuration.js","sourceRoot":"","sources":["../../../src/logic/manipulate/addDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAKrD,mDAA2D;AAC3D,2DAAwD;AACxD,qDAAkD;AAElD;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,GAAG,IAEwD,EAC3D,EAAE,CACF,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,IAAA,qBAAS,EAAC,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAA,6BAAa,EACX,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;AATK,QAAA,WAAW,eAShB"}
@@ -0,0 +1,22 @@
1
+ import { PickOne } from 'type-fns';
2
+ import { UniDateTimeRange } from '../../domain/UniDateTime';
3
+ import { UniDuration } from '../../domain/UniDuration';
4
+ /**
5
+ * .what = calculates the duration of a time range
6
+ */
7
+ export declare const getDuration: (input: {
8
+ /**
9
+ * what measure of time to extract a duration from
10
+ */
11
+ of: PickOne<{
12
+ range: UniDateTimeRange;
13
+ milliseconds: number;
14
+ }>;
15
+ /**
16
+ * the unit to define the duration in, if desired
17
+ *
18
+ * note
19
+ * - by default, it will define it via all of them
20
+ */
21
+ as?: keyof UniDuration;
22
+ }) => UniDuration;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDuration = void 0;
4
+ const error_fns_1 = require("@ehmpathy/error-fns");
5
+ const toMillisecondsSinceEpoch_1 = require("../casts/toMillisecondsSinceEpoch");
6
+ const toMilliseconds_1 = require("./toMilliseconds");
7
+ /**
8
+ * .what = calculates the duration of a time range
9
+ */
10
+ const getDuration = (input) => {
11
+ // handle range inputs
12
+ if (input.of.range)
13
+ return (0, exports.getDuration)({
14
+ of: {
15
+ milliseconds: (0, toMillisecondsSinceEpoch_1.toMse)(input.of.range.until) - (0, toMillisecondsSinceEpoch_1.toMse)(input.of.range.since),
16
+ },
17
+ as: input.as,
18
+ });
19
+ // handle milliseconds
20
+ if (input.of.milliseconds) {
21
+ // if asked to define in a specific unit, define it in that unit
22
+ if (input.as) {
23
+ if (input.as === 'weeks')
24
+ return { weeks: input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_WEEK };
25
+ if (input.as === 'days')
26
+ return { days: input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_DAY };
27
+ if (input.as === 'hours')
28
+ return { hours: input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_HOUR };
29
+ if (input.as === 'minutes')
30
+ return { minutes: input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_MINUTE };
31
+ if (input.as === 'seconds')
32
+ return { seconds: input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_SECOND };
33
+ if (input.as === 'milliseconds')
34
+ return { milliseconds: input.of.milliseconds };
35
+ throw new error_fns_1.UnexpectedCodePathError('input.as does not specify a valid unit', { input });
36
+ }
37
+ // otherwise, define it via all of the units
38
+ const weeks = Math.floor(input.of.milliseconds / toMilliseconds_1.MILLISECONDS_PER_WEEK);
39
+ const days = Math.floor((input.of.milliseconds % toMilliseconds_1.MILLISECONDS_PER_WEEK) / toMilliseconds_1.MILLISECONDS_PER_DAY);
40
+ const hours = Math.floor((input.of.milliseconds % toMilliseconds_1.MILLISECONDS_PER_DAY) / toMilliseconds_1.MILLISECONDS_PER_HOUR);
41
+ const minutes = Math.floor((input.of.milliseconds % toMilliseconds_1.MILLISECONDS_PER_HOUR) / toMilliseconds_1.MILLISECONDS_PER_MINUTE);
42
+ const seconds = Math.floor((input.of.milliseconds % toMilliseconds_1.MILLISECONDS_PER_MINUTE) /
43
+ toMilliseconds_1.MILLISECONDS_PER_SECOND);
44
+ const milliseconds = input.of.milliseconds % toMilliseconds_1.MILLISECONDS_PER_SECOND;
45
+ const durationWithRedundantZeros = {
46
+ weeks,
47
+ days,
48
+ hours,
49
+ minutes,
50
+ seconds,
51
+ milliseconds,
52
+ };
53
+ const duration = Object.fromEntries(Object.entries(durationWithRedundantZeros).filter(([key, val]) => val > 0));
54
+ return duration;
55
+ }
56
+ // otherwise, unsupported
57
+ throw new error_fns_1.UnexpectedCodePathError('input.of choice is not supported', {
58
+ input,
59
+ });
60
+ };
61
+ exports.getDuration = getDuration;
62
+ //# sourceMappingURL=getDuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDuration.js","sourceRoot":"","sources":["../../../src/logic/manipulate/getDuration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_fns_1 = require("test-fns");
4
+ const isUniDateTime_1 = require("../checks/isUniDateTime");
5
+ const getDuration_1 = require("./getDuration");
6
+ const toMilliseconds_1 = require("./toMilliseconds");
7
+ describe('getDuration', () => {
8
+ (0, test_fns_1.given)('milliseconds', () => {
9
+ (0, test_fns_1.when)('less than a second', () => {
10
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
11
+ const duration = (0, getDuration_1.getDuration)({ of: { milliseconds: 69 } });
12
+ expect(duration).toEqual({ milliseconds: 69 });
13
+ });
14
+ });
15
+ (0, test_fns_1.when)('less than a minute', () => {
16
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
17
+ const duration = (0, getDuration_1.getDuration)({ of: { milliseconds: 1069 } });
18
+ expect(duration).toEqual({ seconds: 1, milliseconds: 69 });
19
+ });
20
+ });
21
+ (0, test_fns_1.when)('less than an day', () => {
22
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
23
+ const duration = (0, getDuration_1.getDuration)({
24
+ of: { milliseconds: 7 * toMilliseconds_1.MILLISECONDS_PER_HOUR + 1069 },
25
+ });
26
+ expect(duration).toEqual({ hours: 7, seconds: 1, milliseconds: 69 });
27
+ });
28
+ });
29
+ (0, test_fns_1.when)('less than a week', () => {
30
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
31
+ const duration = (0, getDuration_1.getDuration)({
32
+ of: {
33
+ milliseconds: 3 * toMilliseconds_1.MILLISECONDS_PER_DAY + 7 * toMilliseconds_1.MILLISECONDS_PER_HOUR + 1069,
34
+ },
35
+ });
36
+ expect(duration).toEqual({
37
+ days: 3,
38
+ hours: 7,
39
+ seconds: 1,
40
+ milliseconds: 69,
41
+ });
42
+ });
43
+ });
44
+ (0, test_fns_1.when)('less than a month ', () => {
45
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
46
+ const duration = (0, getDuration_1.getDuration)({
47
+ of: {
48
+ milliseconds: 5 * toMilliseconds_1.MILLISECONDS_PER_WEEK +
49
+ 3 * toMilliseconds_1.MILLISECONDS_PER_DAY +
50
+ 7 * toMilliseconds_1.MILLISECONDS_PER_HOUR +
51
+ 1069,
52
+ },
53
+ });
54
+ expect(duration).toEqual({
55
+ weeks: 5,
56
+ days: 3,
57
+ hours: 7,
58
+ seconds: 1,
59
+ milliseconds: 69,
60
+ });
61
+ });
62
+ });
63
+ });
64
+ (0, test_fns_1.given)('range', () => {
65
+ (0, test_fns_1.when)('has parts of each time unit', () => {
66
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
67
+ const duration = (0, getDuration_1.getDuration)({
68
+ of: {
69
+ range: {
70
+ since: (0, isUniDateTime_1.asUniDateTime)('2024-09-09T13:08:21.4269Z'),
71
+ until: (0, isUniDateTime_1.asUniDateTime)('2024-09-17T15:53:31.3157Z'),
72
+ },
73
+ },
74
+ });
75
+ expect(duration).toEqual({
76
+ weeks: 1,
77
+ days: 1,
78
+ hours: 2,
79
+ minutes: 45,
80
+ seconds: 9,
81
+ milliseconds: 889,
82
+ });
83
+ });
84
+ });
85
+ });
86
+ (0, test_fns_1.given)('a unit to get the duration in', () => {
87
+ (0, test_fns_1.when)('asked to define it in seconds', () => {
88
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
89
+ const duration = (0, getDuration_1.getDuration)({
90
+ of: {
91
+ range: {
92
+ since: (0, isUniDateTime_1.asUniDateTime)('2024-09-09T13:08:21.4269Z'),
93
+ until: (0, isUniDateTime_1.asUniDateTime)('2024-09-17T15:53:31.3157Z'),
94
+ },
95
+ },
96
+ as: 'seconds',
97
+ });
98
+ expect(duration).toEqual({
99
+ seconds: 701109.889,
100
+ });
101
+ });
102
+ });
103
+ (0, test_fns_1.when)('asked to define it in seconds', () => {
104
+ (0, test_fns_1.then)('it should accurately define the duration', () => {
105
+ const duration = (0, getDuration_1.getDuration)({
106
+ of: {
107
+ range: {
108
+ since: (0, isUniDateTime_1.asUniDateTime)('2024-09-09T13:08:21.4269Z'),
109
+ until: (0, isUniDateTime_1.asUniDateTime)('2024-09-17T15:53:31.3157Z'),
110
+ },
111
+ },
112
+ as: 'minutes',
113
+ });
114
+ expect(duration).toEqual({
115
+ minutes: 11685.164816666667,
116
+ });
117
+ });
118
+ });
119
+ });
120
+ });
121
+ //# sourceMappingURL=getDuration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDuration.test.js","sourceRoot":"","sources":["../../../src/logic/manipulate/getDuration.test.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addDuration = void 0;
4
4
  const date_fns_1 = require("date-fns");
5
- const UniDuration_1 = require("../../domain/UniDuration");
6
5
  const isUniDate_1 = require("../checks/isUniDate");
7
6
  const isUniDateTime_1 = require("../checks/isUniDateTime");
7
+ const toMilliseconds_1 = require("./toMilliseconds");
8
8
  /**
9
9
  * add a duration to a datetime
10
10
  */
11
11
  const addDuration = (...args) => (0, isUniDate_1.isUniDate)(args[0])
12
- ? (0, isUniDate_1.asUniDate)((0, date_fns_1.addMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, UniDuration_1.toMilliseconds)(args[1])))
13
- : (0, isUniDateTime_1.asUniDateTime)((0, date_fns_1.addMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, UniDuration_1.toMilliseconds)(args[1])));
12
+ ? (0, isUniDate_1.asUniDate)((0, date_fns_1.addMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, toMilliseconds_1.toMilliseconds)(args[1])))
13
+ : (0, isUniDateTime_1.asUniDateTime)((0, date_fns_1.addMilliseconds)((0, date_fns_1.parseISO)(args[0]), (0, toMilliseconds_1.toMilliseconds)(args[1])));
14
14
  exports.addDuration = addDuration;
15
15
  //# sourceMappingURL=subDuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subDuration.js","sourceRoot":"","sources":["../../../src/logic/manipulate/subDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAIrD,0DAAuE;AACvE,mDAA2D;AAC3D,2DAAwD;AAExD;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,GAAG,IAEwD,EAC3D,EAAE,CACF,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,IAAA,qBAAS,EAAC,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAA,6BAAa,EACX,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;AATK,QAAA,WAAW,eAShB"}
1
+ {"version":3,"file":"subDuration.js","sourceRoot":"","sources":["../../../src/logic/manipulate/subDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAKrD,mDAA2D;AAC3D,2DAAwD;AACxD,qDAAkD;AAElD;;GAEG;AACI,MAAM,WAAW,GAAG,CACzB,GAAG,IAEwD,EAC3D,EAAE,CACF,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,IAAA,qBAAS,EAAC,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,IAAA,6BAAa,EACX,IAAA,0BAAe,EAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;AATK,QAAA,WAAW,eAShB"}
@@ -0,0 +1,11 @@
1
+ import { UniDuration } from '../../domain/UniDuration';
2
+ export declare const DAYS_PER_WEEK = 7;
3
+ export declare const HOURS_PER_DAY = 24;
4
+ export declare const MINUTES_PER_HOUR = 60;
5
+ export declare const SECONDS_PER_MINUTE = 60;
6
+ export declare const MILLISECONDS_PER_SECOND = 1000;
7
+ export declare const MILLISECONDS_PER_MINUTE: number;
8
+ export declare const MILLISECONDS_PER_HOUR: number;
9
+ export declare const MILLISECONDS_PER_DAY: number;
10
+ export declare const MILLISECONDS_PER_WEEK: number;
11
+ export declare const toMilliseconds: (duration: UniDuration) => number;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toMilliseconds = exports.MILLISECONDS_PER_WEEK = exports.MILLISECONDS_PER_DAY = exports.MILLISECONDS_PER_HOUR = exports.MILLISECONDS_PER_MINUTE = exports.MILLISECONDS_PER_SECOND = exports.SECONDS_PER_MINUTE = exports.MINUTES_PER_HOUR = exports.HOURS_PER_DAY = exports.DAYS_PER_WEEK = void 0;
4
+ exports.DAYS_PER_WEEK = 7;
5
+ exports.HOURS_PER_DAY = 24;
6
+ exports.MINUTES_PER_HOUR = 60;
7
+ exports.SECONDS_PER_MINUTE = 60;
8
+ exports.MILLISECONDS_PER_SECOND = 1000;
9
+ exports.MILLISECONDS_PER_MINUTE = exports.MILLISECONDS_PER_SECOND * exports.SECONDS_PER_MINUTE;
10
+ exports.MILLISECONDS_PER_HOUR = exports.MILLISECONDS_PER_MINUTE * exports.MINUTES_PER_HOUR;
11
+ exports.MILLISECONDS_PER_DAY = exports.MILLISECONDS_PER_HOUR * exports.HOURS_PER_DAY;
12
+ exports.MILLISECONDS_PER_WEEK = exports.MILLISECONDS_PER_DAY * exports.DAYS_PER_WEEK;
13
+ const toMilliseconds = (duration) => {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ const total = [
16
+ ((_a = duration.weeks) !== null && _a !== void 0 ? _a : 0) * exports.MILLISECONDS_PER_WEEK,
17
+ ((_b = duration.days) !== null && _b !== void 0 ? _b : 0) * exports.MILLISECONDS_PER_DAY,
18
+ ((_c = duration.hours) !== null && _c !== void 0 ? _c : 0) * exports.MILLISECONDS_PER_HOUR,
19
+ ((_d = duration.minutes) !== null && _d !== void 0 ? _d : 0) * exports.MILLISECONDS_PER_MINUTE,
20
+ ((_e = duration.seconds) !== null && _e !== void 0 ? _e : 0) * exports.MILLISECONDS_PER_SECOND,
21
+ (_f = duration.milliseconds) !== null && _f !== void 0 ? _f : 0,
22
+ ].reduce((totalNow, thisMilliseconds) => totalNow + thisMilliseconds, 0);
23
+ return total;
24
+ };
25
+ exports.toMilliseconds = toMilliseconds;
26
+ //# sourceMappingURL=toMilliseconds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toMilliseconds.js","sourceRoot":"","sources":["../../../src/logic/manipulate/toMilliseconds.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,aAAa,GAAG,EAAE,CAAC;AACnB,QAAA,gBAAgB,GAAG,EAAE,CAAC;AACtB,QAAA,kBAAkB,GAAG,EAAE,CAAC;AACxB,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAC/B,QAAA,uBAAuB,GAClC,+BAAuB,GAAG,0BAAkB,CAAC;AAClC,QAAA,qBAAqB,GAAG,+BAAuB,GAAG,wBAAgB,CAAC;AACnE,QAAA,oBAAoB,GAAG,6BAAqB,GAAG,qBAAa,CAAC;AAC7D,QAAA,qBAAqB,GAAG,4BAAoB,GAAG,qBAAa,CAAC;AAEnE,MAAM,cAAc,GAAG,CAAC,QAAqB,EAAU,EAAE;;IAC9D,MAAM,KAAK,GAAG;QACZ,CAAC,MAAA,QAAQ,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,6BAAqB;QAC7C,CAAC,MAAA,QAAQ,CAAC,IAAI,mCAAI,CAAC,CAAC,GAAG,4BAAoB;QAC3C,CAAC,MAAA,QAAQ,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,6BAAqB;QAC7C,CAAC,MAAA,QAAQ,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,+BAAuB;QACjD,CAAC,MAAA,QAAQ,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,+BAAuB;QACjD,MAAA,QAAQ,CAAC,YAAY,mCAAI,CAAC;KAC3B,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC,QAAQ,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.startDurationStopwatch = void 0;
4
4
  const process_1 = require("process");
5
- const UniDuration_1 = require("../../../domain/UniDuration");
5
+ const toMilliseconds_1 = require("../../manipulate/toMilliseconds");
6
6
  const roundToHundredths = (num) => Math.round(num * 100) / 100; // https://stackoverflow.com/a/14968691/3068233
7
7
  /**
8
8
  * .what = a procedure which returns a duration stopwatch
@@ -28,7 +28,7 @@ const startDurationStopwatch = (input, context) => {
28
28
  if (!canLog)
29
29
  return output;
30
30
  // determine if we should log, based on threshold
31
- const durationThresholdInMilliseconds = (0, UniDuration_1.toMilliseconds)(typeof logOptions === 'boolean' || !(logOptions === null || logOptions === void 0 ? void 0 : logOptions.threshold)
31
+ const durationThresholdInMilliseconds = (0, toMilliseconds_1.toMilliseconds)(typeof logOptions === 'boolean' || !(logOptions === null || logOptions === void 0 ? void 0 : logOptions.threshold)
32
32
  ? { seconds: 1 }
33
33
  : logOptions.threshold);
34
34
  const durationThresholdWasBreached = durationThresholdInMilliseconds <= durationInMilliseconds;
@@ -1 +1 @@
1
- {"version":3,"file":"startDurationStopwatch.js","sourceRoot":"","sources":["../../../../src/logic/observe/stopwatch/startDurationStopwatch.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAIjC,6DAA0E;AAE1E,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,+CAA+C;AAMvH;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CACpC,KAAoC,EACpC,OAA0B,EAC1B,EAAE;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IACxB,MAAM,sBAAsB,GAAG,gBAAM,CAAC,MAAM,EAAE,CAAC;IAE/C,mCAAmC;IACnC,MAAM,IAAI,GAAG,CACX,KAAmB,EACqB,EAAE;;QAC1C,MAAM,UAAU,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,mCAAI,iBAAiB,CAAC;QAEnD,uBAAuB;QACvB,MAAM,oBAAoB,GAAG,gBAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;QAC5E,MAAM,sBAAsB,GAAG,iBAAiB,CAC9C,MAAM,CAAC,qBAAqB,CAAC,GAAG,GAAG,CACpC,CAAC,CAAC,+CAA+C;QAClD,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,sBAAsB,EAAE,EAAE,CAAC;QAEtE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,UAAU,KAAK,KAAK,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QAE3B,iDAAiD;QACjD,MAAM,+BAA+B,GAAG,IAAA,4BAAc,EACpD,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAA;YACvD,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;YAChB,CAAC,CAAC,UAAU,CAAC,SAAS,CACzB,CAAC;QACF,MAAM,4BAA4B,GAChC,+BAA+B,IAAI,sBAAsB,CAAC;QAC5D,IAAI,CAAC,4BAA4B;YAAE,OAAO,MAAM,CAAC;QAEjD,4DAA4D;QAC5D,MAAM,QAAQ,GACZ,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAA;YACnD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,MAAM,iBAAiB,GAAG,iBAAiB,CACzC,MAAM,CAAC,qBAAqB,CAAC,GAAG,GAAG,CACpC,CAAC,CAAC,+CAA+C;QAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CACnB,GAAG,KAAK,SAAS,iBAAiB,qBAAqB,EACvD;YACE,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,iBAAiB;gBAC1B,YAAY,EAAE,sBAAsB;aACrC;SACF,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,uBAAuB;IACvB,OAAO;QACL,sCAAsC;QACtC,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AA9DW,QAAA,sBAAsB,0BA8DjC"}
1
+ {"version":3,"file":"startDurationStopwatch.js","sourceRoot":"","sources":["../../../../src/logic/observe/stopwatch/startDurationStopwatch.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAKjC,oEAAiE;AAEjE,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,+CAA+C;AAMvH;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CACpC,KAAoC,EACpC,OAA0B,EAC1B,EAAE;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IACxB,MAAM,sBAAsB,GAAG,gBAAM,CAAC,MAAM,EAAE,CAAC;IAE/C,mCAAmC;IACnC,MAAM,IAAI,GAAG,CACX,KAAmB,EACqB,EAAE;;QAC1C,MAAM,UAAU,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,mCAAI,iBAAiB,CAAC;QAEnD,uBAAuB;QACvB,MAAM,oBAAoB,GAAG,gBAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;QAC5E,MAAM,sBAAsB,GAAG,iBAAiB,CAC9C,MAAM,CAAC,qBAAqB,CAAC,GAAG,GAAG,CACpC,CAAC,CAAC,+CAA+C;QAClD,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,sBAAsB,EAAE,EAAE,CAAC;QAEtE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,UAAU,KAAK,KAAK,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QAE3B,iDAAiD;QACjD,MAAM,+BAA+B,GAAG,IAAA,+BAAc,EACpD,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAA;YACvD,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;YAChB,CAAC,CAAC,UAAU,CAAC,SAAS,CACzB,CAAC;QACF,MAAM,4BAA4B,GAChC,+BAA+B,IAAI,sBAAsB,CAAC;QAC5D,IAAI,CAAC,4BAA4B;YAAE,OAAO,MAAM,CAAC;QAEjD,4DAA4D;QAC5D,MAAM,QAAQ,GACZ,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAA;YACnD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,MAAM,iBAAiB,GAAG,iBAAiB,CACzC,MAAM,CAAC,qBAAqB,CAAC,GAAG,GAAG,CACpC,CAAC,CAAC,+CAA+C;QAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CACnB,GAAG,KAAK,SAAS,iBAAiB,qBAAqB,EACvD;YACE,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,iBAAiB;gBAC1B,YAAY,EAAE,sBAAsB;aACrC;SACF,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,uBAAuB;IACvB,OAAO;QACL,sCAAsC;QACtC,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AA9DW,QAAA,sBAAsB,0BA8DjC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sleep = void 0;
4
- const UniDuration_1 = require("../../domain/UniDuration");
5
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, typeof ms === 'number' ? ms : (0, UniDuration_1.toMilliseconds)(ms)));
4
+ const toMilliseconds_1 = require("../manipulate/toMilliseconds");
5
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, typeof ms === 'number' ? ms : (0, toMilliseconds_1.toMilliseconds)(ms)));
6
6
  exports.sleep = sleep;
7
7
  //# sourceMappingURL=sleep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/logic/utils/sleep.ts"],"names":[],"mappings":";;;AAAA,0DAAuE;AAEhE,MAAM,KAAK,GAAG,CAAC,EAAwB,EAAiB,EAAE,CAC/D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACtB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,4BAAc,EAAC,EAAE,CAAC,CAAC,CACtE,CAAC;AAHS,QAAA,KAAK,SAGd"}
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/logic/utils/sleep.ts"],"names":[],"mappings":";;;AACA,iEAA8D;AAEvD,MAAM,KAAK,GAAG,CAAC,EAAwB,EAAiB,EAAE,CAC/D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACtB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,EAAE,CAAC,CAAC,CACtE,CAAC;AAHS,QAAA,KAAK,SAGd"}
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.waitFor = exports.WaitForTimedOutError = void 0;
13
13
  const error_fns_1 = require("@ehmpathy/error-fns");
14
14
  const type_fns_1 = require("type-fns");
15
- const UniDuration_1 = require("../../domain/UniDuration");
15
+ const toMilliseconds_1 = require("../manipulate/toMilliseconds");
16
16
  const sleep_1 = require("../utils/sleep");
17
17
  const DEFAULT_TIMEOUT = { seconds: 60 };
18
18
  const DEFAULT_INTERVAL = { seconds: 10 };
@@ -45,7 +45,7 @@ options) => __awaiter(void 0, void 0, void 0, function* () {
45
45
  const interval = (_b = options === null || options === void 0 ? void 0 : options.interval) !== null && _b !== void 0 ? _b : DEFAULT_INTERVAL;
46
46
  // track the timestamps of interest
47
47
  const startAtMSE = new Date().getTime();
48
- const timeoutAtMSE = startAtMSE + (0, UniDuration_1.toMilliseconds)(timeout);
48
+ const timeoutAtMSE = startAtMSE + (0, toMilliseconds_1.toMilliseconds)(timeout);
49
49
  // check each interval
50
50
  while (new Date().getTime() < timeoutAtMSE) {
51
51
  const output = yield extractor();
@@ -1 +1 @@
1
- {"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../../../src/logic/wrappers/waitFor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAmD;AACnD,uCAAwD;AAExD,0DAAuE;AACvE,0CAAuC;AAEvC,MAAM,eAAe,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrD,MAAM,gBAAgB,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEtD,MAAa,oBAAqB,SAAQ,wBAAY;CAAG;AAAzD,oDAAyD;AAEzD;;;;;;;GAOG;AACI,MAAM,OAAO,GAAG;AACrB;;;;;GAKG;AACH,SAA2B;AAE3B;;GAEG;AACH,OAUC,EACyB,EAAE;;IAC5B,kCAAkC;IAClC,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,eAAe,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,gBAAgB,CAAC;IAEvD,mCAAmC;IACnC,MAAM,UAAU,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,YAAY,GAAW,UAAU,GAAG,IAAA,4BAAc,EAAC,OAAO,CAAC,CAAC;IAElE,sBAAsB;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,MAAM,IAAA,aAAK,EAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,6DAA6D;IAC7D,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,EAAE;QAC1E,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AA5CW,QAAA,OAAO,WA4ClB"}
1
+ {"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../../../src/logic/wrappers/waitFor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAmD;AACnD,uCAAwD;AAGxD,iEAA8D;AAC9D,0CAAuC;AAEvC,MAAM,eAAe,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrD,MAAM,gBAAgB,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEtD,MAAa,oBAAqB,SAAQ,wBAAY;CAAG;AAAzD,oDAAyD;AAEzD;;;;;;;GAOG;AACI,MAAM,OAAO,GAAG;AACrB;;;;;GAKG;AACH,SAA2B;AAE3B;;GAEG;AACH,OAUC,EACyB,EAAE;;IAC5B,kCAAkC;IAClC,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,eAAe,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,gBAAgB,CAAC;IAEvD,mCAAmC;IACnC,MAAM,UAAU,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,YAAY,GAAW,UAAU,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC;IAElE,sBAAsB;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,MAAM,IAAA,aAAK,EAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,6DAA6D;IAC7D,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,EAAE;QAC1E,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AA5CW,QAAA,OAAO,WA4ClB"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@ehmpathy/uni-time",
3
3
  "author": "ehmpathy",
4
4
  "description": "a glossary of universally intuitive time, date, and duration domain literals",
5
- "version": "1.6.0",
5
+ "version": "1.7.0",
6
6
  "repository": "ehmpathy/uni-time",
7
7
  "homepage": "https://github.com/ehmpathy/uni-time",
8
8
  "keywords": [
@@ -14,6 +14,7 @@
14
14
  "UniDuration"
15
15
  ],
16
16
  "bugs": "https://github.com/ehmpathy/uni-time/issues",
17
+ "license": "MIT",
17
18
  "main": "dist/index.js",
18
19
  "engines": {
19
20
  "node": ">=8.0.0"
@@ -46,26 +47,28 @@
46
47
  "prepublish": "npm run build",
47
48
  "preversion": "npm run prepush",
48
49
  "postversion": "git push origin HEAD --tags --no-verify",
49
- "postinstall": "[ -d .git ] && npx husky install || exit 0"
50
+ "postinstall": "[ -d .git ] && npm run prepare:husky || exit 0",
51
+ "prepare:husky": "npx husky install && chmod ug+x .husky/*"
50
52
  },
51
53
  "dependencies": {
52
54
  "@ehmpathy/error-fns": "1.0.2",
53
55
  "date-fns": "3.6.0",
54
56
  "domain-glossaries": "1.0.0",
55
- "type-fns": "1.15.0"
57
+ "test-fns": "1.5.0",
58
+ "type-fns": "1.19.0"
56
59
  },
57
60
  "devDependencies": {
58
- "@commitlint/cli": "17.6.7",
61
+ "@commitlint/cli": "19.3.0",
59
62
  "@commitlint/config-conventional": "13.1.0",
60
- "@trivago/prettier-plugin-sort-imports": "2.0.4",
63
+ "@trivago/prettier-plugin-sort-imports": "4.3.0",
61
64
  "@tsconfig/node-lts-strictest": "18.12.1",
62
65
  "@types/jest": "29.2.4",
63
66
  "@typescript-eslint/eslint-plugin": "7.8.0",
64
67
  "@typescript-eslint/parser": "7.8.0",
65
68
  "core-js": "3.26.1",
66
69
  "cz-conventional-changelog": "3.3.0",
67
- "declapract": "^0.11.2",
68
- "declapract-typescript-ehmpathy": "^0.31.6",
70
+ "declapract": "0.11.5",
71
+ "declapract-typescript-ehmpathy": "0.35.6",
69
72
  "depcheck": "1.4.3",
70
73
  "eslint": "8.56.0",
71
74
  "eslint-config-airbnb-typescript": "18.0.0",
@@ -85,6 +88,5 @@
85
88
  "commitizen": {
86
89
  "path": "./node_modules/cz-conventional-changelog"
87
90
  }
88
- },
89
- "license": "MIT"
91
+ }
90
92
  }