@etsoo/shared 1.0.71 → 1.0.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.
package/README.md CHANGED
@@ -122,7 +122,9 @@ Storage related utilities
122
122
  |setLocalData|Set local storage data|
123
123
  |setSessionData|Set session storage data|
124
124
  |getLocalData|Get local storage data|
125
+ |getLocalObject|Get local storage object data|
125
126
  |getSessionData|Get session storage data|
127
+ |getSessionObject|Get session storage object data|
126
128
 
127
129
  ## Utils
128
130
  String and other related utilities
@@ -245,6 +245,12 @@ test('Tests for headersToObject', () => {
245
245
  );
246
246
  });
247
247
 
248
+ test('Tests for isFormData', () => {
249
+ const formData = new FormData();
250
+ expect(DomUtils.isFormData(formData)).toBeTruthy();
251
+ expect(DomUtils.isFormData({})).toBeFalsy();
252
+ });
253
+
248
254
  test('Tests for isJSONContentType', () => {
249
255
  expect(DomUtils.isJSONContentType('application/problem+json')).toBeTruthy();
250
256
  expect(DomUtils.isJSONContentType('application/javascript')).toBeTruthy();
@@ -12,3 +12,17 @@ test('Tests for all', () => {
12
12
  expect(StorageUtils.getSessionData('number', 0)).toBe(3.14);
13
13
  expect(StorageUtils.getSessionData('test', {})).toHaveProperty('id', 123);
14
14
  });
15
+
16
+ test('Tests for getLocalObject', () => {
17
+ StorageUtils.setLocalData('test', { id: 123, name: 'test' });
18
+ const data = StorageUtils.getLocalObject<{ id: number }>('test');
19
+ expect(data?.id).toBe(123);
20
+ expect(data).toHaveProperty('name', 'test');
21
+ });
22
+
23
+ test('Tests for getSessionObject', () => {
24
+ StorageUtils.setSessionData('test', { id: 123, name: 'test' });
25
+ const data = StorageUtils.getSessionObject<{ id: number }>('test');
26
+ expect(data?.id).toBe(123);
27
+ expect(data).toHaveProperty('name', 'test');
28
+ });
@@ -8,7 +8,8 @@ test('Tests for getDataChanges', () => {
8
8
  brand: '',
9
9
  price: '6.0',
10
10
  amount: '',
11
- enabled: true
11
+ enabled: true,
12
+ value: undefined
12
13
  };
13
14
  const initData = {
14
15
  id: 1,
@@ -21,9 +21,19 @@ export declare namespace StorageUtils {
21
21
  * @param defaultValue Default value
22
22
  */
23
23
  function getLocalData<T>(key: string, defaultValue: T): T;
24
+ /**
25
+ * Get local storage object data
26
+ * @param key Key name
27
+ */
28
+ function getLocalObject<T extends {}>(key: string): T | undefined;
24
29
  /**
25
30
  * Get session storage data
26
31
  * @param key Key name
27
32
  */
28
33
  function getSessionData<T>(key: string, defaultValue: T): T;
34
+ /**
35
+ * Get session storage object data
36
+ * @param key Key name
37
+ */
38
+ function getSessionObject<T extends {}>(key: string): T | undefined;
29
39
  }
@@ -51,6 +51,18 @@ var StorageUtils;
51
51
  return Utils_1.Utils.parseString(data, defaultValue);
52
52
  }
53
53
  StorageUtils.getLocalData = getLocalData;
54
+ /**
55
+ * Get local storage object data
56
+ * @param key Key name
57
+ */
58
+ function getLocalObject(key) {
59
+ // Get storage
60
+ const data = localStorage.getItem(key);
61
+ if (data == null)
62
+ return undefined;
63
+ return JSON.parse(data);
64
+ }
65
+ StorageUtils.getLocalObject = getLocalObject;
54
66
  /**
55
67
  * Get session storage data
56
68
  * @param key Key name
@@ -62,4 +74,16 @@ var StorageUtils;
62
74
  return Utils_1.Utils.parseString(data, defaultValue);
63
75
  }
64
76
  StorageUtils.getSessionData = getSessionData;
77
+ /**
78
+ * Get session storage object data
79
+ * @param key Key name
80
+ */
81
+ function getSessionObject(key) {
82
+ // Get storage
83
+ const data = sessionStorage.getItem(key);
84
+ if (data == null)
85
+ return undefined;
86
+ return JSON.parse(data);
87
+ }
88
+ StorageUtils.getSessionObject = getSessionObject;
65
89
  })(StorageUtils = exports.StorageUtils || (exports.StorageUtils = {}));
@@ -117,7 +117,7 @@ export declare namespace Utils {
117
117
  * @param labels Labels
118
118
  * @param reference Key reference dictionary
119
119
  */
120
- const setLabels: (source: {}, labels: DataTypes.StringRecord, reference?: Readonly<DataTypes.StringDictionary>) => void;
120
+ const setLabels: (source: {}, labels: DataTypes.StringRecord, reference?: Readonly<DataTypes.StringDictionary> | undefined) => void;
121
121
  /**
122
122
  * Snake name to works, 'snake_name' to 'Snake Name'
123
123
  * @param name Name text
package/lib/cjs/Utils.js CHANGED
@@ -62,8 +62,13 @@ var Utils;
62
62
  // Ignore fields, no process
63
63
  if (ignoreFields.includes(key))
64
64
  return;
65
- // Contract with init value
65
+ // Compare with init value
66
66
  const initValue = Reflect.get(initData, key);
67
+ if (value == null && initValue == null) {
68
+ // Both are null, it's equal
69
+ Reflect.deleteProperty(input, key);
70
+ return;
71
+ }
67
72
  if (initValue != null) {
68
73
  const newValue = DataTypes_1.DataTypes.convert(value, initValue);
69
74
  if (newValue === initValue) {
@@ -227,20 +232,18 @@ var Utils;
227
232
  * @param labels Labels
228
233
  * @param reference Key reference dictionary
229
234
  */
230
- Utils.setLabels = (source, labels, reference = {}) => {
231
- const newLabels = Object.keys(source).reduce((newLabels, key, _index, _keys) => {
235
+ Utils.setLabels = (source, labels, reference) => {
236
+ Object.keys(source).forEach((key) => {
232
237
  var _a;
233
238
  // Reference key
234
- const labelKey = (_a = reference[key]) !== null && _a !== void 0 ? _a : key;
239
+ const labelKey = reference == null ? key : (_a = reference[key]) !== null && _a !== void 0 ? _a : key;
235
240
  // Label
236
241
  const label = labels[labelKey];
237
242
  if (label != null) {
238
243
  // If found, update
239
- newLabels[key] = String(label);
244
+ Reflect.set(source, key, label);
240
245
  }
241
- return newLabels;
242
- }, {});
243
- Object.assign(source, newLabels);
246
+ });
244
247
  };
245
248
  /**
246
249
  * Snake name to works, 'snake_name' to 'Snake Name'
@@ -21,9 +21,19 @@ export declare namespace StorageUtils {
21
21
  * @param defaultValue Default value
22
22
  */
23
23
  function getLocalData<T>(key: string, defaultValue: T): T;
24
+ /**
25
+ * Get local storage object data
26
+ * @param key Key name
27
+ */
28
+ function getLocalObject<T extends {}>(key: string): T | undefined;
24
29
  /**
25
30
  * Get session storage data
26
31
  * @param key Key name
27
32
  */
28
33
  function getSessionData<T>(key: string, defaultValue: T): T;
34
+ /**
35
+ * Get session storage object data
36
+ * @param key Key name
37
+ */
38
+ function getSessionObject<T extends {}>(key: string): T | undefined;
29
39
  }
@@ -48,6 +48,18 @@ export var StorageUtils;
48
48
  return Utils.parseString(data, defaultValue);
49
49
  }
50
50
  StorageUtils.getLocalData = getLocalData;
51
+ /**
52
+ * Get local storage object data
53
+ * @param key Key name
54
+ */
55
+ function getLocalObject(key) {
56
+ // Get storage
57
+ const data = localStorage.getItem(key);
58
+ if (data == null)
59
+ return undefined;
60
+ return JSON.parse(data);
61
+ }
62
+ StorageUtils.getLocalObject = getLocalObject;
51
63
  /**
52
64
  * Get session storage data
53
65
  * @param key Key name
@@ -59,4 +71,16 @@ export var StorageUtils;
59
71
  return Utils.parseString(data, defaultValue);
60
72
  }
61
73
  StorageUtils.getSessionData = getSessionData;
74
+ /**
75
+ * Get session storage object data
76
+ * @param key Key name
77
+ */
78
+ function getSessionObject(key) {
79
+ // Get storage
80
+ const data = sessionStorage.getItem(key);
81
+ if (data == null)
82
+ return undefined;
83
+ return JSON.parse(data);
84
+ }
85
+ StorageUtils.getSessionObject = getSessionObject;
62
86
  })(StorageUtils || (StorageUtils = {}));
@@ -117,7 +117,7 @@ export declare namespace Utils {
117
117
  * @param labels Labels
118
118
  * @param reference Key reference dictionary
119
119
  */
120
- const setLabels: (source: {}, labels: DataTypes.StringRecord, reference?: Readonly<DataTypes.StringDictionary>) => void;
120
+ const setLabels: (source: {}, labels: DataTypes.StringRecord, reference?: Readonly<DataTypes.StringDictionary> | undefined) => void;
121
121
  /**
122
122
  * Snake name to works, 'snake_name' to 'Snake Name'
123
123
  * @param name Name text
package/lib/mjs/Utils.js CHANGED
@@ -59,8 +59,13 @@ export var Utils;
59
59
  // Ignore fields, no process
60
60
  if (ignoreFields.includes(key))
61
61
  return;
62
- // Contract with init value
62
+ // Compare with init value
63
63
  const initValue = Reflect.get(initData, key);
64
+ if (value == null && initValue == null) {
65
+ // Both are null, it's equal
66
+ Reflect.deleteProperty(input, key);
67
+ return;
68
+ }
64
69
  if (initValue != null) {
65
70
  const newValue = DataTypes.convert(value, initValue);
66
71
  if (newValue === initValue) {
@@ -224,20 +229,18 @@ export var Utils;
224
229
  * @param labels Labels
225
230
  * @param reference Key reference dictionary
226
231
  */
227
- Utils.setLabels = (source, labels, reference = {}) => {
228
- const newLabels = Object.keys(source).reduce((newLabels, key, _index, _keys) => {
232
+ Utils.setLabels = (source, labels, reference) => {
233
+ Object.keys(source).forEach((key) => {
229
234
  var _a;
230
235
  // Reference key
231
- const labelKey = (_a = reference[key]) !== null && _a !== void 0 ? _a : key;
236
+ const labelKey = reference == null ? key : (_a = reference[key]) !== null && _a !== void 0 ? _a : key;
232
237
  // Label
233
238
  const label = labels[labelKey];
234
239
  if (label != null) {
235
240
  // If found, update
236
- newLabels[key] = String(label);
241
+ Reflect.set(source, key, label);
237
242
  }
238
- return newLabels;
239
- }, {});
240
- Object.assign(source, newLabels);
243
+ });
241
244
  };
242
245
  /**
243
246
  * Snake name to works, 'snake_name' to 'Snake Name'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/shared",
3
- "version": "1.0.71",
3
+ "version": "1.0.75",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -54,14 +54,14 @@
54
54
  "homepage": "https://github.com/ETSOO/Shared#readme",
55
55
  "dependencies": {},
56
56
  "devDependencies": {
57
- "@types/jest": "^27.0.2",
58
- "@typescript-eslint/eslint-plugin": "^5.0.0",
59
- "@typescript-eslint/parser": "^5.0.0",
60
- "eslint": "^8.0.1",
61
- "eslint-config-airbnb-base": "^14.2.1",
62
- "eslint-plugin-import": "^2.25.2",
63
- "jest": "^27.2.5",
64
- "ts-jest": "^27.0.5",
65
- "typescript": "^4.4.4"
57
+ "@types/jest": "^27.0.3",
58
+ "@typescript-eslint/eslint-plugin": "^5.4.0",
59
+ "@typescript-eslint/parser": "^5.4.0",
60
+ "eslint": "^8.2.0",
61
+ "eslint-config-airbnb-base": "^15.0.0",
62
+ "eslint-plugin-import": "^2.25.3",
63
+ "jest": "^27.3.1",
64
+ "ts-jest": "^27.0.7",
65
+ "typescript": "^4.5.2"
66
66
  }
67
67
  }
@@ -57,6 +57,17 @@ export namespace StorageUtils {
57
57
  return Utils.parseString(data, defaultValue);
58
58
  }
59
59
 
60
+ /**
61
+ * Get local storage object data
62
+ * @param key Key name
63
+ */
64
+ export function getLocalObject<T extends {}>(key: string) {
65
+ // Get storage
66
+ const data = localStorage.getItem(key);
67
+ if (data == null) return undefined;
68
+ return <T>JSON.parse(data);
69
+ }
70
+
60
71
  /**
61
72
  * Get session storage data
62
73
  * @param key Key name
@@ -68,4 +79,15 @@ export namespace StorageUtils {
68
79
  // Return
69
80
  return Utils.parseString(data, defaultValue);
70
81
  }
82
+
83
+ /**
84
+ * Get session storage object data
85
+ * @param key Key name
86
+ */
87
+ export function getSessionObject<T extends {}>(key: string) {
88
+ // Get storage
89
+ const data = sessionStorage.getItem(key);
90
+ if (data == null) return undefined;
91
+ return <T>JSON.parse(data);
92
+ }
71
93
  }
package/src/Utils.ts CHANGED
@@ -115,9 +115,15 @@ export namespace Utils {
115
115
  // Ignore fields, no process
116
116
  if (ignoreFields.includes(key)) return;
117
117
 
118
- // Contract with init value
118
+ // Compare with init value
119
119
  const initValue = Reflect.get(initData, key);
120
120
 
121
+ if (value == null && initValue == null) {
122
+ // Both are null, it's equal
123
+ Reflect.deleteProperty(input, key);
124
+ return;
125
+ }
126
+
121
127
  if (initValue != null) {
122
128
  const newValue = DataTypes.convert(value, initValue);
123
129
  if (newValue === initValue) {
@@ -309,26 +315,20 @@ export namespace Utils {
309
315
  export const setLabels = (
310
316
  source: {},
311
317
  labels: DataTypes.StringRecord,
312
- reference: Readonly<DataTypes.StringDictionary> = {}
318
+ reference?: Readonly<DataTypes.StringDictionary>
313
319
  ) => {
314
- const newLabels = Object.keys(source).reduce(
315
- (newLabels, key, _index, _keys) => {
316
- // Reference key
317
- const labelKey = reference[key] ?? key;
320
+ Object.keys(source).forEach((key) => {
321
+ // Reference key
322
+ const labelKey = reference == null ? key : reference[key] ?? key;
318
323
 
319
- // Label
320
- const label = labels[labelKey];
324
+ // Label
325
+ const label = labels[labelKey];
321
326
 
322
- if (label != null) {
323
- // If found, update
324
- newLabels[key] = String(label);
325
- }
326
-
327
- return newLabels;
328
- },
329
- {} as DataTypes.StringDictionary
330
- );
331
- Object.assign(source, newLabels);
327
+ if (label != null) {
328
+ // If found, update
329
+ Reflect.set(source, key, label);
330
+ }
331
+ });
332
332
  };
333
333
 
334
334
  /**