cogsbox-state 0.5.5 → 0.5.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.
Files changed (48) hide show
  1. package/dist/CogsState.d.ts +30 -13
  2. package/dist/CogsState.jsx +544 -480
  3. package/dist/CogsState.jsx.map +1 -1
  4. package/dist/CogsStateClient.jsx +6 -6
  5. package/dist/CogsStateClient.jsx.map +1 -1
  6. package/dist/Functions.d.ts +3 -4
  7. package/dist/Functions.jsx +173 -128
  8. package/dist/Functions.jsx.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +21 -17
  11. package/dist/index.js.map +1 -1
  12. package/dist/node_modules/zustand/esm/react.js +1 -1
  13. package/dist/store.d.ts +19 -9
  14. package/dist/store.js +77 -60
  15. package/dist/store.js.map +1 -1
  16. package/dist/useValidateZodPath.d.ts +34 -0
  17. package/dist/useValidateZodPath.js +60 -0
  18. package/dist/useValidateZodPath.js.map +1 -0
  19. package/dist/utility.d.ts +6 -0
  20. package/dist/utility.js +90 -80
  21. package/dist/utility.js.map +1 -1
  22. package/package.json +68 -64
  23. package/dist/_virtual/_commonjsHelpers.js +0 -7
  24. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  25. package/dist/_virtual/index.js +0 -5
  26. package/dist/_virtual/index.js.map +0 -1
  27. package/dist/_virtual/jsx-runtime.jsx +0 -5
  28. package/dist/_virtual/jsx-runtime.jsx.map +0 -1
  29. package/dist/_virtual/react-jsx-runtime.jsx +0 -5
  30. package/dist/_virtual/react-jsx-runtime.jsx.map +0 -1
  31. package/dist/_virtual/react-jsx-runtime.production.jsx +0 -5
  32. package/dist/_virtual/react-jsx-runtime.production.jsx.map +0 -1
  33. package/dist/_virtual/react.js +0 -5
  34. package/dist/_virtual/react.js.map +0 -1
  35. package/dist/_virtual/react.production.js +0 -5
  36. package/dist/_virtual/react.production.js.map +0 -1
  37. package/dist/node_modules/react/cjs/react-jsx-runtime.jsx +0 -605
  38. package/dist/node_modules/react/cjs/react-jsx-runtime.jsx.map +0 -1
  39. package/dist/node_modules/react/cjs/react-jsx-runtime.production.jsx +0 -29
  40. package/dist/node_modules/react/cjs/react-jsx-runtime.production.jsx.map +0 -1
  41. package/dist/node_modules/react/cjs/react.js +0 -1274
  42. package/dist/node_modules/react/cjs/react.js.map +0 -1
  43. package/dist/node_modules/react/cjs/react.production.js +0 -209
  44. package/dist/node_modules/react/cjs/react.production.js.map +0 -1
  45. package/dist/node_modules/react/index.js +0 -12
  46. package/dist/node_modules/react/index.js.map +0 -1
  47. package/dist/node_modules/react/jsx-runtime.jsx +0 -9
  48. package/dist/node_modules/react/jsx-runtime.jsx.map +0 -1
package/dist/utility.js CHANGED
@@ -1,52 +1,52 @@
1
- const a = (e) => e && typeof e == "object" && !Array.isArray(e) && e !== null, A = (e) => typeof e == "function", u = (e) => Array.isArray(e), g = (e, r, i = {}, n = []) => {
1
+ const a = (e) => e && typeof e == "object" && !Array.isArray(e) && e !== null, A = (e) => typeof e == "function", y = (e) => Array.isArray(e), g = (e, r, n = {}, t = []) => {
2
2
  if (a(e) && a(r)) {
3
- const t = Object.keys(e), l = Object.keys(r);
4
- if (t.length !== l.length)
3
+ const i = Object.keys(e), l = Object.keys(r);
4
+ if (i.length !== l.length)
5
5
  return !1;
6
- for (let f of t) {
6
+ for (let f of i) {
7
7
  const o = e[f], s = r[f];
8
8
  if (!(f in e) || !(f in r))
9
9
  return !1;
10
- const c = [...n, f];
11
- if (!g(o, s, i, c))
10
+ const c = [...t, f];
11
+ if (!g(o, s, n, c))
12
12
  return !1;
13
13
  }
14
14
  return !0;
15
- } else if (u(e) && u(r)) {
15
+ } else if (y(e) && y(r)) {
16
16
  if (e.length !== r.length)
17
17
  return !1;
18
- for (let t = 0; t < e.length; t++)
19
- if (!g(e[t], r[t], i, [
20
- ...n,
21
- t.toString()
18
+ for (let i = 0; i < e.length; i++)
19
+ if (!g(e[i], r[i], n, [
20
+ ...t,
21
+ i.toString()
22
22
  ]))
23
23
  return !1;
24
24
  return !0;
25
25
  } else
26
26
  return e === r || Number.isNaN(e) && Number.isNaN(r);
27
27
  };
28
- function d(e, r, i) {
29
- if (!e || e.length === 0) return i;
30
- const n = e[0], t = e.slice(1);
28
+ function d(e, r, n) {
29
+ if (!e || e.length === 0) return n;
30
+ const t = e[0], i = e.slice(1);
31
31
  if (Array.isArray(r)) {
32
- const l = Number(n);
32
+ const l = Number(t);
33
33
  if (!isNaN(l) && l >= 0 && l < r.length)
34
34
  return [
35
35
  ...r.slice(0, l),
36
- d(t, r[l], i),
36
+ d(i, r[l], n),
37
37
  ...r.slice(l + 1)
38
38
  ];
39
39
  throw console.log("errorstate", r, e), new Error(
40
40
  `Invalid array index "${l}" in path "${e.join(".")}".`
41
41
  );
42
42
  } else if (typeof r == "object" && r !== null) {
43
- if (n && n in r)
43
+ if (t && t in r)
44
44
  return {
45
45
  ...r,
46
- [n]: d(t, r[n], i)
46
+ [t]: d(i, r[t], n)
47
47
  };
48
- throw console.log("Invalid property", n, t, e), new Error(
49
- `Invalid property "${n}" in path "${e.join(".")}".`
48
+ throw console.log("Invalid property", t, i, e), new Error(
49
+ `Invalid property "${t}" in path "${e.join(".")}".`
50
50
  );
51
51
  } else
52
52
  throw new Error(
@@ -55,30 +55,30 @@ function d(e, r, i) {
55
55
  }
56
56
  function h(e, r) {
57
57
  if (!e || e.length === 0) return r;
58
- const i = e[0], n = e.slice(1);
58
+ const n = e[0], t = e.slice(1);
59
59
  if (Array.isArray(r)) {
60
- const t = Number(i);
61
- if (!isNaN(t) && t >= 0 && t < r.length)
62
- return n.length === 0 ? [...r.slice(0, t), ...r.slice(t + 1)] : [
63
- ...r.slice(0, t),
64
- h(n, r[t]),
65
- ...r.slice(t + 1)
60
+ const i = Number(n);
61
+ if (!isNaN(i) && i >= 0 && i < r.length)
62
+ return t.length === 0 ? [...r.slice(0, i), ...r.slice(i + 1)] : [
63
+ ...r.slice(0, i),
64
+ h(t, r[i]),
65
+ ...r.slice(i + 1)
66
66
  ];
67
67
  throw new Error(
68
- `Invalid array index "${t}" in path "${e.join(".")}".`
68
+ `Invalid array index "${i}" in path "${e.join(".")}".`
69
69
  );
70
70
  } else if (typeof r == "object" && r !== null)
71
- if (n.length === 0) {
72
- const { [i]: t, ...l } = r;
71
+ if (t.length === 0) {
72
+ const { [n]: i, ...l } = r;
73
73
  return l;
74
74
  } else {
75
- if (i in r)
75
+ if (n in r)
76
76
  return {
77
77
  ...r,
78
- [i]: h(n, r[i])
78
+ [n]: h(t, r[n])
79
79
  };
80
80
  throw new Error(
81
- `Invalid property "${i}" in path "${e.join(".")}".`
81
+ `Invalid property "${n}" in path "${e.join(".")}".`
82
82
  );
83
83
  }
84
84
  else
@@ -87,103 +87,113 @@ function h(e, r) {
87
87
  );
88
88
  }
89
89
  function w(e, r) {
90
- let i = e;
91
- for (let n = 0; n < r.length; n++) {
92
- const t = r[n];
93
- if (!t)
90
+ let n = e;
91
+ for (let t = 0; t < r.length; t++) {
92
+ const i = r[t];
93
+ if (!i)
94
94
  throw new Error("Invalid path");
95
- if (Array.isArray(i))
96
- i = i[parseInt(t)];
95
+ if (Array.isArray(n))
96
+ n = n[parseInt(i)];
97
97
  else {
98
- if (!i)
98
+ if (!n)
99
99
  return;
100
- i = i[t];
100
+ n = n[i];
101
101
  }
102
102
  }
103
- return i;
103
+ return n;
104
104
  }
105
- function y(e, r, i = "") {
106
- let n = [];
105
+ function u(e, r, n = "") {
106
+ let t = [];
107
107
  if (typeof e == "function" && typeof r == "function")
108
- return n;
108
+ return t;
109
109
  if (e == null || r === null || r === void 0)
110
- return e !== r ? [i] : n;
110
+ return e !== r ? [n] : t;
111
111
  if (typeof e != "object" || typeof r != "object")
112
- return e !== r ? [i] : n;
112
+ return e !== r ? [n] : t;
113
113
  if (Array.isArray(e) && Array.isArray(r)) {
114
- e.length !== r.length && n.push(`${i}.length`);
114
+ e.length !== r.length && t.push(`${n}.length`);
115
115
  const o = Math.min(e.length, r.length);
116
116
  for (let s = 0; s < o; s++)
117
- e[s] !== r[s] && (n = n.concat(
118
- y(e[s], r[s], `${i}[${s}]`)
117
+ e[s] !== r[s] && (t = t.concat(
118
+ u(e[s], r[s], `${n}[${s}]`)
119
119
  ));
120
120
  if (e.length !== r.length) {
121
121
  const s = e.length > r.length ? e : r;
122
122
  for (let c = o; c < s.length; c++)
123
- n.push(`${i}[${c}]`);
123
+ t.push(`${n}[${c}]`);
124
124
  }
125
- return n;
125
+ return t;
126
126
  }
127
- const t = Object.keys(e), l = Object.keys(r);
128
- return Array.from(/* @__PURE__ */ new Set([...t, ...l])).forEach((o) => {
129
- const s = i ? `${i}.${o}` : o;
130
- n = n.concat(
131
- y(e[o], r[o], s)
127
+ const i = Object.keys(e), l = Object.keys(r);
128
+ return Array.from(/* @__PURE__ */ new Set([...i, ...l])).forEach((o) => {
129
+ const s = n ? `${n}.${o}` : o;
130
+ t = t.concat(
131
+ u(e[o], r[o], s)
132
132
  );
133
- }), n;
133
+ }), t;
134
134
  }
135
135
  function $(e, r) {
136
- return y(e, r).map(
137
- (n) => n.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
136
+ return u(e, r).map(
137
+ (t) => t.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
138
138
  );
139
139
  }
140
- function p(e, r, i = "") {
141
- let n = [];
140
+ function p(e, r, n = "") {
141
+ let t = [];
142
142
  if (e == null || r === null || r === void 0)
143
- return n;
143
+ return t;
144
144
  if (Array.isArray(e) && Array.isArray(r))
145
- e.length !== r.length && n.push(i);
145
+ e.length !== r.length && t.push(n);
146
146
  else if (typeof e == "object" && typeof r == "object") {
147
- const t = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(r)]);
148
- for (const l of t) {
149
- const f = i ? `${i}.${l}` : l;
150
- (Array.isArray(e[l]) || Array.isArray(r[l])) && (n = n.concat(
147
+ const i = /* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(r)]);
148
+ for (const l of i) {
149
+ const f = n ? `${n}.${l}` : l;
150
+ (Array.isArray(e[l]) || Array.isArray(r[l])) && (t = t.concat(
151
151
  p(e[l], r[l], f)
152
152
  ));
153
153
  }
154
154
  }
155
- return n;
155
+ return t;
156
156
  }
157
- function v(e, r) {
157
+ function m(e, r) {
158
158
  return p(e, r).map(
159
- (n) => n.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
159
+ (t) => t.replace(/\[(\w+)\]/g, ".$1").split(".").filter(Boolean)
160
160
  );
161
161
  }
162
- function N(e) {
162
+ function v(e) {
163
163
  const r = (l) => Object.values(l).some(
164
164
  (f) => f?.hasOwnProperty("initialState")
165
165
  );
166
- let i = {};
167
- const n = (l) => {
166
+ let n = {};
167
+ const t = (l) => {
168
168
  const f = {};
169
169
  return Object.entries(l).forEach(([o, s]) => {
170
- s?.initialState ? (i = { ...i ?? {}, [o]: s }, f[o] = { ...s.initialState }) : f[o] = s;
170
+ s?.initialState ? (n = { ...n ?? {}, [o]: s }, f[o] = { ...s.initialState }) : f[o] = s;
171
171
  }), f;
172
172
  };
173
- return [r(e) ? n(e) : e, i];
173
+ return [r(e) ? t(e) : e, n];
174
+ }
175
+ function N(e, r) {
176
+ let n = null;
177
+ const t = (...i) => {
178
+ n && clearTimeout(n), n = setTimeout(() => e(...i), r);
179
+ };
180
+ return t.cancel = () => {
181
+ n && (clearTimeout(n), n = null);
182
+ }, t;
174
183
  }
175
184
  export {
185
+ N as debounce,
176
186
  h as deleteNestedProperty,
177
187
  p as getArrayLengthDifferences,
178
- v as getArrayLengthDifferencesArray,
179
- y as getDifferences,
188
+ m as getArrayLengthDifferencesArray,
189
+ u as getDifferences,
180
190
  $ as getDifferencesArray,
181
191
  w as getNestedValue,
182
- u as isArray,
192
+ y as isArray,
183
193
  g as isDeepEqual,
184
194
  A as isFunction,
185
195
  a as isObject,
186
- N as transformStateFunc,
196
+ v as transformStateFunc,
187
197
  d as updateNestedProperty
188
198
  };
189
199
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","sources":["../src/utility.ts"],"sourcesContent":["import type { InitialStateType, TransformedStateType } from \"./CogsState\";\r\nexport const isObject = (item: any): item is Record<string, any> => {\r\n return (\r\n item &&\r\n typeof item === \"object\" &&\r\n !Array.isArray(item) &&\r\n 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 ||\r\n (Number.isNaN(object1) && Number.isNaN(object2))\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\nexport function getNestedValue<TStateObject extends unknown>(\r\n obj: TStateObject,\r\n pathArray: string[],\r\n) {\r\n let value: any = obj;\r\n\r\n for (let i = 0; i < pathArray.length; i++) {\r\n const key = pathArray[i];\r\n // console.log(key, \"loooo\");\r\n if (!key) {\r\n throw new Error(\"Invalid path\");\r\n }\r\n if (Array.isArray(value)) {\r\n value = value[parseInt(key)];\r\n } else {\r\n if (!value) {\r\n // console.log(key, value, pathArray);\r\n return;\r\n }\r\n\r\n value = value[key];\r\n }\r\n }\r\n return value;\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}.length`);\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(obj1[i], obj2[i], `${currentPath}[${i}]`),\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}[${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\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// export function determineUpdateType(prevState: any, newState: any): UpdateTypeDetail[] {\r\n// console.time(\"determineUpdateType\");\r\n// const updateDetails: UpdateTypeDetail[] = [];\r\n\r\n// function checkForUpdates(prev: any, next: any, path: string[] = []) {\r\n// if (Array.isArray(prev) && Array.isArray(next)) {\r\n// if (prev.length !== next.length) {\r\n// updateDetails.push({\r\n// updateType: prev.length < next.length ? \"push\" : \"cut\",\r\n// path,\r\n// oldValue: prev,\r\n// newValue: next,\r\n// });\r\n// // If an array has changed size, no need to check deeper for this path\r\n// return;\r\n// } else {\r\n// // Check for updates within the array\r\n// for (let i = 0; i < prev.length; i++) {\r\n// checkForUpdates(prev[i], next[i], path.concat(i.toString()));\r\n// }\r\n// }\r\n// } else if (typeof prev === \"object\" && typeof next === \"object\" && prev !== null && next !== null) {\r\n// const keys = new Set([...Object.keys(prev), ...Object.keys(next)]);\r\n// for (let key of keys) {\r\n// checkForUpdates(prev[key], next[key], path.concat(key));\r\n// }\r\n// } else if (prev !== next) {\r\n// updateDetails.push({\r\n// updateType: \"updated\",\r\n// path,\r\n// oldValue: prev,\r\n// newValue: next,\r\n// });\r\n// }\r\n// }\r\n\r\n// checkForUpdates(prevState, newState);\r\n// console.timeEnd(\"determineUpdateType\");\r\n// console.log(\"updateDetails\", updateDetails);\r\n// return updateDetails;\r\n// }\r\n\r\nexport function transformStateFunc<State extends unknown>(initialState: State) {\r\n const isInitialStateType = (\r\n state: any,\r\n ): state is InitialStateType<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: InitialStateType<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","getNestedValue","obj","pathArray","value","getDifferences","obj1","obj2","differences","commonLength","longerArrayPath","keys1","keys2","getDifferencesArray","string","getArrayLengthDifferences","keys","getArrayLengthDifferencesArray","transformStateFunc","initialState","isInitialStateType","initalOptions","transformInitialState","transformedState"],"mappings":"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"}
1
+ {"version":3,"file":"utility.js","sources":["../src/utility.ts"],"sourcesContent":["import type { InitialStateType, TransformedStateType } from \"./CogsState\";\r\nexport const isObject = (item: any): item is Record<string, any> => {\r\n return (\r\n item &&\r\n typeof item === \"object\" &&\r\n !Array.isArray(item) &&\r\n 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 ||\r\n (Number.isNaN(object1) && Number.isNaN(object2))\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\nexport function getNestedValue<TStateObject extends unknown>(\r\n obj: TStateObject,\r\n pathArray: string[],\r\n) {\r\n let value: any = obj;\r\n\r\n for (let i = 0; i < pathArray.length; i++) {\r\n const key = pathArray[i];\r\n // console.log(key, \"loooo\");\r\n if (!key) {\r\n throw new Error(\"Invalid path\");\r\n }\r\n if (Array.isArray(value)) {\r\n value = value[parseInt(key)];\r\n } else {\r\n if (!value) {\r\n // console.log(key, value, pathArray);\r\n return;\r\n }\r\n\r\n value = value[key];\r\n }\r\n }\r\n return value;\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}.length`);\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(obj1[i], obj2[i], `${currentPath}[${i}]`),\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}[${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\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// export function determineUpdateType(prevState: any, newState: any): UpdateTypeDetail[] {\r\n// console.time(\"determineUpdateType\");\r\n// const updateDetails: UpdateTypeDetail[] = [];\r\n\r\n// function checkForUpdates(prev: any, next: any, path: string[] = []) {\r\n// if (Array.isArray(prev) && Array.isArray(next)) {\r\n// if (prev.length !== next.length) {\r\n// updateDetails.push({\r\n// updateType: prev.length < next.length ? \"push\" : \"cut\",\r\n// path,\r\n// oldValue: prev,\r\n// newValue: next,\r\n// });\r\n// // If an array has changed size, no need to check deeper for this path\r\n// return;\r\n// } else {\r\n// // Check for updates within the array\r\n// for (let i = 0; i < prev.length; i++) {\r\n// checkForUpdates(prev[i], next[i], path.concat(i.toString()));\r\n// }\r\n// }\r\n// } else if (typeof prev === \"object\" && typeof next === \"object\" && prev !== null && next !== null) {\r\n// const keys = new Set([...Object.keys(prev), ...Object.keys(next)]);\r\n// for (let key of keys) {\r\n// checkForUpdates(prev[key], next[key], path.concat(key));\r\n// }\r\n// } else if (prev !== next) {\r\n// updateDetails.push({\r\n// updateType: \"updated\",\r\n// path,\r\n// oldValue: prev,\r\n// newValue: next,\r\n// });\r\n// }\r\n// }\r\n\r\n// checkForUpdates(prevState, newState);\r\n// console.timeEnd(\"determineUpdateType\");\r\n// console.log(\"updateDetails\", updateDetails);\r\n// return updateDetails;\r\n// }\r\n\r\nexport function transformStateFunc<State extends unknown>(initialState: State) {\r\n const isInitialStateType = (\r\n state: any,\r\n ): state is InitialStateType<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: InitialStateType<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\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"],"names":["isObject","item","isFunction","arg","isArray","isDeepEqual","object1","object2","opts","currentPath","objKeys1","objKeys2","key","value1","value2","newPath","updateNestedProperty","path","state","update","head","tail","index","deleteNestedProperty","_","rest","getNestedValue","obj","pathArray","value","i","getDifferences","obj1","obj2","differences","commonLength","longerArrayPath","keys1","keys2","getDifferencesArray","string","getArrayLengthDifferences","keys","getArrayLengthDifferencesArray","transformStateFunc","initialState","isInitialStateType","initalOptions","transformInitialState","transformedState","debounce","func","wait","timeoutID","debounced","args"],"mappings":"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"}
package/package.json CHANGED
@@ -1,64 +1,68 @@
1
- {
2
- "name": "cogsbox-state",
3
- "version": "0.5.5",
4
- "description": "React state management library with form controls and server sync",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.js"
14
- }
15
- },
16
- "files": [
17
- "dist"
18
- ],
19
- "repository": "github:cogsbox/cogsbox-state",
20
- "scripts": {
21
- "build": "vite build && rimraf dist/examples",
22
- "lint": "eslint src --ext ts,tsx",
23
- "format": "prettier --write \"src/**/*.{ts,tsx}\"",
24
- "dev": "vite src/examples"
25
- },
26
- "dependencies": {
27
- "react-syntax-highlighter": "^15.6.1",
28
- "rollup-preserve-directives": "^1.1.3",
29
- "uuid": "^9.0.1",
30
- "zod": "^3.22.4",
31
- "zustand": "^5.0.3"
32
- },
33
- "peerDependencies": {
34
- "@types/react": "^18.0.0",
35
- "react": "^18.2.0",
36
- "react-dom": "^18.2.0"
37
- },
38
- "devDependencies": {
39
- "@types/node": "^20.11.0",
40
- "@types/react": "^18.2.0",
41
- "@types/react-dom": "^18.2.0",
42
- "@types/react-syntax-highlighter": "^15.5.13",
43
- "@types/uuid": "^9.0.7",
44
- "@typescript-eslint/eslint-plugin": "^6.21.0",
45
- "@typescript-eslint/parser": "^6.21.0",
46
- "@vitejs/plugin-react": "^4.2.0",
47
- "eslint": "^8.57.0",
48
- "eslint-plugin-react": "^7.33.2",
49
- "eslint-plugin-react-hooks": "^4.6.0",
50
- "prettier": "^3.4.0",
51
- "rimraf": "^6.0.1",
52
- "typescript": "^5.3.0",
53
- "vite": "^5.0.0",
54
- "vite-plugin-dts": "^3.7.0"
55
- },
56
- "keywords": [
57
- "react",
58
- "state-management",
59
- "forms",
60
- "typescript"
61
- ],
62
- "author": "",
63
- "license": "MIT"
64
- }
1
+ {
2
+ "name": "cogsbox-state",
3
+ "version": "0.5.7",
4
+ "description": "React state management library with form controls and server sync",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "repository": "github:cogsbox/cogsbox-state",
20
+ "scripts": {
21
+ "build": "vite build && rimraf dist/examples",
22
+ "lint": "eslint src --ext ts,tsx",
23
+ "format": "prettier --write \"src/**/*.{ts,tsx}\"",
24
+ "dev": "vite src/examples"
25
+ },
26
+ "dependencies": {
27
+ "@tsndr/cloudflare-worker-jwt": "^3.1.3",
28
+ "install": "^0.13.0",
29
+ "npm": "^11.1.0",
30
+ "react-syntax-highlighter": "^15.6.1",
31
+ "rollup-preserve-directives": "^1.1.3",
32
+ "uuid": "^9.0.1",
33
+ "zod": "^3.22.4",
34
+ "zustand": "^5.0.3"
35
+ },
36
+ "peerDependencies": {
37
+ "@trpc/next": "^10.0.0",
38
+ "@types/react": "^18.0.0",
39
+ "react": "^18.2.0",
40
+ "react-dom": "^18.2.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^20.11.0",
44
+ "@types/react": "^18.2.0",
45
+ "@types/react-dom": "^18.2.0",
46
+ "@types/react-syntax-highlighter": "^15.5.13",
47
+ "@types/uuid": "^9.0.7",
48
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
49
+ "@typescript-eslint/parser": "^6.21.0",
50
+ "@vitejs/plugin-react": "^4.2.0",
51
+ "eslint": "^8.57.0",
52
+ "eslint-plugin-react": "^7.33.2",
53
+ "eslint-plugin-react-hooks": "^4.6.0",
54
+ "prettier": "^3.4.0",
55
+ "rimraf": "^6.0.1",
56
+ "typescript": "^5.3.0",
57
+ "vite": "^5.0.0",
58
+ "vite-plugin-dts": "^3.7.0"
59
+ },
60
+ "keywords": [
61
+ "react",
62
+ "state-management",
63
+ "forms",
64
+ "typescript"
65
+ ],
66
+ "author": "",
67
+ "license": "MIT"
68
+ }
@@ -1,7 +0,0 @@
1
- function e(t) {
2
- return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
3
- }
4
- export {
5
- e as getDefaultExportFromCjs
6
- };
7
- //# sourceMappingURL=_commonjsHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,5 +0,0 @@
1
- var e = { exports: {} };
2
- export {
3
- e as __module
4
- };
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- var e = { exports: {} };
2
- export {
3
- e as __module
4
- };
5
- //# sourceMappingURL=jsx-runtime.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsx-runtime.jsx","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- var e = {};
2
- export {
3
- e as __exports
4
- };
5
- //# sourceMappingURL=react-jsx-runtime.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-jsx-runtime.jsx","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- var r = {};
2
- export {
3
- r as __exports
4
- };
5
- //# sourceMappingURL=react-jsx-runtime.production.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-jsx-runtime.production.jsx","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- var e = { exports: {} };
2
- export {
3
- e as __module
4
- };
5
- //# sourceMappingURL=react.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- var r = {};
2
- export {
3
- r as __exports
4
- };
5
- //# sourceMappingURL=react.production.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.production.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}