@wise-old-man/utils 1.0.0 → 1.0.4

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/.prettierrc CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
- "printWidth": 110,
2
+ "printWidth": 105,
3
3
  "singleQuote": true,
4
4
  "trailingComma": "none",
5
- "arrowParens": "avoid"
5
+ "arrowParens": "avoid",
6
+ "semi": true
6
7
  }
@@ -0,0 +1,9 @@
1
+ export * from './competitions';
2
+ export * from './countries';
3
+ export * from './experience';
4
+ export * from './groups';
5
+ export * from './metrics';
6
+ export * from './numbers';
7
+ export * from './periods';
8
+ export * from './players';
9
+ export * from './strings';
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./competitions"), exports);
14
+ __exportStar(require("./countries"), exports);
15
+ __exportStar(require("./experience"), exports);
16
+ __exportStar(require("./groups"), exports);
17
+ __exportStar(require("./metrics"), exports);
18
+ __exportStar(require("./numbers"), exports);
19
+ __exportStar(require("./periods"), exports);
20
+ __exportStar(require("./players"), exports);
21
+ __exportStar(require("./strings"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA+B;AAC/B,8CAA4B;AAC5B,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B"}
package/dist/periods.d.ts CHANGED
@@ -29,5 +29,9 @@ declare const PeriodProps: {
29
29
  };
30
30
  declare const PERIODS: Period[];
31
31
  declare function findPeriod(periodName: string): Period | null;
32
- declare function parsePeriodExpression(periodExpression: string): [string, number] | null;
33
- export { Period, PeriodProps, PERIODS, findPeriod, parsePeriodExpression };
32
+ declare function isValidPeriod(period: string): boolean;
33
+ declare function parsePeriodExpression(periodExpression: string): {
34
+ expression: string;
35
+ durationMs: number;
36
+ } | null;
37
+ export { Period, PeriodProps, PERIODS, findPeriod, isValidPeriod, parsePeriodExpression };
package/dist/periods.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.parsePeriodExpression = exports.findPeriod = exports.PERIODS = exports.PeriodProps = exports.Period = void 0;
4
+ exports.parsePeriodExpression = exports.isValidPeriod = exports.findPeriod = exports.PERIODS = exports.PeriodProps = exports.Period = void 0;
5
5
  var CUSTOM_PERIOD_REGEX = /(\d+y)?(\d+m)?(\d+w)?(\d+d)?(\d+h)?/;
6
6
  var Period;
7
7
  (function (Period) {
@@ -31,26 +31,36 @@ function findPeriod(periodName) {
31
31
  return null;
32
32
  }
33
33
  exports.findPeriod = findPeriod;
34
+ function isValidPeriod(period) {
35
+ return PERIODS.includes(period);
36
+ }
37
+ exports.isValidPeriod = isValidPeriod;
34
38
  function parsePeriodExpression(periodExpression) {
35
39
  var fixed = periodExpression.toLowerCase();
36
- if (PERIODS.includes(fixed)) {
37
- return [fixed, PeriodProps[fixed].milliseconds];
40
+ if (isValidPeriod(fixed)) {
41
+ return {
42
+ expression: fixed,
43
+ durationMs: PeriodProps[fixed].milliseconds
44
+ };
38
45
  }
39
46
  var result = fixed.match(CUSTOM_PERIOD_REGEX);
40
47
  if (!result || result.length === 0 || result[0] !== fixed)
41
48
  return null;
42
- var years = result[1] ? parseInt(result[1].replace(/\D/g, '')) : null;
43
- var months = result[2] ? parseInt(result[2].replace(/\D/g, '')) : null;
44
- var weeks = result[3] ? parseInt(result[3].replace(/\D/g, '')) : null;
45
- var days = result[4] ? parseInt(result[4].replace(/\D/g, '')) : null;
46
- var hours = result[5] ? parseInt(result[5].replace(/\D/g, '')) : null;
47
- var yearsMs = years ? years * PeriodProps[Period.YEAR].milliseconds : 0;
48
- var monthsMs = months ? months * PeriodProps[Period.MONTH].milliseconds : 0;
49
- var weeksMs = weeks ? weeks * PeriodProps[Period.WEEK].milliseconds : 0;
50
- var daysMs = days ? days * PeriodProps[Period.DAY].milliseconds : 0;
51
- var hoursMs = hours ? hours * (PeriodProps[Period.DAY].milliseconds / 24) : 0;
49
+ var years = result[1] ? parseInt(result[1].replace(/\D/g, '')) : 0;
50
+ var months = result[2] ? parseInt(result[2].replace(/\D/g, '')) : 0;
51
+ var weeks = result[3] ? parseInt(result[3].replace(/\D/g, '')) : 0;
52
+ var days = result[4] ? parseInt(result[4].replace(/\D/g, '')) : 0;
53
+ var hours = result[5] ? parseInt(result[5].replace(/\D/g, '')) : 0;
54
+ var yearsMs = years * PeriodProps[Period.YEAR].milliseconds;
55
+ var monthsMs = months * PeriodProps[Period.MONTH].milliseconds;
56
+ var weeksMs = weeks * PeriodProps[Period.WEEK].milliseconds;
57
+ var daysMs = days * PeriodProps[Period.DAY].milliseconds;
58
+ var hoursMs = hours * (PeriodProps[Period.DAY].milliseconds / 24);
52
59
  var totalMs = yearsMs + monthsMs + weeksMs + daysMs + hoursMs;
53
- return [result[0], totalMs];
60
+ return {
61
+ expression: result[0],
62
+ durationMs: totalMs
63
+ };
54
64
  }
55
65
  exports.parsePeriodExpression = parsePeriodExpression;
56
66
  //# sourceMappingURL=periods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"periods.js","sourceRoot":"","sources":["../src/periods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"periods.js","sourceRoot":"","sources":["../src/periods.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wise-old-man/utils",
3
- "version": "1.0.0",
4
- "description": "",
3
+ "version": "1.0.4",
4
+ "description": "A few constants and helper functions to be re-used in all repositories under the WiseOldMan project.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
@@ -17,6 +17,5 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "lodash": "^4.17.21"
20
- },
21
- "gitHead": "027803f8cb4c8f2b664c291191d6f1f19570c5a9"
20
+ }
22
21
  }
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from './competitions';
2
+ export * from './countries';
3
+ export * from './experience';
4
+ export * from './groups';
5
+ export * from './metrics';
6
+ export * from './numbers';
7
+ export * from './periods';
8
+ export * from './players';
9
+ export * from './strings';
package/src/periods.ts CHANGED
@@ -26,32 +26,42 @@ function findPeriod(periodName: string): Period | null {
26
26
  return null;
27
27
  }
28
28
 
29
- function parsePeriodExpression(periodExpression: string): [string, number] | null {
29
+ function isValidPeriod(period: string): boolean {
30
+ return PERIODS.includes(period as Period);
31
+ }
32
+
33
+ function parsePeriodExpression(periodExpression: string) {
30
34
  const fixed = periodExpression.toLowerCase();
31
35
 
32
- if (PERIODS.includes(fixed as any)) {
33
- return [fixed, PeriodProps[fixed].milliseconds];
36
+ if (isValidPeriod(fixed)) {
37
+ return {
38
+ expression: fixed,
39
+ durationMs: PeriodProps[fixed as Period].milliseconds
40
+ };
34
41
  }
35
42
 
36
43
  const result = fixed.match(CUSTOM_PERIOD_REGEX);
37
44
 
38
45
  if (!result || result.length === 0 || result[0] !== fixed) return null;
39
46
 
40
- const years = result[1] ? parseInt(result[1].replace(/\D/g, '')) : null;
41
- const months = result[2] ? parseInt(result[2].replace(/\D/g, '')) : null;
42
- const weeks = result[3] ? parseInt(result[3].replace(/\D/g, '')) : null;
43
- const days = result[4] ? parseInt(result[4].replace(/\D/g, '')) : null;
44
- const hours = result[5] ? parseInt(result[5].replace(/\D/g, '')) : null;
47
+ const years = result[1] ? parseInt(result[1].replace(/\D/g, '')) : 0;
48
+ const months = result[2] ? parseInt(result[2].replace(/\D/g, '')) : 0;
49
+ const weeks = result[3] ? parseInt(result[3].replace(/\D/g, '')) : 0;
50
+ const days = result[4] ? parseInt(result[4].replace(/\D/g, '')) : 0;
51
+ const hours = result[5] ? parseInt(result[5].replace(/\D/g, '')) : 0;
45
52
 
46
- const yearsMs = years ? years * PeriodProps[Period.YEAR].milliseconds : 0;
47
- const monthsMs = months ? months * PeriodProps[Period.MONTH].milliseconds : 0;
48
- const weeksMs = weeks ? weeks * PeriodProps[Period.WEEK].milliseconds : 0;
49
- const daysMs = days ? days * PeriodProps[Period.DAY].milliseconds : 0;
50
- const hoursMs = hours ? hours * (PeriodProps[Period.DAY].milliseconds / 24) : 0;
53
+ const yearsMs = years * PeriodProps[Period.YEAR].milliseconds;
54
+ const monthsMs = months * PeriodProps[Period.MONTH].milliseconds;
55
+ const weeksMs = weeks * PeriodProps[Period.WEEK].milliseconds;
56
+ const daysMs = days * PeriodProps[Period.DAY].milliseconds;
57
+ const hoursMs = hours * (PeriodProps[Period.DAY].milliseconds / 24);
51
58
 
52
59
  const totalMs = yearsMs + monthsMs + weeksMs + daysMs + hoursMs;
53
60
 
54
- return [result[0], totalMs];
61
+ return {
62
+ expression: result[0],
63
+ durationMs: totalMs
64
+ };
55
65
  }
56
66
 
57
- export { Period, PeriodProps, PERIODS, findPeriod, parsePeriodExpression };
67
+ export { Period, PeriodProps, PERIODS, findPeriod, isValidPeriod, parsePeriodExpression };