@etsoo/shared 1.2.17 → 1.2.19

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/README.md CHANGED
@@ -171,8 +171,10 @@ Data type definitions and type safe functions. ListItemType, ListItemType1 and L
171
171
  |getEnumByValue|Get enum item from value|
172
172
  |getEnumKey|Get enum string literal type value|
173
173
  |getEnumKeys|Get Enum keys|
174
+ |getListItemLabel|Get ListType2 item label|
174
175
  |getIdValue|Get object id field value|
175
176
  |getIdValue1|Get object id field value 1|
177
+ |getObjectItemLabel|Get object item label|
176
178
  |getResult|Get input function or value result|
177
179
  |getStringValue|Get object string field value|
178
180
  |getValue|Get object field value|
@@ -248,7 +250,7 @@ Numbers related utilities
248
250
  |formatFileSize|Format file size|
249
251
  |formatMoney|Format money number|
250
252
  |getCurrencySymbol|Get currency symbol or name from ISO code|
251
- |parse|Parse float value|
253
+ |parse|Parse to number, with or without default value|
252
254
  |toExact|To the exact precision number avoiding precision lost|
253
255
 
254
256
  ## StorageUtils
@@ -25,7 +25,10 @@ test('Tests for getCurrencySymbol', () => {
25
25
  test('Tests for parse', () => {
26
26
  expect(NumberUtils.parse('123')).toBe(123);
27
27
  expect(NumberUtils.parse(Object(123))).toBe(123);
28
- expect(isNaN(NumberUtils.parse('a'))).toBeTruthy();
28
+ expect(NumberUtils.parse('a')).toBeUndefined();
29
+ expect(NumberUtils.parse('a', 0)).toBe(0);
30
+ expect(NumberUtils.parse('')).toBeUndefined();
31
+ expect(NumberUtils.parse('', -1)).toBe(-1);
29
32
  });
30
33
 
31
34
  test('Tests for parseWithUnit', () => {
@@ -434,3 +434,15 @@ export type LabelDefaultType<T extends object> = T extends {
434
434
  export type TitleDefaultType<T extends object> = T extends {
435
435
  title: string;
436
436
  } ? DataTypes.Keys<T, string> & 'title' : DataTypes.Keys<T, string>;
437
+ /**
438
+ * Get ListType2 item label
439
+ * @param item Item
440
+ * @returns Result
441
+ */
442
+ export declare function getListItemLabel<D extends ListType2>(item: D): string;
443
+ /**
444
+ * Get object item label
445
+ * @param item Item
446
+ * @returns Result
447
+ */
448
+ export declare function getObjectItemLabel(item: object): string;
@@ -5,7 +5,7 @@
5
5
  * Before was wrong with {}, from 4.8 unknown = {} | null | undefined
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.DataTypes = void 0;
8
+ exports.getObjectItemLabel = exports.getListItemLabel = exports.DataTypes = void 0;
9
9
  /**
10
10
  * Interface data types
11
11
  */
@@ -429,3 +429,31 @@ var DataTypes;
429
429
  }
430
430
  DataTypes.jsonReplacer = jsonReplacer;
431
431
  })(DataTypes || (exports.DataTypes = DataTypes = {}));
432
+ /**
433
+ * Get ListType2 item label
434
+ * @param item Item
435
+ * @returns Result
436
+ */
437
+ function getListItemLabel(item) {
438
+ return 'label' in item
439
+ ? item.label
440
+ : 'name' in item
441
+ ? item.name
442
+ : item.title;
443
+ }
444
+ exports.getListItemLabel = getListItemLabel;
445
+ /**
446
+ * Get object item label
447
+ * @param item Item
448
+ * @returns Result
449
+ */
450
+ function getObjectItemLabel(item) {
451
+ return 'label' in item
452
+ ? `${item.label}`
453
+ : 'name' in item
454
+ ? `${item.name}`
455
+ : 'title' in item
456
+ ? `${item.title}`
457
+ : `${item}`;
458
+ }
459
+ exports.getObjectItemLabel = getObjectItemLabel;
@@ -42,10 +42,16 @@ export declare namespace NumberUtils {
42
42
  */
43
43
  function getCurrencySymbol(code: string, display?: 'symbol' | 'narrowSymbol' | 'name', locale?: string): string | undefined;
44
44
  /**
45
- * Parse float value
45
+ * Parse number
46
46
  * @param rawData Raw data
47
47
  */
48
- const parse: (rawData: unknown) => number;
48
+ function parse(rawData: unknown): number | undefined;
49
+ /**
50
+ * Parse number with default value
51
+ * @param rawData Raw data
52
+ * @param defaultValue Default value
53
+ */
54
+ function parse(rawData: unknown, defaultValue: number): number;
49
55
  /**
50
56
  * Parse float value and unit
51
57
  * @param input Input string
@@ -82,19 +82,21 @@ var NumberUtils;
82
82
  return symbol;
83
83
  }
84
84
  NumberUtils.getCurrencySymbol = getCurrencySymbol;
85
- /**
86
- * Parse float value
87
- * @param rawData Raw data
88
- */
89
- NumberUtils.parse = (rawData) => {
90
- if (rawData == null) {
91
- return Number.NaN;
85
+ function parse(rawData, defaultValue) {
86
+ if (rawData == null || rawData === '') {
87
+ return defaultValue;
92
88
  }
93
89
  if (typeof rawData === 'number') {
90
+ if (isNaN(rawData))
91
+ return defaultValue;
94
92
  return rawData;
95
93
  }
96
- return parseFloat(rawData.toString());
97
- };
94
+ const p = parseFloat(rawData.toString());
95
+ if (isNaN(p))
96
+ return defaultValue;
97
+ return p;
98
+ }
99
+ NumberUtils.parse = parse;
98
100
  /**
99
101
  * Parse float value and unit
100
102
  * @param input Input string
@@ -434,3 +434,15 @@ export type LabelDefaultType<T extends object> = T extends {
434
434
  export type TitleDefaultType<T extends object> = T extends {
435
435
  title: string;
436
436
  } ? DataTypes.Keys<T, string> & 'title' : DataTypes.Keys<T, string>;
437
+ /**
438
+ * Get ListType2 item label
439
+ * @param item Item
440
+ * @returns Result
441
+ */
442
+ export declare function getListItemLabel<D extends ListType2>(item: D): string;
443
+ /**
444
+ * Get object item label
445
+ * @param item Item
446
+ * @returns Result
447
+ */
448
+ export declare function getObjectItemLabel(item: object): string;
@@ -426,3 +426,29 @@ export var DataTypes;
426
426
  }
427
427
  DataTypes.jsonReplacer = jsonReplacer;
428
428
  })(DataTypes || (DataTypes = {}));
429
+ /**
430
+ * Get ListType2 item label
431
+ * @param item Item
432
+ * @returns Result
433
+ */
434
+ export function getListItemLabel(item) {
435
+ return 'label' in item
436
+ ? item.label
437
+ : 'name' in item
438
+ ? item.name
439
+ : item.title;
440
+ }
441
+ /**
442
+ * Get object item label
443
+ * @param item Item
444
+ * @returns Result
445
+ */
446
+ export function getObjectItemLabel(item) {
447
+ return 'label' in item
448
+ ? `${item.label}`
449
+ : 'name' in item
450
+ ? `${item.name}`
451
+ : 'title' in item
452
+ ? `${item.title}`
453
+ : `${item}`;
454
+ }
@@ -42,10 +42,16 @@ export declare namespace NumberUtils {
42
42
  */
43
43
  function getCurrencySymbol(code: string, display?: 'symbol' | 'narrowSymbol' | 'name', locale?: string): string | undefined;
44
44
  /**
45
- * Parse float value
45
+ * Parse number
46
46
  * @param rawData Raw data
47
47
  */
48
- const parse: (rawData: unknown) => number;
48
+ function parse(rawData: unknown): number | undefined;
49
+ /**
50
+ * Parse number with default value
51
+ * @param rawData Raw data
52
+ * @param defaultValue Default value
53
+ */
54
+ function parse(rawData: unknown, defaultValue: number): number;
49
55
  /**
50
56
  * Parse float value and unit
51
57
  * @param input Input string
@@ -79,19 +79,21 @@ export var NumberUtils;
79
79
  return symbol;
80
80
  }
81
81
  NumberUtils.getCurrencySymbol = getCurrencySymbol;
82
- /**
83
- * Parse float value
84
- * @param rawData Raw data
85
- */
86
- NumberUtils.parse = (rawData) => {
87
- if (rawData == null) {
88
- return Number.NaN;
82
+ function parse(rawData, defaultValue) {
83
+ if (rawData == null || rawData === '') {
84
+ return defaultValue;
89
85
  }
90
86
  if (typeof rawData === 'number') {
87
+ if (isNaN(rawData))
88
+ return defaultValue;
91
89
  return rawData;
92
90
  }
93
- return parseFloat(rawData.toString());
94
- };
91
+ const p = parseFloat(rawData.toString());
92
+ if (isNaN(p))
93
+ return defaultValue;
94
+ return p;
95
+ }
96
+ NumberUtils.parse = parse;
95
97
  /**
96
98
  * Parse float value and unit
97
99
  * @param input Input string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/shared",
3
- "version": "1.2.17",
3
+ "version": "1.2.19",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -54,8 +54,8 @@
54
54
  },
55
55
  "homepage": "https://github.com/ETSOO/Shared#readme",
56
56
  "devDependencies": {
57
- "@types/jest": "^29.5.5",
58
- "@types/lodash.isequal": "^4.5.6",
57
+ "@types/jest": "^29.5.8",
58
+ "@types/lodash.isequal": "^4.5.8",
59
59
  "jest": "^29.7.0",
60
60
  "jest-environment-jsdom": "^29.7.0",
61
61
  "ts-jest": "^29.1.1",
package/src/DataTypes.ts CHANGED
@@ -787,3 +787,31 @@ export type LabelDefaultType<T extends object> = T extends { label: string }
787
787
  export type TitleDefaultType<T extends object> = T extends { title: string }
788
788
  ? DataTypes.Keys<T, string> & 'title'
789
789
  : DataTypes.Keys<T, string>;
790
+
791
+ /**
792
+ * Get ListType2 item label
793
+ * @param item Item
794
+ * @returns Result
795
+ */
796
+ export function getListItemLabel<D extends ListType2>(item: D) {
797
+ return 'label' in item
798
+ ? item.label
799
+ : 'name' in item
800
+ ? item.name
801
+ : item.title;
802
+ }
803
+
804
+ /**
805
+ * Get object item label
806
+ * @param item Item
807
+ * @returns Result
808
+ */
809
+ export function getObjectItemLabel(item: object): string {
810
+ return 'label' in item
811
+ ? `${item.label}`
812
+ : 'name' in item
813
+ ? `${item.name}`
814
+ : 'title' in item
815
+ ? `${item.title}`
816
+ : `${item}`;
817
+ }
@@ -106,20 +106,35 @@ export namespace NumberUtils {
106
106
  }
107
107
 
108
108
  /**
109
- * Parse float value
109
+ * Parse number
110
110
  * @param rawData Raw data
111
111
  */
112
- export const parse = (rawData: unknown): number => {
113
- if (rawData == null) {
114
- return Number.NaN;
112
+ export function parse(rawData: unknown): number | undefined;
113
+
114
+ /**
115
+ * Parse number with default value
116
+ * @param rawData Raw data
117
+ * @param defaultValue Default value
118
+ */
119
+ export function parse(rawData: unknown, defaultValue: number): number;
120
+
121
+ export function parse(
122
+ rawData: unknown,
123
+ defaultValue?: number
124
+ ): number | undefined {
125
+ if (rawData == null || rawData === '') {
126
+ return defaultValue;
115
127
  }
116
128
 
117
129
  if (typeof rawData === 'number') {
130
+ if (isNaN(rawData)) return defaultValue;
118
131
  return rawData;
119
132
  }
120
133
 
121
- return parseFloat(rawData.toString());
122
- };
134
+ const p = parseFloat(rawData.toString());
135
+ if (isNaN(p)) return defaultValue;
136
+ return p;
137
+ }
123
138
 
124
139
  /**
125
140
  * Parse float value and unit