@etsoo/shared 1.2.74 → 1.2.76
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/__tests__/DataTypes.ts +19 -0
- package/lib/cjs/DataTypes.d.ts +4 -1
- package/lib/cjs/DataTypes.js +33 -3
- package/lib/mjs/DataTypes.d.ts +4 -1
- package/lib/mjs/DataTypes.js +33 -3
- package/package.json +6 -5
- package/src/DataTypes.ts +34 -3
package/__tests__/DataTypes.ts
CHANGED
|
@@ -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,
|
package/lib/cjs/DataTypes.d.ts
CHANGED
|
@@ -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:
|
|
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
|
package/lib/cjs/DataTypes.js
CHANGED
|
@@ -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
|
|
313
|
-
|
|
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
|
-
|
|
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
|
/**
|
package/lib/mjs/DataTypes.d.ts
CHANGED
|
@@ -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:
|
|
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
|
package/lib/mjs/DataTypes.js
CHANGED
|
@@ -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
|
|
310
|
-
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "1.2.76",
|
|
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,11 @@
|
|
|
37
37
|
"homepage": "https://github.com/ETSOO/Shared#readme",
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/lodash.isequal": "^4.5.8",
|
|
40
|
-
"@
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
40
|
+
"@types/node": "^24.3.3",
|
|
41
|
+
"@vitejs/plugin-react": "^5.0.2",
|
|
42
|
+
"jsdom": "^27.0.0",
|
|
43
|
+
"typescript": "^5.9.2",
|
|
44
|
+
"vitest": "^3.2.4"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
|
46
47
|
"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
|
|
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
|
|
599
|
-
|
|
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
|
/**
|