@ehmpathy/uni-time 1.4.2 → 1.6.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.
Files changed (46) hide show
  1. package/dist/index.d.ts +8 -6
  2. package/dist/index.js +8 -6
  3. package/dist/index.js.map +1 -1
  4. package/dist/logic/casts/castInputToDate.js.map +1 -0
  5. package/dist/{casts → logic/casts}/toMillisecondsSinceEpoch.d.ts +1 -1
  6. package/dist/logic/casts/toMillisecondsSinceEpoch.js.map +1 -0
  7. package/dist/{checks → logic/checks}/isUniDate.d.ts +1 -1
  8. package/dist/logic/checks/isUniDate.js.map +1 -0
  9. package/dist/logic/checks/isUniDate.test.js.map +1 -0
  10. package/dist/{checks → logic/checks}/isUniDateTime.d.ts +1 -1
  11. package/dist/logic/checks/isUniDateTime.js.map +1 -0
  12. package/dist/logic/checks/isUniDateTime.test.js.map +1 -0
  13. package/dist/{manipulate → logic/manipulate}/addDuration.d.ts +2 -2
  14. package/dist/{manipulate → logic/manipulate}/addDuration.js +1 -1
  15. package/dist/logic/manipulate/addDuration.js.map +1 -0
  16. package/dist/{manipulate → logic/manipulate}/subDuration.d.ts +2 -2
  17. package/dist/{manipulate → logic/manipulate}/subDuration.js +1 -1
  18. package/dist/logic/manipulate/subDuration.js.map +1 -0
  19. package/dist/logic/observe/stopwatch/startDurationStopwatch.d.ts +25 -0
  20. package/dist/logic/observe/stopwatch/startDurationStopwatch.js +58 -0
  21. package/dist/logic/observe/stopwatch/startDurationStopwatch.js.map +1 -0
  22. package/dist/{utils → logic/utils}/sleep.d.ts +1 -1
  23. package/dist/{utils → logic/utils}/sleep.js +1 -1
  24. package/dist/logic/utils/sleep.js.map +1 -0
  25. package/dist/logic/wrappers/waitFor.d.ts +23 -0
  26. package/dist/logic/wrappers/waitFor.js +63 -0
  27. package/dist/logic/wrappers/waitFor.js.map +1 -0
  28. package/package.json +4 -2
  29. package/dist/casts/castInputToDate.js.map +0 -1
  30. package/dist/casts/toMillisecondsSinceEpoch.js.map +0 -1
  31. package/dist/checks/isUniDate.js.map +0 -1
  32. package/dist/checks/isUniDate.test.js.map +0 -1
  33. package/dist/checks/isUniDateTime.js.map +0 -1
  34. package/dist/checks/isUniDateTime.test.js.map +0 -1
  35. package/dist/manipulate/addDuration.js.map +0 -1
  36. package/dist/manipulate/subDuration.js.map +0 -1
  37. package/dist/utils/sleep.js.map +0 -1
  38. /package/dist/{casts → logic/casts}/castInputToDate.d.ts +0 -0
  39. /package/dist/{casts → logic/casts}/castInputToDate.js +0 -0
  40. /package/dist/{casts → logic/casts}/toMillisecondsSinceEpoch.js +0 -0
  41. /package/dist/{checks → logic/checks}/isUniDate.js +0 -0
  42. /package/dist/{checks → logic/checks}/isUniDate.test.d.ts +0 -0
  43. /package/dist/{checks → logic/checks}/isUniDate.test.js +0 -0
  44. /package/dist/{checks → logic/checks}/isUniDateTime.js +0 -0
  45. /package/dist/{checks → logic/checks}/isUniDateTime.test.d.ts +0 -0
  46. /package/dist/{checks → logic/checks}/isUniDateTime.test.js +0 -0
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export * from './domain/UniDateTime';
2
2
  export * from './domain/UniDuration';
3
- export * from './utils/sleep';
4
- export * from './checks/isUniDate';
5
- export * from './checks/isUniDateTime';
6
- export * from './casts/toMillisecondsSinceEpoch';
7
- export * from './manipulate/addDuration';
8
- export * from './manipulate/subDuration';
3
+ export * from './logic/utils/sleep';
4
+ export * from './logic/checks/isUniDate';
5
+ export * from './logic/checks/isUniDateTime';
6
+ export * from './logic/casts/toMillisecondsSinceEpoch';
7
+ export * from './logic/manipulate/addDuration';
8
+ export * from './logic/manipulate/subDuration';
9
+ export * from './logic/wrappers/waitFor';
10
+ export * from './logic/observe/stopwatch/startDurationStopwatch';
package/dist/index.js CHANGED
@@ -16,10 +16,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./domain/UniDateTime"), exports);
18
18
  __exportStar(require("./domain/UniDuration"), exports);
19
- __exportStar(require("./utils/sleep"), exports);
20
- __exportStar(require("./checks/isUniDate"), exports);
21
- __exportStar(require("./checks/isUniDateTime"), exports);
22
- __exportStar(require("./casts/toMillisecondsSinceEpoch"), exports);
23
- __exportStar(require("./manipulate/addDuration"), exports);
24
- __exportStar(require("./manipulate/subDuration"), exports);
19
+ __exportStar(require("./logic/utils/sleep"), exports);
20
+ __exportStar(require("./logic/checks/isUniDate"), exports);
21
+ __exportStar(require("./logic/checks/isUniDateTime"), exports);
22
+ __exportStar(require("./logic/casts/toMillisecondsSinceEpoch"), exports);
23
+ __exportStar(require("./logic/manipulate/addDuration"), exports);
24
+ __exportStar(require("./logic/manipulate/subDuration"), exports);
25
+ __exportStar(require("./logic/wrappers/waitFor"), exports);
26
+ __exportStar(require("./logic/observe/stopwatch/startDurationStopwatch"), exports);
25
27
  //# 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,gDAA8B;AAC9B,qDAAmC;AACnC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,2DAAyC"}
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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"castInputToDate.js","sourceRoot":"","sources":["../../../src/logic/casts/castInputToDate.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAGvD,MAAM,eAAe,GAAG,CAC7B,KAaM,EACA,EAAE;IACR,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,mCAAuB,CAAC,iCAAiC,EAAE;QACnE,KAAK;KACN,CAAC,CAAC;AACL,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B"}
@@ -1,3 +1,3 @@
1
- import { UniDate, UniDateTime } from '../domain/UniDateTime';
1
+ import { UniDate, UniDateTime } from '../../domain/UniDateTime';
2
2
  export declare const toMillisecondsSinceEpoch: (input: UniDate | UniDateTime) => number;
3
3
  export { toMillisecondsSinceEpoch as toMse };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toMillisecondsSinceEpoch.js","sourceRoot":"","sources":["../../../src/logic/casts/toMillisecondsSinceEpoch.ts"],"names":[],"mappings":";;;AAEO,MAAM,wBAAwB,GAAG,CACtC,KAA4B,EACpB,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAF1B,QAAA,wBAAwB,4BAEE;AAEF,gBAJxB,gCAAwB,CAIK"}
@@ -1,5 +1,5 @@
1
+ import { UniDate } from '../../domain/UniDateTime';
1
2
  import { castInputToDate } from '../casts/castInputToDate';
2
- import { UniDate } from '../domain/UniDateTime';
3
3
  /**
4
4
  * casts a date like input into a UniDate
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUniDate.js","sourceRoot":"","sources":["../../../src/logic/checks/isUniDate.ts"],"names":[],"mappings":";;;AAAA,uCAA4C;AAC5C,uCAAsC;AAGtC,8DAA2D;AAE3D;;GAEG;AACI,MAAM,SAAS,GAAG,CACvB,KAA4C,EACnC,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,EAAE,YAAY,CAAY,CAAC;AAFzD,QAAA,SAAS,aAEgD;AAEtE;;GAEG;AACU,QAAA,SAAS,GAAG,IAAA,qBAAU,EAAC,CAAC,KAAa,EAAoB,EAAE;IACtE,IAAI,CAAC;QACH,OAAO,IAAA,iBAAS,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAC9C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUniDate.test.js","sourceRoot":"","sources":["../../../src/logic/checks/isUniDate.test.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,qBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
+ import { UniDateTime } from '../../domain/UniDateTime';
1
2
  import { castInputToDate } from '../casts/castInputToDate';
2
- import { UniDateTime } from '../domain/UniDateTime';
3
3
  /**
4
4
  * casts a datetime like input into a uniDateTime
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUniDateTime.js","sourceRoot":"","sources":["../../../src/logic/checks/isUniDateTime.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,uCAAsC;AAGtC,8DAA2D;AAE3D;;GAEG;AACI,MAAM,aAAa,GAAG,CAC3B,KAA4C,EAC/B,EAAE,CAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,CAAC,WAAW,EAAiB,CAAC;AAFzD,QAAA,aAAa,iBAE4C;AAEtE;;GAEG;AACU,QAAA,aAAa,GAAG,IAAA,qBAAU,EACrC,CAAC,KAAa,EAAwB,EAAE;IACtC,IAAI,CAAC;QACH,OAAO,IAAA,qBAAa,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUniDateTime.test.js","sourceRoot":"","sources":["../../../src/logic/checks/isUniDateTime.test.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,6BAAa,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { PickOne } from 'type-fns';
2
- import { UniDate, UniDateTime } from '../domain/UniDateTime';
3
- import { UniDuration } from '../domain/UniDuration';
2
+ import { UniDate, UniDateTime } from '../../domain/UniDateTime';
3
+ import { UniDuration } from '../../domain/UniDuration';
4
4
  /**
5
5
  * subtract a duration from a datetime
6
6
  */
@@ -2,9 +2,9 @@
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");
5
6
  const isUniDate_1 = require("../checks/isUniDate");
6
7
  const isUniDateTime_1 = require("../checks/isUniDateTime");
7
- const UniDuration_1 = require("../domain/UniDuration");
8
8
  /**
9
9
  * subtract a duration from a datetime
10
10
  */
@@ -0,0 +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,6 +1,6 @@
1
1
  import { PickOne } from 'type-fns';
2
- import { UniDate, UniDateTime } from '../domain/UniDateTime';
3
- import { UniDuration } from '../domain/UniDuration';
2
+ import { UniDate, UniDateTime } from '../../domain/UniDateTime';
3
+ import { UniDuration } from '../../domain/UniDuration';
4
4
  /**
5
5
  * add a duration to a datetime
6
6
  */
@@ -2,9 +2,9 @@
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");
5
6
  const isUniDate_1 = require("../checks/isUniDate");
6
7
  const isUniDateTime_1 = require("../checks/isUniDateTime");
7
- const UniDuration_1 = require("../domain/UniDuration");
8
8
  /**
9
9
  * add a duration to a datetime
10
10
  */
@@ -0,0 +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"}
@@ -0,0 +1,25 @@
1
+ import type { LogLevel } from 'simple-leveled-log-methods';
2
+ import type { VisualogicContext } from 'visualogic';
3
+ import { UniDuration } from '../../../domain/UniDuration';
4
+ interface StopOptions {
5
+ log?: boolean | {
6
+ threshold?: UniDuration;
7
+ level?: LogLevel;
8
+ };
9
+ }
10
+ /**
11
+ * .what = a procedure which returns a duration stopwatch
12
+ * .what.intent =
13
+ * - start a duration stopwatch for a given reason
14
+ * - stop it when ready, with optional log ability
15
+ */
16
+ export declare const startDurationStopwatch: (input: {
17
+ for: string;
18
+ } & StopOptions, context: VisualogicContext) => {
19
+ stop: (input?: StopOptions) => {
20
+ duration: {
21
+ milliseconds: number;
22
+ };
23
+ };
24
+ };
25
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startDurationStopwatch = void 0;
4
+ const process_1 = require("process");
5
+ const UniDuration_1 = require("../../../domain/UniDuration");
6
+ const roundToHundredths = (num) => Math.round(num * 100) / 100; // https://stackoverflow.com/a/14968691/3068233
7
+ /**
8
+ * .what = a procedure which returns a duration stopwatch
9
+ * .what.intent =
10
+ * - start a duration stopwatch for a given reason
11
+ * - stop it when ready, with optional log ability
12
+ */
13
+ const startDurationStopwatch = (input, context) => {
14
+ const logOptionsDefault = input.log;
15
+ const title = input.for;
16
+ const startTimeInNanoseconds = process_1.hrtime.bigint();
17
+ // define how to stop the stopwatch
18
+ const stop = (input) => {
19
+ var _a;
20
+ const logOptions = (_a = input === null || input === void 0 ? void 0 : input.log) !== null && _a !== void 0 ? _a : logOptionsDefault;
21
+ // compute the duration
22
+ const endTimeInNanoseconds = process_1.hrtime.bigint();
23
+ const durationInNanoseconds = endTimeInNanoseconds - startTimeInNanoseconds;
24
+ const durationInMilliseconds = roundToHundredths(Number(durationInNanoseconds) / 1e6); // https://stackoverflow.com/a/53970656/3068233
25
+ const output = { duration: { milliseconds: durationInMilliseconds } };
26
+ // determine if we are allowed to log, based on user input
27
+ const canLog = logOptions !== false;
28
+ if (!canLog)
29
+ return output;
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)
32
+ ? { seconds: 1 }
33
+ : logOptions.threshold);
34
+ const durationThresholdWasBreached = durationThresholdInMilliseconds <= durationInMilliseconds;
35
+ if (!durationThresholdWasBreached)
36
+ return output;
37
+ // log the duration in human words, since allowed and should
38
+ const logLevel = typeof logOptions === 'boolean' || !(logOptions === null || logOptions === void 0 ? void 0 : logOptions.level)
39
+ ? 'debug'
40
+ : logOptions.level;
41
+ const durationInSeconds = roundToHundredths(Number(durationInNanoseconds) / 1e9); // https://stackoverflow.com/a/53970656/3068233
42
+ context.log[logLevel](`${title} took ${durationInSeconds} seconds to execute`, {
43
+ for: title,
44
+ duration: {
45
+ seconds: durationInSeconds,
46
+ milliseconds: durationInMilliseconds,
47
+ },
48
+ });
49
+ return output;
50
+ };
51
+ // return the stopwatch
52
+ return {
53
+ // lap, // todo: enable "laps" reports
54
+ stop,
55
+ };
56
+ };
57
+ exports.startDurationStopwatch = startDurationStopwatch;
58
+ //# sourceMappingURL=startDurationStopwatch.js.map
@@ -0,0 +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,2 +1,2 @@
1
- import { UniDuration } from '../domain/UniDuration';
1
+ import { UniDuration } from '../../domain/UniDuration';
2
2
  export declare const sleep: (ms: number | UniDuration) => Promise<void>;
@@ -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");
4
+ const UniDuration_1 = require("../../domain/UniDuration");
5
5
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, typeof ms === 'number' ? ms : (0, UniDuration_1.toMilliseconds)(ms)));
6
6
  exports.sleep = sleep;
7
7
  //# sourceMappingURL=sleep.js.map
@@ -0,0 +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"}
@@ -0,0 +1,23 @@
1
+ import { HelpfulError } from '@ehmpathy/error-fns';
2
+ import { NotUndefined } from 'type-fns';
3
+ import { UniDuration } from '../../domain/UniDuration';
4
+ export declare class WaitForTimedOutError extends HelpfulError {
5
+ }
6
+ /**
7
+ * tactic
8
+ * .what: wait for an output
9
+ * .why:
10
+ * - enables waiting until some desired result is ready
11
+ * - ensures best practices and a pit of success contract
12
+ * - uses readable names for maintainability
13
+ */
14
+ export declare const waitFor: <O>(extractor: () => Promise<O>, options?: {
15
+ /**
16
+ * the interval at which to check for completion
17
+ */
18
+ interval?: UniDuration;
19
+ /**
20
+ * the maximum duration to wait for, until timeout
21
+ */
22
+ timeout?: UniDuration;
23
+ }) => Promise<NotUndefined<O>>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.waitFor = exports.WaitForTimedOutError = void 0;
13
+ const error_fns_1 = require("@ehmpathy/error-fns");
14
+ const type_fns_1 = require("type-fns");
15
+ const UniDuration_1 = require("../../domain/UniDuration");
16
+ const sleep_1 = require("../utils/sleep");
17
+ const DEFAULT_TIMEOUT = { seconds: 60 };
18
+ const DEFAULT_INTERVAL = { seconds: 10 };
19
+ class WaitForTimedOutError extends error_fns_1.HelpfulError {
20
+ }
21
+ exports.WaitForTimedOutError = WaitForTimedOutError;
22
+ /**
23
+ * tactic
24
+ * .what: wait for an output
25
+ * .why:
26
+ * - enables waiting until some desired result is ready
27
+ * - ensures best practices and a pit of success contract
28
+ * - uses readable names for maintainability
29
+ */
30
+ const waitFor = (
31
+ /**
32
+ * the procedure which extracts some output that we are waiting for
33
+ *
34
+ * note
35
+ * - waitFor waits until the extractor returns a value other than `void` or `undefined`
36
+ */
37
+ extractor,
38
+ /**
39
+ * options to control the wait
40
+ */
41
+ options) => __awaiter(void 0, void 0, void 0, function* () {
42
+ var _a, _b;
43
+ // define the timeout and interval
44
+ const timeout = (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : DEFAULT_TIMEOUT;
45
+ const interval = (_b = options === null || options === void 0 ? void 0 : options.interval) !== null && _b !== void 0 ? _b : DEFAULT_INTERVAL;
46
+ // track the timestamps of interest
47
+ const startAtMSE = new Date().getTime();
48
+ const timeoutAtMSE = startAtMSE + (0, UniDuration_1.toMilliseconds)(timeout);
49
+ // check each interval
50
+ while (new Date().getTime() < timeoutAtMSE) {
51
+ const output = yield extractor();
52
+ if ((0, type_fns_1.isNotUndefined)(output))
53
+ return output;
54
+ yield (0, sleep_1.sleep)(interval);
55
+ }
56
+ // throw an error if reached here, since it implies a timeout
57
+ throw new WaitForTimedOutError('no output returned from waitFor.extractor', {
58
+ interval,
59
+ timeout,
60
+ });
61
+ });
62
+ exports.waitFor = waitFor;
63
+ //# sourceMappingURL=waitFor.js.map
@@ -0,0 +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"}
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.4.2",
5
+ "version": "1.6.0",
6
6
  "repository": "ehmpathy/uni-time",
7
7
  "homepage": "https://github.com/ehmpathy/uni-time",
8
8
  "keywords": [
@@ -75,9 +75,11 @@
75
75
  "husky": "8.0.3",
76
76
  "jest": "29.3.1",
77
77
  "prettier": "2.8.1",
78
+ "simple-leveled-log-methods": "0.4.1",
78
79
  "ts-jest": "29.1.3",
79
80
  "ts-node": "10.9.2",
80
- "typescript": "5.4.5"
81
+ "typescript": "5.4.5",
82
+ "visualogic": "1.3.0"
81
83
  },
82
84
  "config": {
83
85
  "commitizen": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"castInputToDate.js","sourceRoot":"","sources":["../../src/casts/castInputToDate.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAGvD,MAAM,eAAe,GAAG,CAC7B,KAaM,EACA,EAAE;IACR,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,mCAAuB,CAAC,iCAAiC,EAAE;QACnE,KAAK;KACN,CAAC,CAAC;AACL,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toMillisecondsSinceEpoch.js","sourceRoot":"","sources":["../../src/casts/toMillisecondsSinceEpoch.ts"],"names":[],"mappings":";;;AAEO,MAAM,wBAAwB,GAAG,CACtC,KAA4B,EACpB,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAF1B,QAAA,wBAAwB,4BAEE;AAEF,gBAJxB,gCAAwB,CAIK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUniDate.js","sourceRoot":"","sources":["../../src/checks/isUniDate.ts"],"names":[],"mappings":";;;AAAA,uCAA4C;AAC5C,uCAAsC;AAEtC,8DAA2D;AAG3D;;GAEG;AACI,MAAM,SAAS,GAAG,CACvB,KAA4C,EACnC,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,EAAE,YAAY,CAAY,CAAC;AAFzD,QAAA,SAAS,aAEgD;AAEtE;;GAEG;AACU,QAAA,SAAS,GAAG,IAAA,qBAAU,EAAC,CAAC,KAAa,EAAoB,EAAE;IACtE,IAAI,CAAC;QACH,OAAO,IAAA,iBAAS,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAC9C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUniDate.test.js","sourceRoot":"","sources":["../../src/checks/isUniDate.test.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,qBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUniDateTime.js","sourceRoot":"","sources":["../../src/checks/isUniDateTime.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,uCAAsC;AAEtC,8DAA2D;AAG3D;;GAEG;AACI,MAAM,aAAa,GAAG,CAC3B,KAA4C,EAC/B,EAAE,CAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,CAAC,WAAW,EAAiB,CAAC;AAFzD,QAAA,aAAa,iBAE4C;AAEtE;;GAEG;AACU,QAAA,aAAa,GAAG,IAAA,qBAAU,EACrC,CAAC,KAAa,EAAwB,EAAE;IACtC,IAAI,CAAC;QACH,OAAO,IAAA,qBAAa,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUniDateTime.test.js","sourceRoot":"","sources":["../../src/checks/isUniDateTime.test.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,6BAAa,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addDuration.js","sourceRoot":"","sources":["../../src/manipulate/addDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAGrD,mDAA2D;AAC3D,2DAAwD;AAExD,uDAAoE;AAEpE;;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 +0,0 @@
1
- {"version":3,"file":"subDuration.js","sourceRoot":"","sources":["../../src/manipulate/subDuration.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAGrD,mDAA2D;AAC3D,2DAAwD;AAExD,uDAAoE;AAEpE;;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 +0,0 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/utils/sleep.ts"],"names":[],"mappings":";;;AAAA,uDAAoE;AAE7D,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"}
File without changes
File without changes
File without changes
File without changes