@naturalcycles/js-lib 14.111.0 → 14.112.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.
@@ -39,7 +39,7 @@ export declare function _stringEnumEntries<T extends StringEnum>(en: T): [k: str
39
39
  */
40
40
  export declare function _numberEnumInverse<T extends NumberEnum>(en: T, v: string): T[keyof T];
41
41
  /**
42
- * _enumInverse, but allows to get/return undefined output.
42
+ * _numberEnumInverse, but allows to get/return undefined output.
43
43
  */
44
44
  export declare function _numberEnumInverseNullable<T extends NumberEnum>(en: T, v: string | undefined): T[keyof T] | undefined;
45
45
  /**
@@ -50,6 +50,14 @@ export declare function _numberEnumInverseNullable<T extends NumberEnum>(en: T,
50
50
  */
51
51
  export declare function _numberEnumNormalize<T extends NumberEnum>(en: T, v: string | number): T[keyof T];
52
52
  /**
53
- * Same as _enumNormalize, but allows to return undefined values.
53
+ * Same as _numberEnumNormalize, but allows to return undefined values.
54
54
  */
55
55
  export declare function _numberEnumNormalizeNullable<T extends NumberEnum>(en: T, v: string | number | undefined): T[keyof T] | undefined;
56
+ /**
57
+ * Returns a String key for given NumberEnum value, or undefined if not found.
58
+ */
59
+ export declare function _numberEnumKeyNullable<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T | undefined;
60
+ /**
61
+ * Returns a String key for given NumberEnum value, throws if not found.
62
+ */
63
+ export declare function _numberEnumKey<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T;
package/dist/enum.util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._numberEnumNormalizeNullable = exports._numberEnumNormalize = exports._numberEnumInverseNullable = exports._numberEnumInverse = exports._stringEnumEntries = exports._numberEnumEntries = exports._stringEnumValues = exports._stringEnumKeys = exports._numberEnumValues = exports._numberEnumKeys = void 0;
3
+ exports._numberEnumKey = exports._numberEnumKeyNullable = exports._numberEnumNormalizeNullable = exports._numberEnumNormalize = exports._numberEnumInverseNullable = exports._numberEnumInverse = exports._stringEnumEntries = exports._numberEnumEntries = exports._stringEnumValues = exports._stringEnumKeys = exports._numberEnumValues = exports._numberEnumKeys = void 0;
4
4
  /**
5
5
  * Returns all number keys of a number-enum.
6
6
  */
@@ -63,12 +63,12 @@ exports._stringEnumEntries = _stringEnumEntries;
63
63
  function _numberEnumInverse(en, v) {
64
64
  const r = en[v];
65
65
  if (!r)
66
- throw new Error(`enumInverse value not found for: ${v}`);
66
+ throw new Error(`_numberEnumInverse value not found for: ${v}`);
67
67
  return r;
68
68
  }
69
69
  exports._numberEnumInverse = _numberEnumInverse;
70
70
  /**
71
- * _enumInverse, but allows to get/return undefined output.
71
+ * _numberEnumInverse, but allows to get/return undefined output.
72
72
  */
73
73
  function _numberEnumInverseNullable(en, v) {
74
74
  return en[v];
@@ -83,14 +83,34 @@ exports._numberEnumInverseNullable = _numberEnumInverseNullable;
83
83
  function _numberEnumNormalize(en, v) {
84
84
  const r = _numberEnumNormalizeNullable(en, v);
85
85
  if (!r || !en[r])
86
- throw new Error(`enumNormalize value not found for: ${v}`);
86
+ throw new Error(`_numberEnumNormalize value not found for: ${v}`);
87
87
  return r;
88
88
  }
89
89
  exports._numberEnumNormalize = _numberEnumNormalize;
90
90
  /**
91
- * Same as _enumNormalize, but allows to return undefined values.
91
+ * Same as _numberEnumNormalize, but allows to return undefined values.
92
92
  */
93
93
  function _numberEnumNormalizeNullable(en, v) {
94
94
  return typeof v === 'string' ? en[v] : v;
95
95
  }
96
96
  exports._numberEnumNormalizeNullable = _numberEnumNormalizeNullable;
97
+ /**
98
+ * Returns a String key for given NumberEnum value, or undefined if not found.
99
+ */
100
+ function _numberEnumKeyNullable(en, v) {
101
+ const key = en[v];
102
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
103
+ return typeof key === 'string' ? key : undefined;
104
+ }
105
+ exports._numberEnumKeyNullable = _numberEnumKeyNullable;
106
+ /**
107
+ * Returns a String key for given NumberEnum value, throws if not found.
108
+ */
109
+ function _numberEnumKey(en, v) {
110
+ const key = en[v];
111
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
112
+ if (typeof key !== 'string')
113
+ throw new Error(`_enumKey value not found for: ${v}`);
114
+ return key;
115
+ }
116
+ exports._numberEnumKey = _numberEnumKey;
@@ -54,11 +54,11 @@ export function _stringEnumEntries(en) {
54
54
  export function _numberEnumInverse(en, v) {
55
55
  const r = en[v];
56
56
  if (!r)
57
- throw new Error(`enumInverse value not found for: ${v}`);
57
+ throw new Error(`_numberEnumInverse value not found for: ${v}`);
58
58
  return r;
59
59
  }
60
60
  /**
61
- * _enumInverse, but allows to get/return undefined output.
61
+ * _numberEnumInverse, but allows to get/return undefined output.
62
62
  */
63
63
  export function _numberEnumInverseNullable(en, v) {
64
64
  return en[v];
@@ -72,12 +72,30 @@ export function _numberEnumInverseNullable(en, v) {
72
72
  export function _numberEnumNormalize(en, v) {
73
73
  const r = _numberEnumNormalizeNullable(en, v);
74
74
  if (!r || !en[r])
75
- throw new Error(`enumNormalize value not found for: ${v}`);
75
+ throw new Error(`_numberEnumNormalize value not found for: ${v}`);
76
76
  return r;
77
77
  }
78
78
  /**
79
- * Same as _enumNormalize, but allows to return undefined values.
79
+ * Same as _numberEnumNormalize, but allows to return undefined values.
80
80
  */
81
81
  export function _numberEnumNormalizeNullable(en, v) {
82
82
  return typeof v === 'string' ? en[v] : v;
83
83
  }
84
+ /**
85
+ * Returns a String key for given NumberEnum value, or undefined if not found.
86
+ */
87
+ export function _numberEnumKeyNullable(en, v) {
88
+ const key = en[v];
89
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
90
+ return typeof key === 'string' ? key : undefined;
91
+ }
92
+ /**
93
+ * Returns a String key for given NumberEnum value, throws if not found.
94
+ */
95
+ export function _numberEnumKey(en, v) {
96
+ const key = en[v];
97
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
98
+ if (typeof key !== 'string')
99
+ throw new Error(`_enumKey value not found for: ${v}`);
100
+ return key;
101
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/js-lib",
3
- "version": "14.111.0",
3
+ "version": "14.112.0",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build-prod": "build-prod-esm-cjs",
@@ -16,7 +16,7 @@
16
16
  "@naturalcycles/nodejs-lib": "^12.33.4",
17
17
  "@naturalcycles/time-lib": "^3.5.1",
18
18
  "@types/node": "^18.0.0",
19
- "expect-type": "^0.13.0",
19
+ "expect-type": "^0.14.2",
20
20
  "jest": "^29.0.0",
21
21
  "prettier": "^2.1.2",
22
22
  "rxjs": "^7.0.1",
package/src/enum.util.ts CHANGED
@@ -61,12 +61,12 @@ export function _stringEnumEntries<T extends StringEnum>(en: T): [k: string, v:
61
61
  */
62
62
  export function _numberEnumInverse<T extends NumberEnum>(en: T, v: string): T[keyof T] {
63
63
  const r = en[v as keyof T] as any
64
- if (!r) throw new Error(`enumInverse value not found for: ${v}`)
64
+ if (!r) throw new Error(`_numberEnumInverse value not found for: ${v}`)
65
65
  return r
66
66
  }
67
67
 
68
68
  /**
69
- * _enumInverse, but allows to get/return undefined output.
69
+ * _numberEnumInverse, but allows to get/return undefined output.
70
70
  */
71
71
  export function _numberEnumInverseNullable<T extends NumberEnum>(
72
72
  en: T,
@@ -83,12 +83,12 @@ export function _numberEnumInverseNullable<T extends NumberEnum>(
83
83
  */
84
84
  export function _numberEnumNormalize<T extends NumberEnum>(en: T, v: string | number): T[keyof T] {
85
85
  const r = _numberEnumNormalizeNullable(en, v)
86
- if (!r || !en[r as keyof T]) throw new Error(`enumNormalize value not found for: ${v}`)
86
+ if (!r || !en[r as keyof T]) throw new Error(`_numberEnumNormalize value not found for: ${v}`)
87
87
  return r
88
88
  }
89
89
 
90
90
  /**
91
- * Same as _enumNormalize, but allows to return undefined values.
91
+ * Same as _numberEnumNormalize, but allows to return undefined values.
92
92
  */
93
93
  export function _numberEnumNormalizeNullable<T extends NumberEnum>(
94
94
  en: T,
@@ -96,3 +96,28 @@ export function _numberEnumNormalizeNullable<T extends NumberEnum>(
96
96
  ): T[keyof T] | undefined {
97
97
  return typeof v === 'string' ? en[v as keyof T] : (v as any)
98
98
  }
99
+
100
+ /**
101
+ * Returns a String key for given NumberEnum value, or undefined if not found.
102
+ */
103
+ export function _numberEnumKeyNullable<T extends NumberEnum>(
104
+ en: T,
105
+ v: T[keyof T] | undefined | null,
106
+ ): keyof T | undefined {
107
+ const key = (en as any)[v]
108
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
109
+ return typeof key === 'string' ? key : undefined
110
+ }
111
+
112
+ /**
113
+ * Returns a String key for given NumberEnum value, throws if not found.
114
+ */
115
+ export function _numberEnumKey<T extends NumberEnum>(
116
+ en: T,
117
+ v: T[keyof T] | undefined | null,
118
+ ): keyof T {
119
+ const key = (en as any)[v]
120
+ // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
121
+ if (typeof key !== 'string') throw new Error(`_enumKey value not found for: ${v}`)
122
+ return key
123
+ }