@naturalcycles/js-lib 14.136.1 → 14.138.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.
@@ -61,3 +61,5 @@ export declare function _numberEnumKeyNullable<T extends NumberEnum>(en: T, v: T
61
61
  * Returns a String key for given NumberEnum value, throws if not found.
62
62
  */
63
63
  export declare function _numberEnumKey<T extends NumberEnum>(en: T, v: T[keyof T] | undefined | null): keyof T;
64
+ export declare function _stringEnumKeyNullable<T extends StringEnum>(en: T, v: string | undefined | null): keyof T | undefined;
65
+ export declare function _stringEnumKey<T extends StringEnum>(en: T, v: string | 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._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;
3
+ exports._stringEnumKey = exports._stringEnumKeyNullable = 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
  */
@@ -49,7 +49,7 @@ exports._numberEnumEntries = _numberEnumEntries;
49
49
  * Doesn't work on Number-enums!
50
50
  */
51
51
  function _stringEnumEntries(en) {
52
- return Object.keys(en).map(k => [k, en[k]]);
52
+ return Object.entries(en);
53
53
  }
54
54
  exports._stringEnumEntries = _stringEnumEntries;
55
55
  /**
@@ -110,7 +110,20 @@ function _numberEnumKey(en, v) {
110
110
  const key = en[v];
111
111
  // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
112
112
  if (typeof key !== 'string')
113
- throw new Error(`_enumKey value not found for: ${v}`);
113
+ throw new Error(`_numberEnumKey not found for: ${v}`);
114
114
  return key;
115
115
  }
116
116
  exports._numberEnumKey = _numberEnumKey;
117
+ function _stringEnumKeyNullable(en,
118
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
119
+ v) {
120
+ return Object.entries(en).find(([_, v2]) => v2 === v)?.[0];
121
+ }
122
+ exports._stringEnumKeyNullable = _stringEnumKeyNullable;
123
+ function _stringEnumKey(en, v) {
124
+ const r = _stringEnumKeyNullable(en, v);
125
+ if (!r)
126
+ throw new Error(`_stringEnumKey not found for: ${v}`);
127
+ return r;
128
+ }
129
+ exports._stringEnumKey = _stringEnumKey;
@@ -41,7 +41,7 @@ export function _numberEnumEntries(en) {
41
41
  * Doesn't work on Number-enums!
42
42
  */
43
43
  export function _stringEnumEntries(en) {
44
- return Object.keys(en).map(k => [k, en[k]]);
44
+ return Object.entries(en);
45
45
  }
46
46
  /**
47
47
  * Allows to return a Number enum value (typed as Enum itself) based on it's String key.
@@ -96,6 +96,18 @@ export function _numberEnumKey(en, v) {
96
96
  const key = en[v];
97
97
  // This prevents passing a Key (not a Value) of enum here, which returns unexpected result (number, not string)
98
98
  if (typeof key !== 'string')
99
- throw new Error(`_enumKey value not found for: ${v}`);
99
+ throw new Error(`_numberEnumKey not found for: ${v}`);
100
100
  return key;
101
101
  }
102
+ export function _stringEnumKeyNullable(en,
103
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
104
+ v) {
105
+ var _a;
106
+ return (_a = Object.entries(en).find(([_, v2]) => v2 === v)) === null || _a === void 0 ? void 0 : _a[0];
107
+ }
108
+ export function _stringEnumKey(en, v) {
109
+ const r = _stringEnumKeyNullable(en, v);
110
+ if (!r)
111
+ throw new Error(`_stringEnumKey not found for: ${v}`);
112
+ return r;
113
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/js-lib",
3
- "version": "14.136.1",
3
+ "version": "14.138.0",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build-prod": "build-prod-esm-cjs",
@@ -36,7 +36,7 @@
36
36
  "types": "dist/index.d.ts",
37
37
  "sideEffects": false,
38
38
  "engines": {
39
- "node": ">=14.15.0"
39
+ "node": ">=18.12.0"
40
40
  },
41
41
  "publishConfig": {
42
42
  "access": "public"
package/readme.md CHANGED
@@ -15,7 +15,7 @@
15
15
  # Packaging
16
16
 
17
17
  - `engines.node >= Node.js LTS`
18
- - `main: dist/index.js`: commonjs, es2021 - targeting Node.js
18
+ - `main: dist/index.js`: commonjs, es2022 - targeting Node.js
19
19
  - `module: dist-esm/index.js`: esm, es2017 - targeting Browsers
20
20
  - `types: dist/index.d.ts`: typescript types
21
21
  - `/src` folder with source `*.ts` files included
package/src/enum.util.ts CHANGED
@@ -48,7 +48,7 @@ export function _numberEnumEntries<T extends NumberEnum>(en: T): [k: string, v:
48
48
  * Doesn't work on Number-enums!
49
49
  */
50
50
  export function _stringEnumEntries<T extends StringEnum>(en: T): [k: string, v: T[keyof T]][] {
51
- return Object.keys(en).map(k => [k, en[k]]) as any
51
+ return Object.entries(en) as any
52
52
  }
53
53
 
54
54
  /**
@@ -118,6 +118,20 @@ export function _numberEnumKey<T extends NumberEnum>(
118
118
  ): keyof T {
119
119
  const key = (en as any)[v]
120
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}`)
121
+ if (typeof key !== 'string') throw new Error(`_numberEnumKey not found for: ${v}`)
122
122
  return key
123
123
  }
124
+
125
+ export function _stringEnumKeyNullable<T extends StringEnum>(
126
+ en: T,
127
+ // v: T[keyof T] | undefined | null, // cannot make it type-safe :(
128
+ v: string | undefined | null,
129
+ ): keyof T | undefined {
130
+ return Object.entries(en).find(([_, v2]) => v2 === v)?.[0]
131
+ }
132
+
133
+ export function _stringEnumKey<T extends StringEnum>(en: T, v: string | undefined | null): keyof T {
134
+ const r = _stringEnumKeyNullable(en, v)
135
+ if (!r) throw new Error(`_stringEnumKey not found for: ${v}`)
136
+ return r
137
+ }