@etsoo/shared 1.1.18 → 1.1.21
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 +2 -0
- package/__tests__/Utils.ts +6 -0
- package/lib/cjs/DataTypes.d.ts +8 -2
- package/lib/cjs/DomUtils.d.ts +7 -2
- package/lib/cjs/Utils.d.ts +7 -0
- package/lib/cjs/Utils.js +11 -0
- package/lib/mjs/DataTypes.d.ts +8 -2
- package/lib/mjs/DomUtils.d.ts +7 -2
- package/lib/mjs/Utils.d.ts +7 -0
- package/lib/mjs/Utils.js +11 -0
- package/package.json +5 -5
- package/src/DataTypes.ts +9 -2
- package/src/DomUtils.ts +2 -2
- package/src/Utils.ts +14 -0
package/README.md
CHANGED
|
@@ -68,6 +68,7 @@ Data type definitions and type safe functions
|
|
|
68
68
|
|IdType|Number and string combination id type|
|
|
69
69
|
|IdItem|Item with id or id generator|
|
|
70
70
|
|IdLabelItem|Item with id and label|
|
|
71
|
+
|KeyCollection|Key collection, like { key1: {}, key2: {} }|
|
|
71
72
|
|Simple|Basic or basic array type|
|
|
72
73
|
|SimpleEnum|Simple type enum|
|
|
73
74
|
|SimpleNames|Simple type names|
|
|
@@ -190,5 +191,6 @@ String and other related utilities
|
|
|
190
191
|
|objectUpdated|Get the new object's updated fields contrast to the previous object|
|
|
191
192
|
|parseString|Parse string (JSON) to specific type|
|
|
192
193
|
|removeNonLetters|Remove non letters (0-9, a-z, A-Z)|
|
|
194
|
+
|replaceNullOrEmpty|Replace null or empty with default value|
|
|
193
195
|
|setLabels|Set source with new labels|
|
|
194
196
|
|snakeNameToWord|Snake name to works, 'snake_name' to 'Snake Name'|
|
package/__tests__/Utils.ts
CHANGED
|
@@ -126,6 +126,12 @@ test('Tests for removeNonLetters', () => {
|
|
|
126
126
|
expect(input.removeNonLetters()).toBe(result);
|
|
127
127
|
});
|
|
128
128
|
|
|
129
|
+
test('Tests for replaceNullOrEmpty', () => {
|
|
130
|
+
expect(Utils.replaceNullOrEmpty('a', 's')).toBe('a');
|
|
131
|
+
expect(Utils.replaceNullOrEmpty(null, 's')).toBe('s');
|
|
132
|
+
expect(Utils.replaceNullOrEmpty(' ', 's')).toBe('s');
|
|
133
|
+
});
|
|
134
|
+
|
|
129
135
|
test('Tests for objectEqual', () => {
|
|
130
136
|
const obj1 = { a: 1, b: 'abc', c: true, d: null, f: [1, 2] };
|
|
131
137
|
const obj2 = { a: '1', b: 'abc', c: true, f: [1, 2] };
|
package/lib/cjs/DataTypes.d.ts
CHANGED
|
@@ -120,6 +120,12 @@ export declare namespace DataTypes {
|
|
|
120
120
|
type AddOrEditType<T, Editing extends boolean> = (Editing extends true ? T : Partial<T>) & {
|
|
121
121
|
changedFields?: string[];
|
|
122
122
|
};
|
|
123
|
+
/**
|
|
124
|
+
* Key collection, like { key1: {}, key2: {} }
|
|
125
|
+
*/
|
|
126
|
+
type KeyCollection<K extends readonly string[], I extends {}> = {
|
|
127
|
+
[index in K[number]]: I;
|
|
128
|
+
};
|
|
123
129
|
/**
|
|
124
130
|
* Enum value type
|
|
125
131
|
*/
|
|
@@ -177,7 +183,7 @@ export declare namespace DataTypes {
|
|
|
177
183
|
/**
|
|
178
184
|
* Culture definiton
|
|
179
185
|
*/
|
|
180
|
-
type CultureDefinition = Readonly<{
|
|
186
|
+
type CultureDefinition<T extends {} = StringRecord> = Readonly<{
|
|
181
187
|
/**
|
|
182
188
|
* Name, like zh-CN
|
|
183
189
|
*/
|
|
@@ -189,7 +195,7 @@ export declare namespace DataTypes {
|
|
|
189
195
|
/**
|
|
190
196
|
* Resources
|
|
191
197
|
*/
|
|
192
|
-
readonly resources: Readonly<
|
|
198
|
+
readonly resources: Readonly<T>;
|
|
193
199
|
/**
|
|
194
200
|
* Compatible names
|
|
195
201
|
*/
|
package/lib/cjs/DomUtils.d.ts
CHANGED
|
@@ -54,10 +54,15 @@ export declare namespace DomUtils {
|
|
|
54
54
|
* @param items Available cultures
|
|
55
55
|
* @param culture Detected culture
|
|
56
56
|
*/
|
|
57
|
-
const getCulture: (items:
|
|
57
|
+
const getCulture: <T extends {}>(items: Readonly<{
|
|
58
58
|
readonly name: string;
|
|
59
59
|
readonly label: string;
|
|
60
|
-
readonly resources: Readonly<
|
|
60
|
+
readonly resources: Readonly<T>;
|
|
61
|
+
readonly compatibleName?: string[] | undefined;
|
|
62
|
+
}>[], culture: string) => Readonly<{
|
|
63
|
+
readonly name: string;
|
|
64
|
+
readonly label: string;
|
|
65
|
+
readonly resources: Readonly<T>;
|
|
61
66
|
readonly compatibleName?: string[] | undefined;
|
|
62
67
|
}> | undefined;
|
|
63
68
|
/**
|
package/lib/cjs/Utils.d.ts
CHANGED
|
@@ -189,6 +189,13 @@ export declare namespace Utils {
|
|
|
189
189
|
* @returns Result
|
|
190
190
|
*/
|
|
191
191
|
const removeNonLetters: (input?: string | undefined) => string | undefined;
|
|
192
|
+
/**
|
|
193
|
+
* Replace null or empty with default value
|
|
194
|
+
* @param input Input string
|
|
195
|
+
* @param defaultValue Default value
|
|
196
|
+
* @returns Result
|
|
197
|
+
*/
|
|
198
|
+
const replaceNullOrEmpty: (input: string | null | undefined, defaultValue: string) => string;
|
|
192
199
|
/**
|
|
193
200
|
* Set source with new labels
|
|
194
201
|
* @param source Source
|
package/lib/cjs/Utils.js
CHANGED
|
@@ -371,6 +371,17 @@ var Utils;
|
|
|
371
371
|
Utils.removeNonLetters = (input) => {
|
|
372
372
|
return input === null || input === void 0 ? void 0 : input.removeNonLetters();
|
|
373
373
|
};
|
|
374
|
+
/**
|
|
375
|
+
* Replace null or empty with default value
|
|
376
|
+
* @param input Input string
|
|
377
|
+
* @param defaultValue Default value
|
|
378
|
+
* @returns Result
|
|
379
|
+
*/
|
|
380
|
+
Utils.replaceNullOrEmpty = (input, defaultValue) => {
|
|
381
|
+
if (input == null || input.trim() === '')
|
|
382
|
+
return defaultValue;
|
|
383
|
+
return input;
|
|
384
|
+
};
|
|
374
385
|
/**
|
|
375
386
|
* Set source with new labels
|
|
376
387
|
* @param source Source
|
package/lib/mjs/DataTypes.d.ts
CHANGED
|
@@ -120,6 +120,12 @@ export declare namespace DataTypes {
|
|
|
120
120
|
type AddOrEditType<T, Editing extends boolean> = (Editing extends true ? T : Partial<T>) & {
|
|
121
121
|
changedFields?: string[];
|
|
122
122
|
};
|
|
123
|
+
/**
|
|
124
|
+
* Key collection, like { key1: {}, key2: {} }
|
|
125
|
+
*/
|
|
126
|
+
type KeyCollection<K extends readonly string[], I extends {}> = {
|
|
127
|
+
[index in K[number]]: I;
|
|
128
|
+
};
|
|
123
129
|
/**
|
|
124
130
|
* Enum value type
|
|
125
131
|
*/
|
|
@@ -177,7 +183,7 @@ export declare namespace DataTypes {
|
|
|
177
183
|
/**
|
|
178
184
|
* Culture definiton
|
|
179
185
|
*/
|
|
180
|
-
type CultureDefinition = Readonly<{
|
|
186
|
+
type CultureDefinition<T extends {} = StringRecord> = Readonly<{
|
|
181
187
|
/**
|
|
182
188
|
* Name, like zh-CN
|
|
183
189
|
*/
|
|
@@ -189,7 +195,7 @@ export declare namespace DataTypes {
|
|
|
189
195
|
/**
|
|
190
196
|
* Resources
|
|
191
197
|
*/
|
|
192
|
-
readonly resources: Readonly<
|
|
198
|
+
readonly resources: Readonly<T>;
|
|
193
199
|
/**
|
|
194
200
|
* Compatible names
|
|
195
201
|
*/
|
package/lib/mjs/DomUtils.d.ts
CHANGED
|
@@ -54,10 +54,15 @@ export declare namespace DomUtils {
|
|
|
54
54
|
* @param items Available cultures
|
|
55
55
|
* @param culture Detected culture
|
|
56
56
|
*/
|
|
57
|
-
const getCulture: (items:
|
|
57
|
+
const getCulture: <T extends {}>(items: Readonly<{
|
|
58
58
|
readonly name: string;
|
|
59
59
|
readonly label: string;
|
|
60
|
-
readonly resources: Readonly<
|
|
60
|
+
readonly resources: Readonly<T>;
|
|
61
|
+
readonly compatibleName?: string[] | undefined;
|
|
62
|
+
}>[], culture: string) => Readonly<{
|
|
63
|
+
readonly name: string;
|
|
64
|
+
readonly label: string;
|
|
65
|
+
readonly resources: Readonly<T>;
|
|
61
66
|
readonly compatibleName?: string[] | undefined;
|
|
62
67
|
}> | undefined;
|
|
63
68
|
/**
|
package/lib/mjs/Utils.d.ts
CHANGED
|
@@ -189,6 +189,13 @@ export declare namespace Utils {
|
|
|
189
189
|
* @returns Result
|
|
190
190
|
*/
|
|
191
191
|
const removeNonLetters: (input?: string | undefined) => string | undefined;
|
|
192
|
+
/**
|
|
193
|
+
* Replace null or empty with default value
|
|
194
|
+
* @param input Input string
|
|
195
|
+
* @param defaultValue Default value
|
|
196
|
+
* @returns Result
|
|
197
|
+
*/
|
|
198
|
+
const replaceNullOrEmpty: (input: string | null | undefined, defaultValue: string) => string;
|
|
192
199
|
/**
|
|
193
200
|
* Set source with new labels
|
|
194
201
|
* @param source Source
|
package/lib/mjs/Utils.js
CHANGED
|
@@ -368,6 +368,17 @@ export var Utils;
|
|
|
368
368
|
Utils.removeNonLetters = (input) => {
|
|
369
369
|
return input === null || input === void 0 ? void 0 : input.removeNonLetters();
|
|
370
370
|
};
|
|
371
|
+
/**
|
|
372
|
+
* Replace null or empty with default value
|
|
373
|
+
* @param input Input string
|
|
374
|
+
* @param defaultValue Default value
|
|
375
|
+
* @returns Result
|
|
376
|
+
*/
|
|
377
|
+
Utils.replaceNullOrEmpty = (input, defaultValue) => {
|
|
378
|
+
if (input == null || input.trim() === '')
|
|
379
|
+
return defaultValue;
|
|
380
|
+
return input;
|
|
381
|
+
};
|
|
371
382
|
/**
|
|
372
383
|
* Set source with new labels
|
|
373
384
|
* @param source Source
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etsoo/shared",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.21",
|
|
4
4
|
"description": "TypeScript shared utilities and functions",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/mjs/index.js",
|
|
@@ -55,11 +55,11 @@
|
|
|
55
55
|
"dependencies": {},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/jest": "^27.4.1",
|
|
58
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
59
|
-
"@typescript-eslint/parser": "^5.
|
|
60
|
-
"eslint": "^8.
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
|
59
|
+
"@typescript-eslint/parser": "^5.20.0",
|
|
60
|
+
"eslint": "^8.14.0",
|
|
61
61
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
62
|
-
"eslint-plugin-import": "^2.
|
|
62
|
+
"eslint-plugin-import": "^2.26.0",
|
|
63
63
|
"jest": "^27.5.1",
|
|
64
64
|
"ts-jest": "^27.1.4",
|
|
65
65
|
"typescript": "^4.6.3"
|
package/src/DataTypes.ts
CHANGED
|
@@ -156,6 +156,13 @@ export namespace DataTypes {
|
|
|
156
156
|
Editing extends boolean
|
|
157
157
|
> = (Editing extends true ? T : Partial<T>) & { changedFields?: string[] };
|
|
158
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Key collection, like { key1: {}, key2: {} }
|
|
161
|
+
*/
|
|
162
|
+
export type KeyCollection<K extends readonly string[], I extends {}> = {
|
|
163
|
+
[index in K[number]]: I;
|
|
164
|
+
};
|
|
165
|
+
|
|
159
166
|
/**
|
|
160
167
|
* Enum value type
|
|
161
168
|
*/
|
|
@@ -230,7 +237,7 @@ export namespace DataTypes {
|
|
|
230
237
|
/**
|
|
231
238
|
* Culture definiton
|
|
232
239
|
*/
|
|
233
|
-
export type CultureDefinition = Readonly<{
|
|
240
|
+
export type CultureDefinition<T extends {} = StringRecord> = Readonly<{
|
|
234
241
|
/**
|
|
235
242
|
* Name, like zh-CN
|
|
236
243
|
*/
|
|
@@ -244,7 +251,7 @@ export namespace DataTypes {
|
|
|
244
251
|
/**
|
|
245
252
|
* Resources
|
|
246
253
|
*/
|
|
247
|
-
readonly resources: Readonly<
|
|
254
|
+
readonly resources: Readonly<T>;
|
|
248
255
|
|
|
249
256
|
/**
|
|
250
257
|
* Compatible names
|
package/src/DomUtils.ts
CHANGED
|
@@ -281,8 +281,8 @@ export namespace DomUtils {
|
|
|
281
281
|
* @param items Available cultures
|
|
282
282
|
* @param culture Detected culture
|
|
283
283
|
*/
|
|
284
|
-
export const getCulture = (
|
|
285
|
-
items: DataTypes.CultureDefinition[],
|
|
284
|
+
export const getCulture = <T extends {}>(
|
|
285
|
+
items: DataTypes.CultureDefinition<T>[],
|
|
286
286
|
culture: string
|
|
287
287
|
) => {
|
|
288
288
|
if (items.length === 0) {
|
package/src/Utils.ts
CHANGED
|
@@ -516,6 +516,20 @@ export namespace Utils {
|
|
|
516
516
|
return input?.removeNonLetters();
|
|
517
517
|
};
|
|
518
518
|
|
|
519
|
+
/**
|
|
520
|
+
* Replace null or empty with default value
|
|
521
|
+
* @param input Input string
|
|
522
|
+
* @param defaultValue Default value
|
|
523
|
+
* @returns Result
|
|
524
|
+
*/
|
|
525
|
+
export const replaceNullOrEmpty = (
|
|
526
|
+
input: string | null | undefined,
|
|
527
|
+
defaultValue: string
|
|
528
|
+
) => {
|
|
529
|
+
if (input == null || input.trim() === '') return defaultValue;
|
|
530
|
+
return input;
|
|
531
|
+
};
|
|
532
|
+
|
|
519
533
|
/**
|
|
520
534
|
* Set source with new labels
|
|
521
535
|
* @param source Source
|