@universal-packages/time-measurer 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Testing](https://github.com/universal-packages/universal-time-measurer/actions/workflows/testing.yml/badge.svg)](https://github.com/universal-packages/universal-time-measurer/actions/workflows/testing.yml)
4
4
  [![codecov](https://codecov.io/gh/universal-packages/universal-time-measurer/branch/main/graph/badge.svg?token=CXPJSN8IGL)](https://codecov.io/gh/universal-packages/universal-time-measurer)
5
5
 
6
- Time Measurer is a simple wrap for `process.hrtime` to measure time with procession and express that time easily through formatted representations, anytime you want to express how much a query or a request took at code level you may want to give this a try.
6
+ Time Measurer is a simple wrap for `process.hrtime.bigint` to measure time with procession and express that time easily through formatted representations, anytime you want to express how much a query or a request took at code level you may want to give this a try.
7
7
 
8
8
  ## Install
9
9
 
@@ -11,9 +11,29 @@ Time Measurer is a simple wrap for `process.hrtime` to measure time with process
11
11
  npm install @universal-packages/time-measurer
12
12
  ```
13
13
 
14
+ ## startMeasurement()
15
+
16
+ Creates a new TimeMeasurer instance to start a measurerment.
17
+
18
+ ```ts
19
+ import { startMeasurement } from '@universal-packages/time-measurer'
20
+
21
+ async function getAll() {
22
+ const measurer = startMeasurement()
23
+ const data = await myDB.getAllRecords()
24
+ const measurement = measurer.finish()
25
+
26
+ console.log('All records - ', measurement.toString())
27
+ }
28
+
29
+
30
+ getAll()
31
+ // > All records - 2.23ms
32
+ ```
33
+
14
34
  ## TimeMeasurer
15
35
 
16
- Class `TimeMeasurer` provides an instantiable interface to start measuring time from any part of your code.
36
+ Class `TimeMeasurer` provides an instantiable interface to start measuring time from any part of your code. The measurement starts at instancing time.
17
37
 
18
38
  ```js
19
39
  import TimeMeasurer from '@universal-packages/time-measurer'
@@ -21,15 +41,12 @@ import TimeMeasurer from '@universal-packages/time-measurer'
21
41
  async function getAll() {
22
42
  const measurer = new TimeMeasurer()
23
43
 
24
- measurer.start()
25
-
26
44
  const data = await myDB.getAllRecords()
27
45
  const measurement = measurer.finish()
28
46
 
29
47
  console.log('All records - ', measurement.toString())
30
48
  }
31
49
 
32
-
33
50
  getAll()
34
51
  // > All records - 2.23ms
35
52
  ```
@@ -52,10 +69,10 @@ measurement.toString('Expressive')
52
69
  You will get someting like
53
70
 
54
71
  ```
55
- 02hrs 35min 51.235sec
56
- 02:35:51.235
57
- 02hrs 35min 51.235sec
58
- 02 Hours, 35 Minutes, and 51.235 Seconds
72
+ 2hrs 35min 51.235sec
73
+ 2:35:51.235
74
+ 2hrs 35min 51.235sec
75
+ 2 Hours, 35 Minutes, and 51.235 Seconds
59
76
  ```
60
77
 
61
78
  It will take into account parts of the representation that are not contributing to the time, like if the measurement only took seconds, minutes and hours will not be included.
@@ -75,26 +92,6 @@ Get the time representation as a date object this can be helpful if you want to
75
92
  measurement.toDate()
76
93
  ```
77
94
 
78
- ## Functional
79
-
80
- A more simple way to use the time measurer API is by importing just the `start` and `finish` functions, the only disadvantage here is that you can only measure one thing at a time, unlike `TimeMeasurer` that can be instantiated multiple times and measurer several things useful when you have a lot of async tasks running.
81
-
82
- ```ts
83
- import { start, finish } from '@universal-packages/time-measurer'
84
-
85
- async function getAll() {
86
- start()
87
- const data = await myDB.getAllRecords()
88
- const measurement = finish()
89
-
90
- console.log('All records - ', measurement.toString())
91
- }
92
-
93
-
94
- getAll()
95
- // > All records - 2.23ms
96
- ```
97
-
98
95
  ## Sleep
99
96
 
100
97
  Time measurer ships with a convenient sleep function that takes a single parameter `time` in milliseconds, internally it is just a promise with a timeout that resolves it.
package/TimeMeasurer.d.ts CHANGED
@@ -7,21 +7,7 @@ import Measurement from './Measurement';
7
7
  */
8
8
  export default class TimeMeasurer {
9
9
  private hrstart;
10
- /** Starts a measurement */
11
- start(): void;
10
+ constructor();
12
11
  /** Returns a measurement representing the time passed from when start wass colled */
13
12
  finish(): Measurement;
14
- /**
15
- * Simple waitable timeout to sleep the process
16
- *
17
- * Example:
18
- *
19
- * ```ts
20
- * // In milliseconds
21
- * await TimeMeasurer.sleep(1000)
22
- *
23
- * ```
24
- *
25
- * */
26
- static sleep(time: number): Promise<void>;
27
13
  }
package/TimeMeasurer.js CHANGED
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Measurement_1 = __importDefault(require("./Measurement"));
7
- const sleep_1 = __importDefault(require("./sleep"));
8
7
  /**
9
8
  *
10
9
  * It meassures the time a process takes from the time start is called
@@ -12,32 +11,14 @@ const sleep_1 = __importDefault(require("./sleep"));
12
11
  *
13
12
  */
14
13
  class TimeMeasurer {
15
- /** Starts a measurement */
16
- start() {
14
+ constructor() {
17
15
  this.hrstart = process.hrtime.bigint();
18
16
  }
19
17
  /** Returns a measurement representing the time passed from when start wass colled */
20
18
  finish() {
21
- if (this.hrstart === undefined)
22
- throw new Error('Time measurer finished without previously started');
23
19
  const nanoseconds = process.hrtime.bigint() - this.hrstart;
24
20
  return new Measurement_1.default(nanoseconds);
25
21
  }
26
- /**
27
- * Simple waitable timeout to sleep the process
28
- *
29
- * Example:
30
- *
31
- * ```ts
32
- * // In milliseconds
33
- * await TimeMeasurer.sleep(1000)
34
- *
35
- * ```
36
- *
37
- * */
38
- static async sleep(time) {
39
- return (0, sleep_1.default)(time);
40
- }
41
22
  }
42
23
  exports.default = TimeMeasurer;
43
24
  //# sourceMappingURL=TimeMeasurer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeMeasurer.js","sourceRoot":"","sources":["../src/TimeMeasurer.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,oDAA2B;AAE3B;;;;;GAKG;AACH,MAAqB,YAAY;IAG/B,2BAA2B;IACpB,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAED,qFAAqF;IAC9E,MAAM;QACX,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAEpG,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAE1D,OAAO,IAAI,qBAAW,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;IAED;;;;;;;;;;;SAWK;IACE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAY;QACpC,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;CACF;AAhCD,+BAgCC"}
1
+ {"version":3,"file":"TimeMeasurer.js","sourceRoot":"","sources":["../src/TimeMeasurer.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AAEvC;;;;;GAKG;AACH,MAAqB,YAAY;IAG/B;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAED,qFAAqF;IAC9E,MAAM;QACX,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAE1D,OAAO,IAAI,qBAAW,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;CACF;AAbD,+BAaC"}
package/index.d.ts CHANGED
@@ -2,4 +2,4 @@ export { default } from './TimeMeasurer';
2
2
  export { default as Measurement } from './Measurement';
3
3
  export * from './Measurement.types';
4
4
  export { default as sleep } from './sleep';
5
- export * from './singleton';
5
+ export * from './startMeasurement';
package/index.js CHANGED
@@ -25,5 +25,5 @@ Object.defineProperty(exports, "Measurement", { enumerable: true, get: function
25
25
  __exportStar(require("./Measurement.types"), exports);
26
26
  var sleep_1 = require("./sleep");
27
27
  Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return __importDefault(sleep_1).default; } });
28
- __exportStar(require("./singleton"), exports);
28
+ __exportStar(require("./startMeasurement"), exports);
29
29
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAA/B,wHAAA,OAAO,OAAA;AAChB,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,sDAAmC;AACnC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,8CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAA/B,wHAAA,OAAO,OAAA;AAChB,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,sDAAmC;AACnC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,qDAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universal-packages/time-measurer",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Utility to measure routines times with precision",
5
5
  "author": "David De Anda <david@universal-packages.com> (https://github.com/universal-packages)",
6
6
  "license": "MIT",
package/sleep.d.ts CHANGED
@@ -1 +1,2 @@
1
+ /** Simple waitable timeout to sleep the process */
1
2
  export default function sleep(time: number): Promise<void>;
package/sleep.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** Simple waitable timeout to sleep the process */
3
4
  async function sleep(time) {
4
5
  return new Promise((resolve) => setTimeout(() => resolve(), time));
5
6
  }
package/sleep.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;AAAe,KAAK,UAAU,KAAK,CAAC,IAAY;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAkB,EAAE,CAAC,UAAU,CAAC,GAAS,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;AAC1F,CAAC;AAFD,wBAEC"}
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;AAAA,mDAAmD;AACpC,KAAK,UAAU,KAAK,CAAC,IAAY;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAkB,EAAE,CAAC,UAAU,CAAC,GAAS,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;AAC1F,CAAC;AAFD,wBAEC"}
@@ -0,0 +1,2 @@
1
+ import TimeMeasurer from './TimeMeasurer';
2
+ export declare function startMeasurement(): TimeMeasurer;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.startMeasurement = void 0;
7
+ const TimeMeasurer_1 = __importDefault(require("./TimeMeasurer"));
8
+ function startMeasurement() {
9
+ return new TimeMeasurer_1.default();
10
+ }
11
+ exports.startMeasurement = startMeasurement;
12
+ //# sourceMappingURL=startMeasurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startMeasurement.js","sourceRoot":"","sources":["../src/startMeasurement.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAyC;AAEzC,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,sBAAY,EAAE,CAAA;AAC3B,CAAC;AAFD,4CAEC"}
package/singleton.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import Measurement from './Measurement';
2
- export declare function start(): void;
3
- export declare function finish(): Measurement;
package/singleton.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.finish = exports.start = void 0;
7
- const TimeMeasurer_1 = __importDefault(require("./TimeMeasurer"));
8
- const PROCESS_MEASURER = new TimeMeasurer_1.default();
9
- function start() {
10
- PROCESS_MEASURER.start();
11
- }
12
- exports.start = start;
13
- function finish() {
14
- return PROCESS_MEASURER.finish();
15
- }
16
- exports.finish = finish;
17
- //# sourceMappingURL=singleton.js.map
package/singleton.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":";;;;;;AACA,kEAAyC;AAEzC,MAAM,gBAAgB,GAAG,IAAI,sBAAY,EAAE,CAAA;AAE3C,SAAgB,KAAK;IACnB,gBAAgB,CAAC,KAAK,EAAE,CAAA;AAC1B,CAAC;AAFD,sBAEC;AAED,SAAgB,MAAM;IACpB,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAA;AAClC,CAAC;AAFD,wBAEC"}