@universal-packages/time-measurer 1.0.0 → 1.1.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/Measurement.js CHANGED
@@ -42,13 +42,13 @@ class Measurement {
42
42
  }
43
43
  getHuman() {
44
44
  if (this.hours !== 0) {
45
- return `${this.pad(this.hours)}hrs ${this.pad(this.minutes)}min ${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)}sec`;
45
+ return `${this.hours}hrs ${this.minutes}min ${this.seconds}.${this.pad(this.milliseconds, 3)}sec`;
46
46
  }
47
47
  else if (this.minutes !== 0) {
48
- return `${this.pad(this.minutes)}min ${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)}sec`;
48
+ return `${this.minutes}min ${this.seconds}.${this.pad(this.milliseconds, 3)}sec`;
49
49
  }
50
50
  else if (this.seconds !== 0) {
51
- return `${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)}sec`;
51
+ return `${this.seconds}.${this.pad(this.milliseconds, 3)}sec`;
52
52
  }
53
53
  else {
54
54
  return `${this.pad(this.milliseconds, 3, 2)}ms`;
@@ -56,13 +56,13 @@ class Measurement {
56
56
  }
57
57
  gerExpressive() {
58
58
  if (this.hours !== 0) {
59
- return `${this.pad(this.hours)} Hours, ${this.pad(this.minutes)} Minutes, and ${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)} Seconds`;
59
+ return `${this.hours} Hours, ${this.minutes} Minutes, and ${this.seconds}.${this.pad(this.milliseconds, 3)} Seconds`;
60
60
  }
61
61
  else if (this.minutes !== 0) {
62
- return `${this.pad(this.minutes)} Minutes, and ${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)} Seconds`;
62
+ return `${this.minutes} Minutes, and ${this.seconds}.${this.pad(this.milliseconds, 3)} Seconds`;
63
63
  }
64
64
  else if (this.seconds !== 0) {
65
- return `${this.pad(this.seconds)}.${this.pad(this.milliseconds, 3)} Seconds`;
65
+ return `${this.seconds}.${this.pad(this.milliseconds, 3)} Seconds`;
66
66
  }
67
67
  else {
68
68
  return `${this.pad(this.milliseconds, 3, 2)} Milliseconds`;
@@ -1 +1 @@
1
- {"version":3,"file":"Measurement.js","sourceRoot":"","sources":["../src/Measurement.ts"],"names":[],"mappings":";;AAEA,MAAqB,WAAW;IAM9B,YAAmB,WAAmB;QACpC,IAAI,kBAAkB,GAAG,WAAW,CAAA;QAEpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,kBAAkB,GAAG,cAAc,CAAC,CAAA;QACxD,kBAAkB,GAAG,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAA;QAEzF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,kBAAkB,GAAG,YAAY,CAAC,CAAA;QACxD,kBAAkB,GAAG,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,YAAY,CAAA;QAEzF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,kBAAkB,GAAG,WAAW,CAAC,CAAA;QACvD,kBAAkB,GAAG,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,WAAW,CAAA;QAExF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAA;IAC1D,CAAC;IAED,qDAAqD;IAC9C,QAAQ,CAAC,SAAqB,OAAO;QAC1C,QAAQ,MAAM,EAAE;YACd,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;YAC5B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;YACxB,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;SAC9B;IACH,CAAC;IAED,qDAAqD;IAC9C,MAAM;QACX,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACrF,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAA;SACvH;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAA;SAC/F;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAA;SAC3D;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;SAC9C;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAA;SAChI;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAA;SACrG;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAA;SACxE;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAA;SAChD;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAA;SACnJ;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAA;SACpH;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAA;SAC7E;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,CAAA;SAC3D;IACH,CAAC;IAEO,GAAG,CAAC,GAAW,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC;QACnD,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxD,CAAC;CACF;AA7ED,8BA6EC"}
1
+ {"version":3,"file":"Measurement.js","sourceRoot":"","sources":["../src/Measurement.ts"],"names":[],"mappings":"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"}
package/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # Time Measurer
2
+ [![npm version](https://badge.fury.io/js/@universal-packages%2Ftime-measurer.svg)](https://www.npmjs.com/package/@universal-packages/time-measurer)
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
+ [![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
+
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.
7
+
8
+ ## Install
9
+
10
+ ```shell
11
+ npm install @universal-packages/time-measurer
12
+ ```
13
+
14
+ ## TimeMeasurer
15
+
16
+ Class `TimeMeasurer` provides an instantiable interface to start measuring time from any part of your code.
17
+
18
+ ```js
19
+ import TimeMeasurer from '@universal-packages/time-measurer'
20
+
21
+ async function getAll() {
22
+ const measurer = new TimeMeasurer()
23
+
24
+ measurer.start()
25
+
26
+ const data = await myDB.getAllRecords()
27
+ const measurement = measurer.finish()
28
+
29
+ console.log('All records - ', measurement.toString())
30
+ }
31
+
32
+
33
+ getAll()
34
+ // > All records - 2.23ms
35
+ ```
36
+
37
+ ## Measurement
38
+
39
+ A `Measurement` object is the time representation after a measure, it provides the interface to express time as a formatted string or even as a date object.
40
+
41
+ ### .toString()
42
+
43
+ Get the time representation as a string, this function takes one param `TimeFormat`, that can be one of `Condensed`, `Human`, `Expressive`, default: `Human`.
44
+
45
+ ```js
46
+ measurement.toString()
47
+ measurement.toString('Condensed')
48
+ measurement.toString('Human')
49
+ measurement.toString('Expressive')
50
+ ```
51
+
52
+ You will get someting like
53
+
54
+ ```
55
+ 02hrs 35min 51.235sec
56
+ 02:35:51.235
57
+ 02hrs 35min 51.235sec
58
+ 02 Hours, 35 Minutes, and 51.235 Seconds
59
+ ```
60
+
61
+ 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.
62
+
63
+ ```
64
+ 51.235sec
65
+ 51.235
66
+ 51.235sec
67
+ 51.235 Seconds
68
+ ```
69
+
70
+ ### .toString()
71
+
72
+ Get the time representation as a date object this can be helpful if you want to use the `Date` api to format or do whatever with the date.
73
+
74
+ ```js
75
+ measurement.toDate()
76
+ ```
77
+
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
+ ## Sleep
99
+
100
+ 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.
101
+
102
+
103
+ ```js
104
+ import TimeMeasurer, { sleep } from '@universal-packages/time-measurer'
105
+
106
+ async function waitable() {
107
+ TimeMeasurer.sleep(1000)
108
+
109
+ sleep(2000)
110
+ }
111
+
112
+ ```
113
+
114
+ ## Typescript
115
+
116
+ This library is developed in TypeScript and shipped fully typed.
117
+
118
+ ## Contributing
119
+
120
+ The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.
121
+
122
+ - [Code of Conduct](./CODE_OF_CONDUCT.md)
123
+ - [Contributing Guide](./CONTRIBUTING.md)
124
+
125
+ ### License
126
+
127
+ [MIT licensed](./LICENSE).
128
+
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@universal-packages/time-measurer",
3
- "version": "1.0.0",
3
+ "version": "1.1.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",
7
7
  "main": "index.js",
8
8
  "types": "index.d.ts",
9
- "repository": "git://git@github.com/universal-packeges/universal-time-measurer.git",
9
+ "repository": "git://git@github.com/universal-packages/universal-time-measurer.git",
10
10
  "scripts": {
11
11
  "build": "tsc --p tsconfig.dis.json",
12
12
  "test": "jest --watch",