@ehmpathy/uni-time 1.6.1 → 1.7.1

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 (34) hide show
  1. package/dist/domain/UniDateTime.d.ts +5 -5
  2. package/dist/domain/UniDateTime.test.d.ts +1 -0
  3. package/dist/domain/UniDateTime.test.js +17 -0
  4. package/dist/domain/UniDateTime.test.js.map +1 -0
  5. package/dist/domain/UniDuration.d.ts +3 -4
  6. package/dist/domain/UniDuration.js +0 -19
  7. package/dist/domain/UniDuration.js.map +1 -1
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +2 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/logic/checks/isUniDate.d.ts +1 -1
  12. package/dist/logic/checks/isUniDateTime.d.ts +1 -1
  13. package/dist/logic/manipulate/addDuration.d.ts +1 -1
  14. package/dist/logic/manipulate/addDuration.js +3 -3
  15. package/dist/logic/manipulate/addDuration.js.map +1 -1
  16. package/dist/logic/manipulate/getDuration.d.ts +22 -0
  17. package/dist/logic/manipulate/getDuration.js +62 -0
  18. package/dist/logic/manipulate/getDuration.js.map +1 -0
  19. package/dist/logic/manipulate/getDuration.test.d.ts +1 -0
  20. package/dist/logic/manipulate/getDuration.test.js +121 -0
  21. package/dist/logic/manipulate/getDuration.test.js.map +1 -0
  22. package/dist/logic/manipulate/subDuration.d.ts +1 -1
  23. package/dist/logic/manipulate/subDuration.js +3 -3
  24. package/dist/logic/manipulate/subDuration.js.map +1 -1
  25. package/dist/logic/manipulate/toMilliseconds.d.ts +11 -0
  26. package/dist/logic/manipulate/toMilliseconds.js +26 -0
  27. package/dist/logic/manipulate/toMilliseconds.js.map +1 -0
  28. package/dist/logic/observe/stopwatch/startDurationStopwatch.js +2 -2
  29. package/dist/logic/observe/stopwatch/startDurationStopwatch.js.map +1 -1
  30. package/dist/logic/utils/sleep.js +2 -2
  31. package/dist/logic/utils/sleep.js.map +1 -1
  32. package/dist/logic/wrappers/waitFor.js +2 -2
  33. package/dist/logic/wrappers/waitFor.js.map +1 -1
  34. package/package.json +2 -1
@@ -2,15 +2,15 @@ import { AsOfGlossary } from 'domain-glossaries';
2
2
  /**
3
3
  * a universally unambiguous datetime serialized as a string; yyyy-MM-ddThh:mm:ssZ
4
4
  */
5
- export type UniDateTime = AsOfGlossary<string, 'uni-time'>;
5
+ export type UniDateTime = AsOfGlossary<string, 'uni-time.UniDateTime'>;
6
6
  /**
7
7
  * a universally unambiguous date serialized as a string; yyyy-MM-dd
8
8
  */
9
- export type UniDate = AsOfGlossary<string, 'uni-time'>;
9
+ export type UniDate = AsOfGlossary<string, 'uni-time.UniDate'>;
10
10
  /**
11
11
  * a universally unambiguous month serialized as a string; yyyy-MM
12
12
  */
13
- export type UniMonth = AsOfGlossary<string, 'uni-time'>;
13
+ export type UniMonth = AsOfGlossary<string, 'uni-time.UniMonth'>;
14
14
  /**
15
15
  * a universally unambiguous date range
16
16
  *
@@ -21,7 +21,7 @@ export type UniMonth = AsOfGlossary<string, 'uni-time'>;
21
21
  export type UniDateRange = AsOfGlossary<{
22
22
  since: UniDate;
23
23
  until: UniDate;
24
- }, 'uni-time', false>;
24
+ }, 'uni-time.UniDateRange', false>;
25
25
  /**
26
26
  * a universally unambiguous datetime range
27
27
  *
@@ -32,4 +32,4 @@ export type UniDateRange = AsOfGlossary<{
32
32
  export type UniDateTimeRange = AsOfGlossary<{
33
33
  since: UniDateTime;
34
34
  until: UniDateTime;
35
- }, 'uni-time', false>;
35
+ }, 'uni-time.UniDateTimeRange', false>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_fns_1 = require("test-fns");
4
+ const isUniDateTime_1 = require("../logic/checks/isUniDateTime");
5
+ describe('UniDateTime', () => {
6
+ (0, test_fns_1.given)('a UniDateTimeRange', () => {
7
+ (0, test_fns_1.then)('it should not be assignable to a UniDateRange', () => {
8
+ const range = {
9
+ // @ts-expect-error; UniDateTime should not be assignable UniDate
10
+ since: (0, isUniDateTime_1.asUniDateTime)(new Date()),
11
+ // @ts-expect-error; UniDateTime should not be assignable UniDate
12
+ until: (0, isUniDateTime_1.asUniDateTime)(new Date()),
13
+ };
14
+ });
15
+ });
16
+ });
17
+ //# sourceMappingURL=UniDateTime.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniDateTime.test.js","sourceRoot":"","sources":["../../src/domain/UniDateTime.test.ts"],"names":[],"mappings":";;AAAA,uCAAuC;AAEvC,iEAA8D;AAG9D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAA,gBAAK,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAC/B,IAAA,eAAI,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAiB;gBAC1B,iEAAiE;gBACjE,KAAK,EAAE,IAAA,6BAAa,EAAC,IAAI,IAAI,EAAE,CAAC;gBAEhC,iEAAiE;gBACjE,KAAK,EAAE,IAAA,6BAAa,EAAC,IAAI,IAAI,EAAE,CAAC;aACjC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,11 +1,10 @@
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;
7
7
  minutes: number;
8
8
  seconds: number;
9
9
  milliseconds: number;
10
- }>, 'uni-time', false>;
11
- export declare const toMilliseconds: (duration: UniDuration) => number;
10
+ }>, 'uni-time.UniDuration', false>;
@@ -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"}
@@ -7,4 +7,4 @@ export declare const asUniDate: (input: Parameters<typeof castInputToDate>[0]) =
7
7
  /**
8
8
  * checks whether a string literal input is a UniDate
9
9
  */
10
- export declare const isUniDate: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time">>;
10
+ export declare const isUniDate: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time.UniDate">>;
@@ -7,4 +7,4 @@ export declare const asUniDateTime: (input: Parameters<typeof castInputToDate>[0
7
7
  /**
8
8
  * checks whether a string literal input is a UniDateTime
9
9
  */
10
- export declare const isUniDateTime: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time">>;
10
+ export declare const isUniDateTime: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time.UniDateTime">>;
@@ -4,4 +4,4 @@ import { UniDuration } from '../../domain/UniDuration';
4
4
  /**
5
5
  * subtract a duration from a datetime
6
6
  */
7
- export declare const subDuration: (...args: [UniDateTime, UniDuration] | [UniDate, PickOne<Pick<Required<UniDuration>, 'days'>>]) => string & import("domain-glossaries").OfGlossary<"uni-time">;
7
+ export declare const subDuration: (...args: [UniDateTime, UniDuration] | [UniDate, PickOne<Pick<Required<UniDuration>, 'days'>>]) => (string & import("domain-glossaries").OfGlossary<"uni-time.UniDateTime">) | (string & import("domain-glossaries").OfGlossary<"uni-time.UniDate">);
@@ -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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"}
@@ -4,4 +4,4 @@ import { UniDuration } from '../../domain/UniDuration';
4
4
  /**
5
5
  * add a duration to a datetime
6
6
  */
7
- export declare const addDuration: (...args: [UniDateTime, UniDuration] | [UniDate, PickOne<Pick<Required<UniDuration>, 'days'>>]) => string & import("domain-glossaries").OfGlossary<"uni-time">;
7
+ export declare const addDuration: (...args: [UniDateTime, UniDuration] | [UniDate, PickOne<Pick<Required<UniDuration>, 'days'>>]) => (string & import("domain-glossaries").OfGlossary<"uni-time.UniDateTime">) | (string & import("domain-glossaries").OfGlossary<"uni-time.UniDate">);
@@ -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.1",
5
+ "version": "1.7.1",
6
6
  "repository": "ehmpathy/uni-time",
7
7
  "homepage": "https://github.com/ehmpathy/uni-time",
8
8
  "keywords": [
@@ -54,6 +54,7 @@
54
54
  "@ehmpathy/error-fns": "1.0.2",
55
55
  "date-fns": "3.6.0",
56
56
  "domain-glossaries": "1.0.0",
57
+ "test-fns": "1.5.0",
57
58
  "type-fns": "1.19.0"
58
59
  },
59
60
  "devDependencies": {