cogsbox-state 0.5.476 → 0.5.478

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/dist/utility.js CHANGED
@@ -1,51 +1,51 @@
1
- const u = (e) => e && typeof e == "object" && !Array.isArray(e) && e !== null, $ = (e) => typeof e == "function", y = (e) => Array.isArray(e), d = (e, n, i = {}, r = []) => {
1
+ const u = (e) => e && typeof e == "object" && !Array.isArray(e) && e !== null, $ = (e) => typeof e == "function", a = (e) => Array.isArray(e), g = (e, n, i = {}, r = []) => {
2
2
  if (u(e) && u(n)) {
3
- const t = Object.keys(e), l = Object.keys(n);
4
- if (t.length !== l.length)
3
+ const l = Object.keys(e), t = Object.keys(n);
4
+ if (l.length !== t.length)
5
5
  return !1;
6
- for (let s of t) {
7
- const o = e[s], f = n[s];
8
- if (!(s in e) || !(s in n))
6
+ for (let o of l) {
7
+ const s = e[o], f = n[o];
8
+ if (!(o in e) || !(o in n))
9
9
  return !1;
10
- const c = [...r, s];
11
- if (!d(o, f, i, c))
10
+ const c = [...r, o];
11
+ if (!g(s, f, i, c))
12
12
  return !1;
13
13
  }
14
14
  return !0;
15
- } else if (y(e) && y(n)) {
15
+ } else if (a(e) && a(n)) {
16
16
  if (e.length !== n.length)
17
17
  return !1;
18
- for (let t = 0; t < e.length; t++)
19
- if (!d(e[t], n[t], i, [
18
+ for (let l = 0; l < e.length; l++)
19
+ if (!g(e[l], n[l], i, [
20
20
  ...r,
21
- t.toString()
21
+ l.toString()
22
22
  ]))
23
23
  return !1;
24
24
  return !0;
25
25
  } else
26
26
  return e === n || Number.isNaN(e) && Number.isNaN(n);
27
27
  };
28
- function g(e, n, i) {
28
+ function d(e, n, i) {
29
29
  if (!e || e.length === 0) return i;
30
- const r = e[0], t = e.slice(1);
30
+ const r = e[0], l = e.slice(1);
31
31
  if (Array.isArray(n)) {
32
- const l = Number(r);
33
- if (!isNaN(l) && l >= 0 && l < n.length)
32
+ const t = Number(r);
33
+ if (!isNaN(t) && t >= 0 && t < n.length)
34
34
  return [
35
- ...n.slice(0, l),
36
- g(t, n[l], i),
37
- ...n.slice(l + 1)
35
+ ...n.slice(0, t),
36
+ d(l, n[t], i),
37
+ ...n.slice(t + 1)
38
38
  ];
39
39
  throw console.log("errorstate", n, e), new Error(
40
- `Invalid array index "${l}" in path "${e.join(".")}".`
40
+ `Invalid array index "${t}" in path "${e.join(".")}".`
41
41
  );
42
42
  } else if (typeof n == "object" && n !== null) {
43
43
  if (r && r in n)
44
44
  return {
45
45
  ...n,
46
- [r]: g(t, n[r], i)
46
+ [r]: d(l, n[r], i)
47
47
  };
48
- throw console.log("Invalid property", r, t, e), new Error(
48
+ throw console.log("Invalid property", r, l, e), new Error(
49
49
  `Invalid property "${r}" in path "${e.join(".")}".`
50
50
  );
51
51
  } else
@@ -53,29 +53,29 @@ function g(e, n, i) {
53
53
  `Cannot update nested property at path "${e.join(".")}". The path does not exist.`
54
54
  );
55
55
  }
56
- function p(e, n) {
56
+ function h(e, n) {
57
57
  if (!e || e.length === 0) return n;
58
58
  const i = e[0], r = e.slice(1);
59
59
  if (Array.isArray(n)) {
60
- const t = Number(i);
61
- if (!isNaN(t) && t >= 0 && t < n.length)
62
- return r.length === 0 ? [...n.slice(0, t), ...n.slice(t + 1)] : [
63
- ...n.slice(0, t),
64
- p(r, n[t]),
65
- ...n.slice(t + 1)
60
+ const l = Number(i);
61
+ if (!isNaN(l) && l >= 0 && l < n.length)
62
+ return r.length === 0 ? [...n.slice(0, l), ...n.slice(l + 1)] : [
63
+ ...n.slice(0, l),
64
+ h(r, n[l]),
65
+ ...n.slice(l + 1)
66
66
  ];
67
67
  throw new Error(
68
- `Invalid array index "${t}" in path "${e.join(".")}".`
68
+ `Invalid array index "${l}" in path "${e.join(".")}".`
69
69
  );
70
70
  } else if (typeof n == "object" && n !== null)
71
71
  if (r.length === 0) {
72
- const { [i]: t, ...l } = n;
73
- return l;
72
+ const { [i]: l, ...t } = n;
73
+ return t;
74
74
  } else {
75
75
  if (i in n)
76
76
  return {
77
77
  ...n,
78
- [i]: p(r, n[i])
78
+ [i]: h(r, n[i])
79
79
  };
80
80
  throw new Error(
81
81
  `Invalid property "${i}" in path "${e.join(".")}".`
@@ -86,7 +86,7 @@ function p(e, n) {
86
86
  `Cannot delete nested property at path "${e.join(".")}". The path does not exist.`
87
87
  );
88
88
  }
89
- function a(e, n, i = "") {
89
+ function y(e, n, i = "") {
90
90
  let r = [];
91
91
  if (typeof e == "function" && typeof n == "function")
92
92
  return r;
@@ -96,10 +96,10 @@ function a(e, n, i = "") {
96
96
  return e !== n ? [i] : r;
97
97
  if (Array.isArray(e) && Array.isArray(n)) {
98
98
  e.length !== n.length && r.push(`${i}`);
99
- const o = Math.min(e.length, n.length);
100
- for (let f = 0; f < o; f++)
99
+ const s = Math.min(e.length, n.length);
100
+ for (let f = 0; f < s; f++)
101
101
  e[f] !== n[f] && (r = r.concat(
102
- a(
102
+ y(
103
103
  e[f],
104
104
  n[f],
105
105
  i ? `${i}.${f}` : `${f}`
@@ -107,16 +107,16 @@ function a(e, n, i = "") {
107
107
  ));
108
108
  if (e.length !== n.length) {
109
109
  const f = e.length > n.length ? e : n;
110
- for (let c = o; c < f.length; c++)
110
+ for (let c = s; c < f.length; c++)
111
111
  r.push(i ? `${i}.${c}` : `${c}`);
112
112
  }
113
113
  return r;
114
114
  }
115
- const t = Object.keys(e), l = Object.keys(n);
116
- return Array.from(/* @__PURE__ */ new Set([...t, ...l])).forEach((o) => {
117
- const f = i ? `${i}.${o}` : o;
115
+ const l = Object.keys(e), t = Object.keys(n);
116
+ return Array.from(/* @__PURE__ */ new Set([...l, ...t])).forEach((s) => {
117
+ const f = i ? `${i}.${s}` : s;
118
118
  r = r.concat(
119
- a(e[o], n[o], f)
119
+ y(e[s], n[s], f)
120
120
  );
121
121
  }), r;
122
122
  }
@@ -127,67 +127,57 @@ function A(e, n) {
127
127
  }), i;
128
128
  }
129
129
  function w(e, n) {
130
- return a(e, n).map(
130
+ return y(e, n).map(
131
131
  (r) => r.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
132
132
  );
133
133
  }
134
- function h(e, n, i = "") {
134
+ function p(e, n, i = "") {
135
135
  let r = [];
136
136
  if (e == null || n === null || n === void 0)
137
137
  return r;
138
138
  if (Array.isArray(e) && Array.isArray(n))
139
139
  e.length !== n.length && r.push(i);
140
140
  else if (typeof e == "object" && typeof n == "object") {
141
- const t = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(n)]);
142
- for (const l of t) {
143
- const s = i ? `${i}.${l}` : l;
144
- (Array.isArray(e[l]) || Array.isArray(n[l])) && (r = r.concat(
145
- h(e[l], n[l], s)
141
+ const l = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(n)]);
142
+ for (const t of l) {
143
+ const o = i ? `${i}.${t}` : t;
144
+ (Array.isArray(e[t]) || Array.isArray(n[t])) && (r = r.concat(
145
+ p(e[t], n[t], o)
146
146
  ));
147
147
  }
148
148
  }
149
149
  return r;
150
150
  }
151
- function m(e, n) {
152
- return h(e, n).map(
151
+ function v(e, n) {
152
+ return p(e, n).map(
153
153
  (r) => r.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
154
154
  );
155
155
  }
156
156
  function N(e, n) {
157
157
  let i = null;
158
- const r = (...t) => {
159
- i && clearTimeout(i), i = setTimeout(() => e(...t), n);
158
+ const r = (...l) => {
159
+ i && clearTimeout(i), i = setTimeout(() => e(...l), n);
160
160
  };
161
161
  return r.cancel = () => {
162
162
  i && (clearTimeout(i), i = null);
163
163
  }, r;
164
164
  }
165
- function O(e) {
166
- const n = (l) => Object.values(l).some(
167
- (s) => s?.hasOwnProperty("initialState")
168
- );
169
- let i = {};
170
- const r = (l) => {
171
- const s = {};
172
- return Object.entries(l).forEach(([o, f]) => {
173
- f?.initialState ? (i = { ...i ?? {}, [o]: f }, s[o] = f.initialState) : s[o] = f;
174
- }), s;
175
- };
176
- return [n(e) ? r(e) : e, i];
165
+ function m(e) {
166
+ return [e, {}];
177
167
  }
178
168
  export {
179
169
  N as debounce,
180
170
  A as deepMerge,
181
- p as deleteNestedProperty,
182
- h as getArrayLengthDifferences,
183
- m as getArrayLengthDifferencesArray,
184
- a as getDifferences,
171
+ h as deleteNestedProperty,
172
+ p as getArrayLengthDifferences,
173
+ v as getArrayLengthDifferencesArray,
174
+ y as getDifferences,
185
175
  w as getDifferencesArray,
186
- y as isArray,
187
- d as isDeepEqual,
176
+ a as isArray,
177
+ g as isDeepEqual,
188
178
  $ as isFunction,
189
179
  u as isObject,
190
- O as transformStateFunc,
191
- g as updateNestedProperty
180
+ m as transformStateFunc,
181
+ d as updateNestedProperty
192
182
  };
193
183
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","sources":["../src/utility.ts"],"sourcesContent":["import type { TransformedStateType, CogsInitialState } from './CogsState';\r\n\r\nexport const isObject = (item: any): item is Record<string, any> => {\r\n return (\r\n item && typeof item === 'object' && !Array.isArray(item) && item !== null\r\n );\r\n};\r\nexport type GenericObject = Record<string, any>;\r\n\r\nexport const isFunction = <TStateObject extends unknown>(\r\n arg: any\r\n): arg is (prev: TStateObject) => TStateObject => typeof arg === 'function';\r\n\r\nexport const isArray = (item: any): item is Array<any> => {\r\n return Array.isArray(item);\r\n};\r\nexport const isDeepEqual = (\r\n object1?: Record<string, any>,\r\n object2?: Record<string, any>,\r\n opts: { get?: () => void } = {},\r\n currentPath: string[] = []\r\n): boolean => {\r\n if (isObject(object1) && isObject(object2)) {\r\n const objKeys1 = Object.keys(object1);\r\n const objKeys2 = Object.keys(object2);\r\n\r\n if (objKeys1.length !== objKeys2.length) {\r\n // console.log(\"not equal\", objKeys1, objKeys2);\r\n return false;\r\n }\r\n\r\n for (let key of objKeys1) {\r\n const value1 = object1[key];\r\n const value2 = object2[key];\r\n\r\n // Check if the key exists in both objects\r\n if (!(key in object1) || !(key in object2)) {\r\n // console.log(\"not equal\", key);\r\n return false;\r\n }\r\n\r\n const newPath = [...currentPath, key];\r\n\r\n // If current path is in ignoreArray, continue to the next key\r\n\r\n if (!isDeepEqual(value1, value2, opts, newPath)) {\r\n // console.log(\"not equal\", value1, value2);\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (isArray(object1) && isArray(object2)) {\r\n if (object1.length !== object2.length) {\r\n // console.log(\"not equal\", object1);\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < object1.length; i++) {\r\n if (\r\n !isDeepEqual(object1[i], object2[i], opts, [\r\n ...currentPath,\r\n i.toString(),\r\n ])\r\n ) {\r\n // console.log(\"not equal\", object1[i]);\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else {\r\n return (\r\n object1 === object2 || (Number.isNaN(object1) && Number.isNaN(object2))\r\n );\r\n }\r\n};\r\n\r\nexport function updateNestedProperty(\r\n path: string[],\r\n state: any,\r\n update: any\r\n): any {\r\n if (!path || path.length === 0) return update;\r\n const head = path[0];\r\n const tail = path.slice(1);\r\n\r\n if (Array.isArray(state)) {\r\n const index = Number(head);\r\n\r\n if (!isNaN(index) && index >= 0 && index < state.length) {\r\n return [\r\n ...state.slice(0, index),\r\n updateNestedProperty(tail, state[index], update),\r\n ...state.slice(index + 1),\r\n ];\r\n } else {\r\n console.log('errorstate', state, path);\r\n throw new Error(\r\n `Invalid array index \"${index}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else if (typeof state === 'object' && state !== null) {\r\n if (head && head in state) {\r\n return {\r\n ...state,\r\n [head!]: updateNestedProperty(tail, state[head!], update),\r\n };\r\n } else {\r\n console.log(`Invalid property`, head, tail, path);\r\n throw new Error(\r\n `Invalid property \"${head}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot update nested property at path \"${path.join('.')}\". The path does not exist.`\r\n );\r\n }\r\n}\r\n\r\nexport function deleteNestedProperty(path: string[], state: any): any {\r\n if (!path || path.length === 0) return state;\r\n const head = path[0] as string;\r\n const tail = path.slice(1);\r\n\r\n if (Array.isArray(state)) {\r\n const index = Number(head);\r\n\r\n if (!isNaN(index) && index >= 0 && index < state.length) {\r\n if (tail.length === 0) {\r\n // Remove the item at the index\r\n return [...state.slice(0, index), ...state.slice(index + 1)];\r\n } else {\r\n return [\r\n ...state.slice(0, index),\r\n deleteNestedProperty(tail, state[index]),\r\n ...state.slice(index + 1),\r\n ];\r\n }\r\n } else {\r\n throw new Error(\r\n `Invalid array index \"${index}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else if (typeof state === 'object' && state !== null) {\r\n if (tail.length === 0) {\r\n // Delete the property and return the new object\r\n const { [head]: _, ...rest } = state;\r\n return rest;\r\n } else if (head in state) {\r\n return {\r\n ...state,\r\n [head]: deleteNestedProperty(tail, state[head]),\r\n };\r\n } else {\r\n throw new Error(\r\n `Invalid property \"${head}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot delete nested property at path \"${path.join('.')}\". The path does not exist.`\r\n );\r\n }\r\n}\r\n\r\ntype DifferencePaths = string[];\r\n\r\nexport function getDifferences(\r\n obj1: any,\r\n obj2: any,\r\n currentPath: string = ''\r\n): DifferencePaths {\r\n let differences: DifferencePaths = [];\r\n // Handling null and undefined cases\r\n if (typeof obj1 === 'function' && typeof obj2 === 'function') {\r\n return differences;\r\n }\r\n if (\r\n obj1 === null ||\r\n obj1 === undefined ||\r\n obj2 === null ||\r\n obj2 === undefined\r\n ) {\r\n if (obj1 !== obj2) {\r\n // console.log(obj1, obj2);\r\n return [currentPath];\r\n }\r\n return differences;\r\n }\r\n\r\n // Handling primitive types\r\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object') {\r\n if (obj1 !== obj2) {\r\n return [currentPath];\r\n }\r\n return differences;\r\n }\r\n\r\n // Handling arrays\r\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\r\n // Handle changes in length directly\r\n if (obj1.length !== obj2.length) {\r\n differences.push(`${currentPath}`);\r\n }\r\n\r\n // Use the shorter length for comparison to detect shifts or changes\r\n const commonLength = Math.min(obj1.length, obj2.length);\r\n for (let i = 0; i < commonLength; i++) {\r\n if (obj1[i] !== obj2[i]) {\r\n differences = differences.concat(\r\n getDifferences(\r\n obj1[i],\r\n obj2[i],\r\n currentPath ? `${currentPath}.${i}` : `${i}`\r\n )\r\n );\r\n }\r\n }\r\n\r\n // If an array is shorter post-cut, the remaining items in the longer array are implicitly shifted/deleted\r\n if (obj1.length !== obj2.length) {\r\n const longerArrayPath = obj1.length > obj2.length ? obj1 : obj2;\r\n for (let i = commonLength; i < longerArrayPath.length; i++) {\r\n differences.push(currentPath ? `${currentPath}.${i}` : `${i}`);\r\n }\r\n }\r\n return differences;\r\n }\r\n // Handling objects\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n const allKeys = Array.from(new Set([...keys1, ...keys2]));\r\n\r\n allKeys.forEach((key) => {\r\n const newPath = currentPath ? `${currentPath}.${key}` : key;\r\n differences = differences.concat(\r\n getDifferences(obj1[key], obj2[key], newPath)\r\n );\r\n });\r\n return differences;\r\n}\r\nexport function deepMerge(target: any, source: any): any {\r\n const output = { ...target };\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n } else {\r\n output[key] = deepMerge(target[key], source[key]);\r\n }\r\n } else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\r\n\r\nexport function getDifferencesArray(obj1: any, obj2: any) {\r\n const convertedDiff = getDifferences(obj1, obj2).map((string) =>\r\n string\r\n .replace(/\\[(\\w+)\\]/g, '.$1')\r\n .split('.')\r\n .filter(Boolean)\r\n );\r\n\r\n return convertedDiff;\r\n}\r\nexport function getArrayLengthDifferences(\r\n obj1: any,\r\n obj2: any,\r\n currentPath: string = ''\r\n): string[] {\r\n let differences: string[] = [];\r\n\r\n // Check for null or undefined in entire objects\r\n if (\r\n obj1 === null ||\r\n obj1 === undefined ||\r\n obj2 === null ||\r\n obj2 === undefined\r\n ) {\r\n return differences;\r\n }\r\n\r\n // Check and compare only array lengths\r\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\r\n if (obj1.length !== obj2.length) {\r\n differences.push(currentPath);\r\n }\r\n } else if (typeof obj1 === 'object' && typeof obj2 === 'object') {\r\n // Recursively check for nested arrays\r\n const keys = new Set([...Object.keys(obj1), ...Object.keys(obj2)]);\r\n for (const key of keys) {\r\n const newPath = currentPath ? `${currentPath}.${key}` : key;\r\n\r\n // Perform recursive checks only for array fields\r\n if (Array.isArray(obj1[key]) || Array.isArray(obj2[key])) {\r\n differences = differences.concat(\r\n getArrayLengthDifferences(obj1[key], obj2[key], newPath)\r\n );\r\n }\r\n }\r\n }\r\n\r\n return differences;\r\n}\r\n\r\nexport function getArrayLengthDifferencesArray(obj1: any, obj2: any) {\r\n const convertedDiff = getArrayLengthDifferences(obj1, obj2).map((string) =>\r\n string\r\n .replace(/\\[(\\w+)\\]/g, '.$1')\r\n .split('.')\r\n .filter(Boolean)\r\n );\r\n\r\n return convertedDiff;\r\n}\r\n\r\nexport function debounce<F extends (...args: any[]) => any>(\r\n func: (...args: any[]) => any,\r\n wait: number\r\n): F & { cancel: () => void } {\r\n let timeoutID: NodeJS.Timeout | null = null;\r\n\r\n const debounced: any = (...args: Parameters<F>) => {\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n }\r\n\r\n timeoutID = setTimeout(() => func(...args), wait);\r\n };\r\n\r\n debounced.cancel = () => {\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n timeoutID = null;\r\n }\r\n };\r\n\r\n return debounced as DebouncedFunction<F>;\r\n}\r\nexport type DebouncedFunction<F extends (...args: any[]) => any> = F & {\r\n cancel: () => void;\r\n};\r\n\r\nexport function transformStateFunc<State extends unknown>(initialState: State) {\r\n const isInitialStateType = (state: any): state is CogsInitialState<State> => {\r\n return Object.values(state).some((value) =>\r\n value?.hasOwnProperty('initialState')\r\n );\r\n };\r\n let initalOptions: GenericObject = {};\r\n const transformInitialState = (\r\n state: CogsInitialState<State>\r\n ): GenericObject | GenericObject[] => {\r\n const transformedState: GenericObject | GenericObject[] = {};\r\n Object.entries(state).forEach(([key, value]) => {\r\n if (value?.initialState) {\r\n initalOptions = { ...(initalOptions ?? {}), [key]: value };\r\n\r\n transformedState[key] = value.initialState;\r\n } else {\r\n transformedState[key] = value;\r\n }\r\n });\r\n\r\n return transformedState;\r\n };\r\n\r\n const transformedInitialState = isInitialStateType(initialState)\r\n ? (transformInitialState(initialState) as State)\r\n : (initialState as State);\r\n\r\n return [transformedInitialState, initalOptions] as [\r\n TransformedStateType<State>,\r\n GenericObject,\r\n ];\r\n}\r\n"],"names":["isObject","item","isFunction","arg","isArray","isDeepEqual","object1","object2","opts","currentPath","objKeys1","objKeys2","key","value1","value2","newPath","i","updateNestedProperty","path","state","update","head","tail","index","deleteNestedProperty","_","rest","getDifferences","obj1","obj2","differences","commonLength","longerArrayPath","keys1","keys2","deepMerge","target","source","output","getDifferencesArray","string","getArrayLengthDifferences","keys","getArrayLengthDifferencesArray","debounce","func","wait","timeoutID","debounced","args","transformStateFunc","initialState","isInitialStateType","value","initalOptions","transformInitialState","transformedState"],"mappings":"AAEO,MAAMA,IAAW,CAACC,MAErBA,KAAQ,OAAOA,KAAS,YAAY,CAAC,MAAM,QAAQA,CAAI,KAAKA,MAAS,MAK5DC,IAAa,CACxBC,MACgD,OAAOA,KAAQ,YAEpDC,IAAU,CAACH,MACf,MAAM,QAAQA,CAAI,GAEdI,IAAc,CACzBC,GACAC,GACAC,IAA6B,CAAA,GAC7BC,IAAwB,OACZ;AACZ,MAAIT,EAASM,CAAO,KAAKN,EAASO,CAAO,GAAG;AAC1C,UAAMG,IAAW,OAAO,KAAKJ,CAAO,GAC9BK,IAAW,OAAO,KAAKJ,CAAO;AAEpC,QAAIG,EAAS,WAAWC,EAAS;AAE/B,aAAO;AAGT,aAASC,KAAOF,GAAU;AACxB,YAAMG,IAASP,EAAQM,CAAG,GACpBE,IAASP,EAAQK,CAAG;AAG1B,UAAI,EAAEA,KAAON,MAAY,EAAEM,KAAOL;AAEhC,eAAO;AAGT,YAAMQ,IAAU,CAAC,GAAGN,GAAaG,CAAG;AAIpC,UAAI,CAACP,EAAYQ,GAAQC,GAAQN,GAAMO,CAAO;AAE5C,eAAO;AAAA,IAEX;AACA,WAAO;AAAA,EACT,WAAWX,EAAQE,CAAO,KAAKF,EAAQG,CAAO,GAAG;AAC/C,QAAID,EAAQ,WAAWC,EAAQ;AAE7B,aAAO;AAGT,aAASS,IAAI,GAAGA,IAAIV,EAAQ,QAAQU;AAClC,UACE,CAACX,EAAYC,EAAQU,CAAC,GAAGT,EAAQS,CAAC,GAAGR,GAAM;AAAA,QACzC,GAAGC;AAAA,QACHO,EAAE,SAAA;AAAA,MAAS,CACZ;AAGD,eAAO;AAGX,WAAO;AAAA,EACT;AACE,WACEV,MAAYC,KAAY,OAAO,MAAMD,CAAO,KAAK,OAAO,MAAMC,CAAO;AAG3E;AAEO,SAASU,EACdC,GACAC,GACAC,GACK;AACL,MAAI,CAACF,KAAQA,EAAK,WAAW,EAAG,QAAOE;AACvC,QAAMC,IAAOH,EAAK,CAAC,GACbI,IAAOJ,EAAK,MAAM,CAAC;AAEzB,MAAI,MAAM,QAAQC,CAAK,GAAG;AACxB,UAAMI,IAAQ,OAAOF,CAAI;AAEzB,QAAI,CAAC,MAAME,CAAK,KAAKA,KAAS,KAAKA,IAAQJ,EAAM;AAC/C,aAAO;AAAA,QACL,GAAGA,EAAM,MAAM,GAAGI,CAAK;AAAA,QACvBN,EAAqBK,GAAMH,EAAMI,CAAK,GAAGH,CAAM;AAAA,QAC/C,GAAGD,EAAM,MAAMI,IAAQ,CAAC;AAAA,MAAA;AAG1B,kBAAQ,IAAI,cAAcJ,GAAOD,CAAI,GAC/B,IAAI;AAAA,MACR,wBAAwBK,CAAK,cAAcL,EAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAAA,EAG/D,WAAW,OAAOC,KAAU,YAAYA,MAAU,MAAM;AACtD,QAAIE,KAAQA,KAAQF;AAClB,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,CAACE,CAAK,GAAGJ,EAAqBK,GAAMH,EAAME,CAAK,GAAGD,CAAM;AAAA,MAAA;AAG1D,kBAAQ,IAAI,oBAAoBC,GAAMC,GAAMJ,CAAI,GAC1C,IAAI;AAAA,MACR,qBAAqBG,CAAI,cAAcH,EAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAAA,EAG3D;AACE,UAAM,IAAI;AAAA,MACR,0CAA0CA,EAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAG9D;AAEO,SAASM,EAAqBN,GAAgBC,GAAiB;AACpE,MAAI,CAACD,KAAQA,EAAK,WAAW,EAAG,QAAOC;AACvC,QAAME,IAAOH,EAAK,CAAC,GACbI,IAAOJ,EAAK,MAAM,CAAC;AAEzB,MAAI,MAAM,QAAQC,CAAK,GAAG;AACxB,UAAMI,IAAQ,OAAOF,CAAI;AAEzB,QAAI,CAAC,MAAME,CAAK,KAAKA,KAAS,KAAKA,IAAQJ,EAAM;AAC/C,aAAIG,EAAK,WAAW,IAEX,CAAC,GAAGH,EAAM,MAAM,GAAGI,CAAK,GAAG,GAAGJ,EAAM,MAAMI,IAAQ,CAAC,CAAC,IAEpD;AAAA,QACL,GAAGJ,EAAM,MAAM,GAAGI,CAAK;AAAA,QACvBC,EAAqBF,GAAMH,EAAMI,CAAK,CAAC;AAAA,QACvC,GAAGJ,EAAM,MAAMI,IAAQ,CAAC;AAAA,MAAA;AAI5B,UAAM,IAAI;AAAA,MACR,wBAAwBA,CAAK,cAAcL,EAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAAA,EAG/D,WAAW,OAAOC,KAAU,YAAYA,MAAU;AAChD,QAAIG,EAAK,WAAW,GAAG;AAErB,YAAM,EAAE,CAACD,CAAI,GAAGI,GAAG,GAAGC,MAASP;AAC/B,aAAOO;AAAA,IACT,OAAA;AAAA,UAAWL,KAAQF;AACjB,eAAO;AAAA,UACL,GAAGA;AAAA,UACH,CAACE,CAAI,GAAGG,EAAqBF,GAAMH,EAAME,CAAI,CAAC;AAAA,QAAA;AAGhD,YAAM,IAAI;AAAA,QACR,qBAAqBA,CAAI,cAAcH,EAAK,KAAK,GAAG,CAAC;AAAA,MAAA;AAAA;AAAA;AAIzD,UAAM,IAAI;AAAA,MACR,0CAA0CA,EAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAG9D;AAIO,SAASS,EACdC,GACAC,GACApB,IAAsB,IACL;AACjB,MAAIqB,IAA+B,CAAA;AAEnC,MAAI,OAAOF,KAAS,cAAc,OAAOC,KAAS;AAChD,WAAOC;AAET,MACEF,KAAS,QAETC,MAAS,QACTA,MAAS;AAET,WAAID,MAASC,IAEJ,CAACpB,CAAW,IAEdqB;AAIT,MAAI,OAAOF,KAAS,YAAY,OAAOC,KAAS;AAC9C,WAAID,MAASC,IACJ,CAACpB,CAAW,IAEdqB;AAIT,MAAI,MAAM,QAAQF,CAAI,KAAK,MAAM,QAAQC,CAAI,GAAG;AAE9C,IAAID,EAAK,WAAWC,EAAK,UACvBC,EAAY,KAAK,GAAGrB,CAAW,EAAE;AAInC,UAAMsB,IAAe,KAAK,IAAIH,EAAK,QAAQC,EAAK,MAAM;AACtD,aAASb,IAAI,GAAGA,IAAIe,GAAcf;AAChC,MAAIY,EAAKZ,CAAC,MAAMa,EAAKb,CAAC,MACpBc,IAAcA,EAAY;AAAA,QACxBH;AAAA,UACEC,EAAKZ,CAAC;AAAA,UACNa,EAAKb,CAAC;AAAA,UACNP,IAAc,GAAGA,CAAW,IAAIO,CAAC,KAAK,GAAGA,CAAC;AAAA,QAAA;AAAA,MAC5C;AAMN,QAAIY,EAAK,WAAWC,EAAK,QAAQ;AAC/B,YAAMG,IAAkBJ,EAAK,SAASC,EAAK,SAASD,IAAOC;AAC3D,eAASb,IAAIe,GAAcf,IAAIgB,EAAgB,QAAQhB;AACrD,QAAAc,EAAY,KAAKrB,IAAc,GAAGA,CAAW,IAAIO,CAAC,KAAK,GAAGA,CAAC,EAAE;AAAA,IAEjE;AACA,WAAOc;AAAA,EACT;AAEA,QAAMG,IAAQ,OAAO,KAAKL,CAAI,GACxBM,IAAQ,OAAO,KAAKL,CAAI;AAG9B,SAFgB,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAGI,GAAO,GAAGC,CAAK,CAAC,CAAC,EAEhD,QAAQ,CAACtB,MAAQ;AACvB,UAAMG,IAAUN,IAAc,GAAGA,CAAW,IAAIG,CAAG,KAAKA;AACxD,IAAAkB,IAAcA,EAAY;AAAA,MACxBH,EAAeC,EAAKhB,CAAG,GAAGiB,EAAKjB,CAAG,GAAGG,CAAO;AAAA,IAAA;AAAA,EAEhD,CAAC,GACMe;AACT;AACO,SAASK,EAAUC,GAAaC,GAAkB;AACvD,QAAMC,IAAS,EAAE,GAAGF,EAAA;AACpB,SAAIpC,EAASoC,CAAM,KAAKpC,EAASqC,CAAM,KACrC,OAAO,KAAKA,CAAM,EAAE,QAAQ,CAACzB,MAAQ;AACnC,IAAIZ,EAASqC,EAAOzB,CAAG,CAAC,IAChBA,KAAOwB,IAGXE,EAAO1B,CAAG,IAAIuB,EAAUC,EAAOxB,CAAG,GAAGyB,EAAOzB,CAAG,CAAC,IAFhD,OAAO,OAAO0B,GAAQ,EAAE,CAAC1B,CAAG,GAAGyB,EAAOzB,CAAG,GAAG,IAK9C,OAAO,OAAO0B,GAAQ,EAAE,CAAC1B,CAAG,GAAGyB,EAAOzB,CAAG,GAAG;AAAA,EAEhD,CAAC,GAEI0B;AACT;AAEO,SAASC,EAAoBX,GAAWC,GAAW;AAQxD,SAPsBF,EAAeC,GAAMC,CAAI,EAAE;AAAA,IAAI,CAACW,MACpDA,EACG,QAAQ,cAAc,KAAK,EAC3B,MAAM,GAAG,EACT,OAAO,OAAO;AAAA,EAAA;AAIrB;AACO,SAASC,EACdb,GACAC,GACApB,IAAsB,IACZ;AACV,MAAIqB,IAAwB,CAAA;AAG5B,MACEF,KAAS,QAETC,MAAS,QACTA,MAAS;AAET,WAAOC;AAIT,MAAI,MAAM,QAAQF,CAAI,KAAK,MAAM,QAAQC,CAAI;AAC3C,IAAID,EAAK,WAAWC,EAAK,UACvBC,EAAY,KAAKrB,CAAW;AAAA,WAErB,OAAOmB,KAAS,YAAY,OAAOC,KAAS,UAAU;AAE/D,UAAMa,IAAO,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAKd,CAAI,GAAG,GAAG,OAAO,KAAKC,CAAI,CAAC,CAAC;AACjE,eAAWjB,KAAO8B,GAAM;AACtB,YAAM3B,IAAUN,IAAc,GAAGA,CAAW,IAAIG,CAAG,KAAKA;AAGxD,OAAI,MAAM,QAAQgB,EAAKhB,CAAG,CAAC,KAAK,MAAM,QAAQiB,EAAKjB,CAAG,CAAC,OACrDkB,IAAcA,EAAY;AAAA,QACxBW,EAA0Bb,EAAKhB,CAAG,GAAGiB,EAAKjB,CAAG,GAAGG,CAAO;AAAA,MAAA;AAAA,IAG7D;AAAA,EACF;AAEA,SAAOe;AACT;AAEO,SAASa,EAA+Bf,GAAWC,GAAW;AAQnE,SAPsBY,EAA0Bb,GAAMC,CAAI,EAAE;AAAA,IAAI,CAACW,MAC/DA,EACG,QAAQ,cAAc,KAAK,EAC3B,MAAM,GAAG,EACT,OAAO,OAAO;AAAA,EAAA;AAIrB;AAEO,SAASI,EACdC,GACAC,GAC4B;AAC5B,MAAIC,IAAmC;AAEvC,QAAMC,IAAiB,IAAIC,MAAwB;AACjD,IAAIF,KACF,aAAaA,CAAS,GAGxBA,IAAY,WAAW,MAAMF,EAAK,GAAGI,CAAI,GAAGH,CAAI;AAAA,EAClD;AAEA,SAAAE,EAAU,SAAS,MAAM;AACvB,IAAID,MACF,aAAaA,CAAS,GACtBA,IAAY;AAAA,EAEhB,GAEOC;AACT;AAKO,SAASE,EAA0CC,GAAqB;AAC7E,QAAMC,IAAqB,CAACjC,MACnB,OAAO,OAAOA,CAAK,EAAE;AAAA,IAAK,CAACkC,MAChCA,GAAO,eAAe,cAAc;AAAA,EAAA;AAGxC,MAAIC,IAA+B,CAAA;AACnC,QAAMC,IAAwB,CAC5BpC,MACoC;AACpC,UAAMqC,IAAoD,CAAA;AAC1D,kBAAO,QAAQrC,CAAK,EAAE,QAAQ,CAAC,CAACP,GAAKyC,CAAK,MAAM;AAC9C,MAAIA,GAAO,gBACTC,IAAgB,EAAE,GAAIA,KAAiB,CAAA,GAAK,CAAC1C,CAAG,GAAGyC,EAAA,GAEnDG,EAAiB5C,CAAG,IAAIyC,EAAM,gBAE9BG,EAAiB5C,CAAG,IAAIyC;AAAA,IAE5B,CAAC,GAEMG;AAAA,EACT;AAMA,SAAO,CAJyBJ,EAAmBD,CAAY,IAC1DI,EAAsBJ,CAAY,IAClCA,GAE4BG,CAAa;AAIhD;"}
1
+ {"version":3,"file":"utility.js","sources":["../src/utility.ts"],"sourcesContent":["export const isObject = (item: any): item is Record<string, any> => {\r\n return (\r\n item && typeof item === 'object' && !Array.isArray(item) && item !== null\r\n );\r\n};\r\nexport type GenericObject = Record<string, any>;\r\n\r\nexport const isFunction = <TStateObject extends unknown>(\r\n arg: any\r\n): arg is (prev: TStateObject) => TStateObject => typeof arg === 'function';\r\n\r\nexport const isArray = (item: any): item is Array<any> => {\r\n return Array.isArray(item);\r\n};\r\nexport const isDeepEqual = (\r\n object1?: Record<string, any>,\r\n object2?: Record<string, any>,\r\n opts: { get?: () => void } = {},\r\n currentPath: string[] = []\r\n): boolean => {\r\n if (isObject(object1) && isObject(object2)) {\r\n const objKeys1 = Object.keys(object1);\r\n const objKeys2 = Object.keys(object2);\r\n\r\n if (objKeys1.length !== objKeys2.length) {\r\n // console.log(\"not equal\", objKeys1, objKeys2);\r\n return false;\r\n }\r\n\r\n for (let key of objKeys1) {\r\n const value1 = object1[key];\r\n const value2 = object2[key];\r\n\r\n // Check if the key exists in both objects\r\n if (!(key in object1) || !(key in object2)) {\r\n // console.log(\"not equal\", key);\r\n return false;\r\n }\r\n\r\n const newPath = [...currentPath, key];\r\n\r\n // If current path is in ignoreArray, continue to the next key\r\n\r\n if (!isDeepEqual(value1, value2, opts, newPath)) {\r\n // console.log(\"not equal\", value1, value2);\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (isArray(object1) && isArray(object2)) {\r\n if (object1.length !== object2.length) {\r\n // console.log(\"not equal\", object1);\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < object1.length; i++) {\r\n if (\r\n !isDeepEqual(object1[i], object2[i], opts, [\r\n ...currentPath,\r\n i.toString(),\r\n ])\r\n ) {\r\n // console.log(\"not equal\", object1[i]);\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else {\r\n return (\r\n object1 === object2 || (Number.isNaN(object1) && Number.isNaN(object2))\r\n );\r\n }\r\n};\r\n\r\nexport function updateNestedProperty(\r\n path: string[],\r\n state: any,\r\n update: any\r\n): any {\r\n if (!path || path.length === 0) return update;\r\n const head = path[0];\r\n const tail = path.slice(1);\r\n\r\n if (Array.isArray(state)) {\r\n const index = Number(head);\r\n\r\n if (!isNaN(index) && index >= 0 && index < state.length) {\r\n return [\r\n ...state.slice(0, index),\r\n updateNestedProperty(tail, state[index], update),\r\n ...state.slice(index + 1),\r\n ];\r\n } else {\r\n console.log('errorstate', state, path);\r\n throw new Error(\r\n `Invalid array index \"${index}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else if (typeof state === 'object' && state !== null) {\r\n if (head && head in state) {\r\n return {\r\n ...state,\r\n [head!]: updateNestedProperty(tail, state[head!], update),\r\n };\r\n } else {\r\n console.log(`Invalid property`, head, tail, path);\r\n throw new Error(\r\n `Invalid property \"${head}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot update nested property at path \"${path.join('.')}\". The path does not exist.`\r\n );\r\n }\r\n}\r\n\r\nexport function deleteNestedProperty(path: string[], state: any): any {\r\n if (!path || path.length === 0) return state;\r\n const head = path[0] as string;\r\n const tail = path.slice(1);\r\n\r\n if (Array.isArray(state)) {\r\n const index = Number(head);\r\n\r\n if (!isNaN(index) && index >= 0 && index < state.length) {\r\n if (tail.length === 0) {\r\n // Remove the item at the index\r\n return [...state.slice(0, index), ...state.slice(index + 1)];\r\n } else {\r\n return [\r\n ...state.slice(0, index),\r\n deleteNestedProperty(tail, state[index]),\r\n ...state.slice(index + 1),\r\n ];\r\n }\r\n } else {\r\n throw new Error(\r\n `Invalid array index \"${index}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else if (typeof state === 'object' && state !== null) {\r\n if (tail.length === 0) {\r\n // Delete the property and return the new object\r\n const { [head]: _, ...rest } = state;\r\n return rest;\r\n } else if (head in state) {\r\n return {\r\n ...state,\r\n [head]: deleteNestedProperty(tail, state[head]),\r\n };\r\n } else {\r\n throw new Error(\r\n `Invalid property \"${head}\" in path \"${path.join('.')}\".`\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot delete nested property at path \"${path.join('.')}\". The path does not exist.`\r\n );\r\n }\r\n}\r\n\r\ntype DifferencePaths = string[];\r\n\r\nexport function getDifferences(\r\n obj1: any,\r\n obj2: any,\r\n currentPath: string = ''\r\n): DifferencePaths {\r\n let differences: DifferencePaths = [];\r\n // Handling null and undefined cases\r\n if (typeof obj1 === 'function' && typeof obj2 === 'function') {\r\n return differences;\r\n }\r\n if (\r\n obj1 === null ||\r\n obj1 === undefined ||\r\n obj2 === null ||\r\n obj2 === undefined\r\n ) {\r\n if (obj1 !== obj2) {\r\n // console.log(obj1, obj2);\r\n return [currentPath];\r\n }\r\n return differences;\r\n }\r\n\r\n // Handling primitive types\r\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object') {\r\n if (obj1 !== obj2) {\r\n return [currentPath];\r\n }\r\n return differences;\r\n }\r\n\r\n // Handling arrays\r\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\r\n // Handle changes in length directly\r\n if (obj1.length !== obj2.length) {\r\n differences.push(`${currentPath}`);\r\n }\r\n\r\n // Use the shorter length for comparison to detect shifts or changes\r\n const commonLength = Math.min(obj1.length, obj2.length);\r\n for (let i = 0; i < commonLength; i++) {\r\n if (obj1[i] !== obj2[i]) {\r\n differences = differences.concat(\r\n getDifferences(\r\n obj1[i],\r\n obj2[i],\r\n currentPath ? `${currentPath}.${i}` : `${i}`\r\n )\r\n );\r\n }\r\n }\r\n\r\n // If an array is shorter post-cut, the remaining items in the longer array are implicitly shifted/deleted\r\n if (obj1.length !== obj2.length) {\r\n const longerArrayPath = obj1.length > obj2.length ? obj1 : obj2;\r\n for (let i = commonLength; i < longerArrayPath.length; i++) {\r\n differences.push(currentPath ? `${currentPath}.${i}` : `${i}`);\r\n }\r\n }\r\n return differences;\r\n }\r\n // Handling objects\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n const allKeys = Array.from(new Set([...keys1, ...keys2]));\r\n\r\n allKeys.forEach((key) => {\r\n const newPath = currentPath ? `${currentPath}.${key}` : key;\r\n differences = differences.concat(\r\n getDifferences(obj1[key], obj2[key], newPath)\r\n );\r\n });\r\n return differences;\r\n}\r\nexport function deepMerge(target: any, source: any): any {\r\n const output = { ...target };\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n } else {\r\n output[key] = deepMerge(target[key], source[key]);\r\n }\r\n } else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\r\n\r\nexport function getDifferencesArray(obj1: any, obj2: any) {\r\n const convertedDiff = getDifferences(obj1, obj2).map((string) =>\r\n string\r\n .replace(/\\[(\\w+)\\]/g, '.$1')\r\n .split('.')\r\n .filter(Boolean)\r\n );\r\n\r\n return convertedDiff;\r\n}\r\nexport function getArrayLengthDifferences(\r\n obj1: any,\r\n obj2: any,\r\n currentPath: string = ''\r\n): string[] {\r\n let differences: string[] = [];\r\n\r\n // Check for null or undefined in entire objects\r\n if (\r\n obj1 === null ||\r\n obj1 === undefined ||\r\n obj2 === null ||\r\n obj2 === undefined\r\n ) {\r\n return differences;\r\n }\r\n\r\n // Check and compare only array lengths\r\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\r\n if (obj1.length !== obj2.length) {\r\n differences.push(currentPath);\r\n }\r\n } else if (typeof obj1 === 'object' && typeof obj2 === 'object') {\r\n // Recursively check for nested arrays\r\n const keys = new Set([...Object.keys(obj1), ...Object.keys(obj2)]);\r\n for (const key of keys) {\r\n const newPath = currentPath ? `${currentPath}.${key}` : key;\r\n\r\n // Perform recursive checks only for array fields\r\n if (Array.isArray(obj1[key]) || Array.isArray(obj2[key])) {\r\n differences = differences.concat(\r\n getArrayLengthDifferences(obj1[key], obj2[key], newPath)\r\n );\r\n }\r\n }\r\n }\r\n\r\n return differences;\r\n}\r\n\r\nexport function getArrayLengthDifferencesArray(obj1: any, obj2: any) {\r\n const convertedDiff = getArrayLengthDifferences(obj1, obj2).map((string) =>\r\n string\r\n .replace(/\\[(\\w+)\\]/g, '.$1')\r\n .split('.')\r\n .filter(Boolean)\r\n );\r\n\r\n return convertedDiff;\r\n}\r\n\r\nexport function debounce<F extends (...args: any[]) => any>(\r\n func: (...args: any[]) => any,\r\n wait: number\r\n): F & { cancel: () => void } {\r\n let timeoutID: NodeJS.Timeout | null = null;\r\n\r\n const debounced: any = (...args: Parameters<F>) => {\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n }\r\n\r\n timeoutID = setTimeout(() => func(...args), wait);\r\n };\r\n\r\n debounced.cancel = () => {\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n timeoutID = null;\r\n }\r\n };\r\n\r\n return debounced as DebouncedFunction<F>;\r\n}\r\nexport type DebouncedFunction<F extends (...args: any[]) => any> = F & {\r\n cancel: () => void;\r\n};\r\n\r\nexport function transformStateFunc<State extends unknown>(initialState: State) {\r\n return [initialState as State, {}] as [State, GenericObject];\r\n}\r\n"],"names":["isObject","item","isFunction","arg","isArray","isDeepEqual","object1","object2","opts","currentPath","objKeys1","objKeys2","key","value1","value2","newPath","i","updateNestedProperty","path","state","update","head","tail","index","deleteNestedProperty","_","rest","getDifferences","obj1","obj2","differences","commonLength","longerArrayPath","keys1","keys2","deepMerge","target","source","output","getDifferencesArray","string","getArrayLengthDifferences","keys","getArrayLengthDifferencesArray","debounce","func","wait","timeoutID","debounced","args","transformStateFunc","initialState"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-state",
3
- "version": "0.5.476",
3
+ "version": "0.5.478",
4
4
  "description": "React state management library with form controls and server sync",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -35,7 +35,7 @@
35
35
  "react-intersection-observer": "^9.16.0",
36
36
  "rollup-preserve-directives": "^1.1.3",
37
37
  "superjson": "^2.2.2",
38
- "uuid": "^9.0.1",
38
+ "uuid": "^11.0.0",
39
39
  "zustand": "^5.0.3"
40
40
  },
41
41
  "peerDependenciesMeta": {
@@ -58,7 +58,7 @@
58
58
  "@types/node": "^22.14.0",
59
59
  "@types/react": "^18.2.0",
60
60
  "@types/react-dom": "^18.2.0",
61
- "@types/uuid": "^9.0.7",
61
+ "@types/uuid": "^10.0.0",
62
62
  "@typescript-eslint/eslint-plugin": "^6.21.0",
63
63
  "@vitest/ui": "^3.2.4",
64
64
  "eslint": "^8.57.0",