react-hook-core 0.4.6 → 0.4.7

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/src/reflect.ts CHANGED
@@ -1,142 +1,142 @@
1
- import { StringMap } from "./core";
2
1
  import { NavigateFunction } from "react-router-dom"
2
+ import { StringMap } from "./core"
3
3
 
4
4
  export function clone(obj: any): any {
5
5
  if (!obj) {
6
- return obj;
6
+ return obj
7
7
  }
8
8
  if (obj instanceof Date) {
9
- return new Date(obj.getTime());
9
+ return new Date(obj.getTime())
10
10
  }
11
- if (typeof obj !== 'object') {
12
- return obj;
11
+ if (typeof obj !== "object") {
12
+ return obj
13
13
  }
14
14
  if (Array.isArray(obj)) {
15
- const arr = [];
15
+ const arr = []
16
16
  for (const sub of obj) {
17
- const c = clone(sub);
18
- arr.push(c);
17
+ const c = clone(sub)
18
+ arr.push(c)
19
19
  }
20
- return arr;
20
+ return arr
21
21
  }
22
- const x: any = {};
23
- const keys = Object.keys(obj);
22
+ const x: any = {}
23
+ const keys = Object.keys(obj)
24
24
  for (const k of keys) {
25
- const v = obj[k];
25
+ const v = obj[k]
26
26
  if (v instanceof Date) {
27
- x[k] = new Date(v.getTime());
27
+ x[k] = new Date(v.getTime())
28
28
  } else {
29
29
  switch (typeof v) {
30
- case 'object':
31
- x[k] = clone(v);
32
- break;
30
+ case "object":
31
+ x[k] = clone(v)
32
+ break
33
33
  default:
34
- x[k] = v;
35
- break;
34
+ x[k] = v
35
+ break
36
36
  }
37
37
  }
38
38
  }
39
- return x;
39
+ return x
40
40
  }
41
41
 
42
42
  export function getDirectValue(obj: any, key: string): any {
43
43
  if (obj && obj.hasOwnProperty(key)) {
44
- return obj[key];
44
+ return obj[key]
45
45
  }
46
- return null;
46
+ return null
47
47
  }
48
48
 
49
49
  export function setValue(obj: any, key: string, value: any): any {
50
- let replaceKey = key.replace(/\[/g, '.[').replace(/\.\./g, '.');
51
- if (replaceKey.indexOf('.') === 0) {
52
- replaceKey = replaceKey.slice(1, replaceKey.length);
50
+ let replaceKey = key.replace(/\[/g, ".[").replace(/\.\./g, ".")
51
+ if (replaceKey.indexOf(".") === 0) {
52
+ replaceKey = replaceKey.slice(1, replaceKey.length)
53
53
  }
54
- const keys = replaceKey.split('.');
55
- const firstKey = keys.shift();
54
+ const keys = replaceKey.split(".")
55
+ const firstKey = keys.shift()
56
56
  if (!firstKey) {
57
- return;
57
+ return
58
58
  }
59
- const isArrayKey = /\[([0-9]+)\]/.test(firstKey);
59
+ const isArrayKey = /\[([0-9]+)\]/.test(firstKey)
60
60
  if (keys.length > 0) {
61
- const firstKeyValue = obj[firstKey] || {};
62
- const returnValue = setValue(firstKeyValue, keys.join('.'), value);
63
- return setKey(obj, isArrayKey, firstKey, returnValue);
61
+ const firstKeyValue = obj[firstKey] || {}
62
+ const returnValue = setValue(firstKeyValue, keys.join("."), value)
63
+ return setKey(obj, isArrayKey, firstKey, returnValue)
64
64
  }
65
- return setKey(obj, isArrayKey, firstKey, value);
65
+ return setKey(obj, isArrayKey, firstKey, value)
66
66
  }
67
67
  const setKey = (_object: any, _isArrayKey: boolean, _key: string, _nextValue: any) => {
68
68
  if (_isArrayKey) {
69
69
  if (_object.length > _key) {
70
- _object[_key] = _nextValue;
70
+ _object[_key] = _nextValue
71
71
  } else {
72
- _object.push(_nextValue);
72
+ _object.push(_nextValue)
73
73
  }
74
74
  } else {
75
- _object[_key] = _nextValue;
75
+ _object[_key] = _nextValue
76
76
  }
77
- return _object;
78
- };
77
+ return _object
78
+ }
79
79
  export function isEmptyObject(obj: any): boolean {
80
80
  for (let key in obj) {
81
81
  if (obj.hasOwnProperty(key)) {
82
- return false;
82
+ return false
83
83
  }
84
84
  }
85
- return true;
86
- };
85
+ return true
86
+ }
87
87
  export function diff(obj1: any, obj2: any): string[] {
88
- const fields = [];
89
- const key1s = Object.keys(obj1);
88
+ const fields = []
89
+ const key1s = Object.keys(obj1)
90
90
  for (const k of key1s) {
91
- const v1 = obj1[k];
92
- const v2 = obj2[k];
91
+ const v1 = obj1[k]
92
+ const v2 = obj2[k]
93
93
  if (v1 == null) {
94
94
  if (v2 != null) {
95
- fields.push(k);
95
+ fields.push(k)
96
96
  }
97
97
  } else {
98
- if (typeof v1 !== 'object') {
98
+ if (typeof v1 !== "object") {
99
99
  if (v1 !== v2) {
100
- fields.push(k);
100
+ fields.push(k)
101
101
  }
102
102
  } else {
103
- const e = equal(v1, v2);
103
+ const e = equal(v1, v2)
104
104
  if (!e) {
105
- fields.push(k);
105
+ fields.push(k)
106
106
  }
107
107
  }
108
108
  }
109
109
  }
110
- const key2s = Object.keys(obj2);
111
- const ni = notIn(key1s, key2s);
110
+ const key2s = Object.keys(obj2)
111
+ const ni = notIn(key1s, key2s)
112
112
  for (const n of ni) {
113
- fields.push(n);
113
+ fields.push(n)
114
114
  }
115
- return fields;
115
+ return fields
116
116
  }
117
117
 
118
118
  export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Partial<T> {
119
- const obj1: any = o1;
120
- const obj2: any = o2;
121
- const obj3: any = {};
122
- const s = diff(obj1, obj2);
119
+ const obj1: any = o1
120
+ const obj2: any = o2
121
+ const obj3: any = {}
122
+ const s = diff(obj1, obj2)
123
123
  if (s.length === 0) {
124
- return obj3;
124
+ return obj3
125
125
  }
126
126
  for (const d of s) {
127
- obj3[d] = obj2[d];
127
+ obj3[d] = obj2[d]
128
128
  }
129
129
  if (keys && keys.length > 0) {
130
130
  for (const x of keys) {
131
131
  if (x.length > 0) {
132
- obj3[x] = obj1[x];
132
+ obj3[x] = obj1[x]
133
133
  }
134
134
  }
135
135
  }
136
136
  if (version && version.length > 0) {
137
- obj3[version] = obj1[version];
137
+ obj3[version] = obj1[version]
138
138
  }
139
- return obj3;
139
+ return obj3
140
140
  }
141
141
  export function hasDiff<T>(o1: T, o2: T, keys?: string[], version?: string): boolean {
142
142
  const diff = makeDiff(o1, o2, keys, version)
@@ -160,107 +160,106 @@ export function goBack<T>(
160
160
  }
161
161
 
162
162
  export function notIn(s1: string[], s2: string[]): string[] {
163
- const r = [];
163
+ const r = []
164
164
  for (const s of s2) {
165
165
  if (s1.indexOf(s) < 0) {
166
- r.push(s);
166
+ r.push(s)
167
167
  }
168
168
  }
169
- return r;
169
+ return r
170
170
  }
171
171
 
172
172
  export function equal(obj1: any, obj2: any): boolean {
173
173
  if (obj1 == null && obj2 == null) {
174
- return true;
174
+ return true
175
175
  }
176
176
  if (obj1 == null || obj2 == null) {
177
- return false;
177
+ return false
178
178
  }
179
- if ((typeof obj1) !== (typeof obj2)) {
180
- return false;
179
+ if (typeof obj1 !== typeof obj2) {
180
+ return false
181
181
  }
182
- if (typeof obj1 !== 'object') {
183
- return obj1 === obj2;
182
+ if (typeof obj1 !== "object") {
183
+ return obj1 === obj2
184
184
  }
185
185
  if (obj1 instanceof Date) {
186
186
  if (!(obj2 instanceof Date)) {
187
- return false;
187
+ return false
188
188
  }
189
- return (obj1.getTime() === obj2.getTime());
189
+ return obj1.getTime() === obj2.getTime()
190
190
  }
191
- if ((Array.isArray(obj1) && !Array.isArray(obj2))
192
- || (!Array.isArray(obj1) && Array.isArray(obj2))) {
193
- return false;
191
+ if ((Array.isArray(obj1) && !Array.isArray(obj2)) || (!Array.isArray(obj1) && Array.isArray(obj2))) {
192
+ return false
194
193
  }
195
194
  if (!Array.isArray(obj1) && !Array.isArray(obj2)) {
196
- const key1s = Object.keys(obj1);
197
- const key2s = Object.keys(obj2);
195
+ const key1s = Object.keys(obj1)
196
+ const key2s = Object.keys(obj2)
198
197
  if (key1s.length !== key2s.length) {
199
- return false;
198
+ return false
200
199
  }
201
200
  for (const k of key1s) {
202
- const v = obj1[k];
203
- if (typeof v !== 'object') {
201
+ const v = obj1[k]
202
+ if (typeof v !== "object") {
204
203
  if (v !== obj2[k]) {
205
- return false;
204
+ return false
206
205
  }
207
206
  } else {
208
- const e = equal(v, obj2[k]);
207
+ const e = equal(v, obj2[k])
209
208
  if (e === false) {
210
- return false;
209
+ return false
211
210
  }
212
211
  }
213
212
  }
214
- return true;
213
+ return true
215
214
  }
216
- return equalArrays(obj1, obj2);
215
+ return equalArrays(obj1, obj2)
217
216
  }
218
217
 
219
218
  export function equalArrays<T>(ar1: T[], ar2: T[]): boolean {
220
219
  if (ar1 == null && ar2 == null) {
221
- return true;
220
+ return true
222
221
  }
223
222
  if (ar1 == null || ar2 == null) {
224
- return false;
223
+ return false
225
224
  }
226
225
  if (ar1.length !== ar2.length) {
227
- return false;
226
+ return false
228
227
  }
229
228
  for (let i = 0; i < ar1.length; i++) {
230
- const e = equal(ar1[i], ar2[i]);
229
+ const e = equal(ar1[i], ar2[i])
231
230
  if (e === false) {
232
- return false;
231
+ return false
233
232
  }
234
233
  }
235
- return true;
234
+ return true
236
235
  }
237
236
 
238
237
  export function getArray<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): T[] {
239
- const arrs = [];
238
+ const arrs = []
240
239
  if (list) {
241
240
  for (const obj of list) {
242
241
  if ((obj as any)[name] === v) {
243
- arrs.push(obj);
242
+ arrs.push(obj)
244
243
  }
245
244
  }
246
245
  }
247
- return arrs;
246
+ return arrs
248
247
  }
249
248
  export function getDiffArray<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): T[] {
250
- const arrs = [];
249
+ const arrs = []
251
250
  if (list) {
252
251
  for (const obj of list) {
253
252
  if ((obj as any)[name] !== true) {
254
- arrs.push(obj);
253
+ arrs.push(obj)
255
254
  }
256
255
  }
257
256
  }
258
- return arrs;
257
+ return arrs
259
258
  }
260
259
  export function setAll<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): void {
261
260
  if (list) {
262
261
  for (const obj of list) {
263
- (obj as any)[name] = v;
262
+ ;(obj as any)[name] = v
264
263
  }
265
264
  }
266
265
  }
@@ -268,9 +267,9 @@ export function equalAll<T>(list: T[] | undefined | null, name: string, v: boole
268
267
  if (list) {
269
268
  for (const obj of list) {
270
269
  if ((obj as any)[name] !== v) {
271
- return false;
270
+ return false
272
271
  }
273
272
  }
274
273
  }
275
- return true;
274
+ return true
276
275
  }
package/src/route.ts CHANGED
@@ -1,91 +1,91 @@
1
- import { Filter } from "./core";
2
- import * as qs from "query-string";
1
+ import * as qs from "query-string"
2
+ import { Filter } from "./search"
3
3
 
4
4
  export function buildFromUrl<S extends Filter>(modelT?: S): S {
5
- return buildParameters<S>(window.location.search, modelT);
5
+ return buildParameters<S>(window.location.search, modelT)
6
6
  }
7
7
  export function buildParameters<T>(url: string, model?: T): T {
8
- let urlSearch = url;
9
- const i = urlSearch.indexOf("?");
8
+ let urlSearch = url
9
+ const i = urlSearch.indexOf("?")
10
10
  if (i >= 0) {
11
- urlSearch = url.substring(i + 1);
11
+ urlSearch = url.substring(i + 1)
12
12
  }
13
13
  try {
14
- const parsed: any = convertToObject<T>(qs.parse(urlSearch), model);
15
- return parsed;
14
+ const parsed: any = convertToObject<T>(qs.parse(urlSearch), model)
15
+ return parsed
16
16
  } catch (error) {
17
- console.log(error);
18
- throw error;
17
+ console.log(error)
18
+ throw error
19
19
  }
20
20
  }
21
21
 
22
22
  export function convertToObject<T>(input: any, model?: T): T {
23
- if (model){
24
- return parseToModel(input, model);
23
+ if (model) {
24
+ return parseToModel(input, model)
25
25
  }
26
- const output: any = {};
26
+ const output: any = {}
27
27
 
28
28
  for (let key in input) {
29
- const value = input[key];
30
- const keys = key.split(".");
29
+ const value = input[key]
30
+ const keys = key.split(".")
31
31
 
32
- let currentObj: any = output;
32
+ let currentObj: any = output
33
33
  for (let i = 0; i < keys.length; i++) {
34
- const currentKey = keys[i];
34
+ const currentKey = keys[i]
35
35
 
36
36
  if (!currentObj[currentKey]) {
37
37
  if (i === keys.length - 1) {
38
- currentObj[currentKey] = parseValue(value);
38
+ currentObj[currentKey] = parseValue(value)
39
39
  } else {
40
- currentObj[currentKey] = {};
40
+ currentObj[currentKey] = {}
41
41
  }
42
42
  }
43
43
 
44
- currentObj = currentObj[currentKey];
44
+ currentObj = currentObj[currentKey]
45
45
  }
46
46
  }
47
47
 
48
- return output as T;
48
+ return output as T
49
49
  }
50
50
 
51
51
  function parseToModel(dest: any, src: any) {
52
- if (typeof dest !== 'object' || typeof src !== 'object') {
53
- return dest;
52
+ if (typeof dest !== "object" || typeof src !== "object") {
53
+ return dest
54
54
  }
55
55
  for (let key in src) {
56
- if (!Object.hasOwn(dest, key)) continue;
56
+ if (!Object.hasOwn(dest, key)) continue
57
57
  if (src.hasOwnProperty(key)) {
58
58
  if (src[key] && src[key].constructor === Object) {
59
59
  if (!dest[key] || dest[key].constructor !== Object) {
60
- dest[key] = {};
60
+ dest[key] = {}
61
61
  }
62
- parseToModel(dest[key], src[key]);
62
+ parseToModel(dest[key], src[key])
63
63
  } else if (src[key] instanceof Date) {
64
- dest[key] = new Date(dest[key]);
65
- } else if (typeof src[key] === 'boolean') {
66
- if (dest[key].length >0){
67
- dest[key] = new Boolean(dest[key]);
64
+ dest[key] = new Date(dest[key])
65
+ } else if (typeof src[key] === "boolean") {
66
+ if (dest[key].length > 0) {
67
+ dest[key] = new Boolean(dest[key])
68
68
  }
69
- } else if (typeof src[key] === 'number') {
70
- if ( typeof dest[key] === 'string' && dest[key].indexOf(".") !== -1){
71
- dest[key] = parseFloat(dest[key]);
72
- } else{
73
- dest[key] = parseInt(dest[key], 10);
69
+ } else if (typeof src[key] === "number") {
70
+ if (typeof dest[key] === "string" && dest[key].indexOf(".") !== -1) {
71
+ dest[key] = parseFloat(dest[key])
72
+ } else {
73
+ dest[key] = parseInt(dest[key], 10)
74
74
  }
75
- } else if (typeof src[key] === 'string') {
75
+ } else if (typeof src[key] === "string") {
76
76
  if (dest[key]) {
77
- dest[key] = dest[key].toString();
77
+ dest[key] = dest[key].toString()
78
78
  }
79
79
  }
80
80
  }
81
81
  }
82
- return dest;
82
+ return dest
83
83
  }
84
84
 
85
85
  function parseValue(value: any): any {
86
86
  // Check if the value is a string representing a number and parse it to a number
87
87
  if (!isNaN(value) && !isNaN(parseFloat(value))) {
88
- return parseFloat(value);
88
+ return parseFloat(value)
89
89
  }
90
- return value;
90
+ return value
91
91
  }