@etsoo/shared 1.2.74 → 1.2.75

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.
@@ -1,5 +1,10 @@
1
1
  import { DataTypes, IdDefaultType, LabelDefaultType } from "../src/DataTypes";
2
2
 
3
+ enum GenderEnum {
4
+ Male = "M",
5
+ Female = "F"
6
+ }
7
+
3
8
  test("Tests for DI", () => {
4
9
  const item: DataTypes.DIS<"id", number> & DataTypes.DIS<"label", string> = {
5
10
  id: 1,
@@ -98,12 +103,26 @@ test("Tests for getEnumByValue", () => {
98
103
  expect(DataTypes.getEnumByValue(DataTypes.HAlignEnum, 4)).toBeUndefined();
99
104
  });
100
105
 
106
+ test("Tests for getEnumByValue of string value enum", () => {
107
+ expect(DataTypes.getEnumByValue(GenderEnum, "M")).toStrictEqual(
108
+ GenderEnum.Male
109
+ );
110
+ expect(DataTypes.getEnumByValue(GenderEnum, "F")).toStrictEqual(
111
+ GenderEnum.Female
112
+ );
113
+ });
114
+
101
115
  test("Tests for getEnumKey", () => {
102
116
  expect(
103
117
  DataTypes.getEnumKey(DataTypes.HAlignEnum, DataTypes.HAlignEnum.Center)
104
118
  ).toBe("Center");
105
119
  });
106
120
 
121
+ test("Tests for getEnumKey of string value enum", () => {
122
+ expect(DataTypes.getEnumKey(GenderEnum, GenderEnum.Female)).toBe("Female");
123
+ expect(DataTypes.getEnumKey(GenderEnum, "None")).toBeUndefined();
124
+ });
125
+
107
126
  test("Tests for getEnumKeys", () => {
108
127
  enum ProductUnit {
109
128
  KILOGRAM = 32,
@@ -325,6 +325,7 @@ export declare namespace DataTypes {
325
325
  function getBasicNameByValue(value: unknown, isArray?: boolean): BasicNames | undefined;
326
326
  /**
327
327
  * Get enum item from key
328
+ * getEnumByKey(Gender, "Male") === Gender.Male
328
329
  * @param enumItem Enum
329
330
  * @param key Key
330
331
  * @returns Enum item
@@ -332,6 +333,7 @@ export declare namespace DataTypes {
332
333
  function getEnumByKey<T extends EnumBase, K extends keyof T>(enumItem: T, key: string): T[K] | undefined;
333
334
  /**
334
335
  * Get enum item from value
336
+ * getEnumByKey(Gender, "M") === Gender.Male
335
337
  * @param enumItem Enum
336
338
  * @param value Key
337
339
  * @returns Enum item or undefined
@@ -339,11 +341,12 @@ export declare namespace DataTypes {
339
341
  function getEnumByValue<T extends EnumBase, K extends keyof T>(enumItem: T, value: EnumValue): T[K] | undefined;
340
342
  /**
341
343
  * Get enum string literal type value
344
+ * getEnumKey(Gender, "F") === "Female"
342
345
  * @param enumItem Enum item
343
346
  * @param value Value
344
347
  * @returns Result
345
348
  */
346
- function getEnumKey(enumItem: EnumBase, value: EnumValue): string;
349
+ function getEnumKey<T extends EnumBase>(enumItem: T, value: EnumValue): string | undefined;
347
350
  /**
348
351
  * Get Enum keys
349
352
  * @param input Input Enum
@@ -290,8 +290,15 @@ var DataTypes;
290
290
  return typeName;
291
291
  }
292
292
  DataTypes.getBasicNameByValue = getBasicNameByValue;
293
+ /*
294
+ enum Gender {
295
+ Male = "M",
296
+ Female = "F"
297
+ }
298
+ */
293
299
  /**
294
300
  * Get enum item from key
301
+ * getEnumByKey(Gender, "Male") === Gender.Male
295
302
  * @param enumItem Enum
296
303
  * @param key Key
297
304
  * @returns Enum item
@@ -304,24 +311,47 @@ var DataTypes;
304
311
  DataTypes.getEnumByKey = getEnumByKey;
305
312
  /**
306
313
  * Get enum item from value
314
+ * getEnumByKey(Gender, "M") === Gender.Male
307
315
  * @param enumItem Enum
308
316
  * @param value Key
309
317
  * @returns Enum item or undefined
310
318
  */
311
319
  function getEnumByValue(enumItem, value) {
312
- if (value in enumItem)
313
- return value;
320
+ if (typeof value === "number") {
321
+ if (value in enumItem)
322
+ return value;
323
+ }
324
+ else {
325
+ const keys = Object.keys(enumItem);
326
+ for (const key of keys) {
327
+ const kv = enumItem[key];
328
+ if (kv === value)
329
+ return kv;
330
+ }
331
+ }
314
332
  return undefined;
315
333
  }
316
334
  DataTypes.getEnumByValue = getEnumByValue;
317
335
  /**
318
336
  * Get enum string literal type value
337
+ * getEnumKey(Gender, "F") === "Female"
319
338
  * @param enumItem Enum item
320
339
  * @param value Value
321
340
  * @returns Result
322
341
  */
323
342
  function getEnumKey(enumItem, value) {
324
- return enumItem[value].toString();
343
+ if (typeof value === "number") {
344
+ if (value in enumItem)
345
+ return enumItem[value].toString();
346
+ }
347
+ else {
348
+ const keys = Object.keys(enumItem);
349
+ for (const key of keys) {
350
+ if (enumItem[key] === value)
351
+ return key;
352
+ }
353
+ }
354
+ return undefined;
325
355
  }
326
356
  DataTypes.getEnumKey = getEnumKey;
327
357
  /**
@@ -325,6 +325,7 @@ export declare namespace DataTypes {
325
325
  function getBasicNameByValue(value: unknown, isArray?: boolean): BasicNames | undefined;
326
326
  /**
327
327
  * Get enum item from key
328
+ * getEnumByKey(Gender, "Male") === Gender.Male
328
329
  * @param enumItem Enum
329
330
  * @param key Key
330
331
  * @returns Enum item
@@ -332,6 +333,7 @@ export declare namespace DataTypes {
332
333
  function getEnumByKey<T extends EnumBase, K extends keyof T>(enumItem: T, key: string): T[K] | undefined;
333
334
  /**
334
335
  * Get enum item from value
336
+ * getEnumByKey(Gender, "M") === Gender.Male
335
337
  * @param enumItem Enum
336
338
  * @param value Key
337
339
  * @returns Enum item or undefined
@@ -339,11 +341,12 @@ export declare namespace DataTypes {
339
341
  function getEnumByValue<T extends EnumBase, K extends keyof T>(enumItem: T, value: EnumValue): T[K] | undefined;
340
342
  /**
341
343
  * Get enum string literal type value
344
+ * getEnumKey(Gender, "F") === "Female"
342
345
  * @param enumItem Enum item
343
346
  * @param value Value
344
347
  * @returns Result
345
348
  */
346
- function getEnumKey(enumItem: EnumBase, value: EnumValue): string;
349
+ function getEnumKey<T extends EnumBase>(enumItem: T, value: EnumValue): string | undefined;
347
350
  /**
348
351
  * Get Enum keys
349
352
  * @param input Input Enum
@@ -287,8 +287,15 @@ export var DataTypes;
287
287
  return typeName;
288
288
  }
289
289
  DataTypes.getBasicNameByValue = getBasicNameByValue;
290
+ /*
291
+ enum Gender {
292
+ Male = "M",
293
+ Female = "F"
294
+ }
295
+ */
290
296
  /**
291
297
  * Get enum item from key
298
+ * getEnumByKey(Gender, "Male") === Gender.Male
292
299
  * @param enumItem Enum
293
300
  * @param key Key
294
301
  * @returns Enum item
@@ -301,24 +308,47 @@ export var DataTypes;
301
308
  DataTypes.getEnumByKey = getEnumByKey;
302
309
  /**
303
310
  * Get enum item from value
311
+ * getEnumByKey(Gender, "M") === Gender.Male
304
312
  * @param enumItem Enum
305
313
  * @param value Key
306
314
  * @returns Enum item or undefined
307
315
  */
308
316
  function getEnumByValue(enumItem, value) {
309
- if (value in enumItem)
310
- return value;
317
+ if (typeof value === "number") {
318
+ if (value in enumItem)
319
+ return value;
320
+ }
321
+ else {
322
+ const keys = Object.keys(enumItem);
323
+ for (const key of keys) {
324
+ const kv = enumItem[key];
325
+ if (kv === value)
326
+ return kv;
327
+ }
328
+ }
311
329
  return undefined;
312
330
  }
313
331
  DataTypes.getEnumByValue = getEnumByValue;
314
332
  /**
315
333
  * Get enum string literal type value
334
+ * getEnumKey(Gender, "F") === "Female"
316
335
  * @param enumItem Enum item
317
336
  * @param value Value
318
337
  * @returns Result
319
338
  */
320
339
  function getEnumKey(enumItem, value) {
321
- return enumItem[value].toString();
340
+ if (typeof value === "number") {
341
+ if (value in enumItem)
342
+ return enumItem[value].toString();
343
+ }
344
+ else {
345
+ const keys = Object.keys(enumItem);
346
+ for (const key of keys) {
347
+ if (enumItem[key] === value)
348
+ return key;
349
+ }
350
+ }
351
+ return undefined;
322
352
  }
323
353
  DataTypes.getEnumKey = getEnumKey;
324
354
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/shared",
3
- "version": "1.2.74",
3
+ "version": "1.2.75",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -37,10 +37,10 @@
37
37
  "homepage": "https://github.com/ETSOO/Shared#readme",
38
38
  "devDependencies": {
39
39
  "@types/lodash.isequal": "^4.5.8",
40
- "@vitejs/plugin-react": "^4.5.0",
40
+ "@vitejs/plugin-react": "^4.5.1",
41
41
  "jsdom": "^26.1.0",
42
42
  "typescript": "^5.8.3",
43
- "vitest": "^3.1.4"
43
+ "vitest": "^3.2.3"
44
44
  },
45
45
  "dependencies": {
46
46
  "lodash.isequal": "^4.5.0"
package/src/DataTypes.ts CHANGED
@@ -561,8 +561,16 @@ export namespace DataTypes {
561
561
  return typeName;
562
562
  }
563
563
 
564
+ /*
565
+ enum Gender {
566
+ Male = "M",
567
+ Female = "F"
568
+ }
569
+ */
570
+
564
571
  /**
565
572
  * Get enum item from key
573
+ * getEnumByKey(Gender, "Male") === Gender.Male
566
574
  * @param enumItem Enum
567
575
  * @param key Key
568
576
  * @returns Enum item
@@ -577,6 +585,7 @@ export namespace DataTypes {
577
585
 
578
586
  /**
579
587
  * Get enum item from value
588
+ * getEnumByKey(Gender, "M") === Gender.Male
580
589
  * @param enumItem Enum
581
590
  * @param value Key
582
591
  * @returns Enum item or undefined
@@ -585,18 +594,40 @@ export namespace DataTypes {
585
594
  enumItem: T,
586
595
  value: EnumValue
587
596
  ): T[K] | undefined {
588
- if (value in enumItem) return <T[K]>value;
597
+ if (typeof value === "number") {
598
+ if (value in enumItem) return <T[K]>value;
599
+ } else {
600
+ const keys = Object.keys(enumItem) as (keyof T)[];
601
+ for (const key of keys) {
602
+ const kv = enumItem[key];
603
+ if (kv === value) return <T[K]>kv;
604
+ }
605
+ }
606
+
589
607
  return undefined;
590
608
  }
591
609
 
592
610
  /**
593
611
  * Get enum string literal type value
612
+ * getEnumKey(Gender, "F") === "Female"
594
613
  * @param enumItem Enum item
595
614
  * @param value Value
596
615
  * @returns Result
597
616
  */
598
- export function getEnumKey(enumItem: EnumBase, value: EnumValue) {
599
- return enumItem[value].toString();
617
+ export function getEnumKey<T extends EnumBase>(
618
+ enumItem: T,
619
+ value: EnumValue
620
+ ) {
621
+ if (typeof value === "number") {
622
+ if (value in enumItem) return enumItem[value].toString();
623
+ } else {
624
+ const keys = Object.keys(enumItem);
625
+ for (const key of keys) {
626
+ if (enumItem[key] === value) return key;
627
+ }
628
+ }
629
+
630
+ return undefined;
600
631
  }
601
632
 
602
633
  /**