@develia/commons 0.4.12 → 0.4.14

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 (256) hide show
  1. package/dist/cjs/array.js +4 -5
  2. package/dist/cjs/array.js.map +1 -1
  3. package/dist/cjs/async-pool-executor.js +0 -0
  4. package/dist/cjs/async-pool-executor.js.map +0 -0
  5. package/dist/cjs/browser/form-utilities.js +12 -12
  6. package/dist/cjs/browser/form-utilities.js.map +1 -1
  7. package/dist/cjs/browser/geo-location.js +1 -1
  8. package/dist/cjs/browser/geo-location.js.map +1 -1
  9. package/dist/cjs/browser/index.js +30 -2
  10. package/dist/cjs/browser/index.js.map +1 -1
  11. package/dist/cjs/browser/native-bridge.js +0 -0
  12. package/dist/cjs/browser/native-bridge.js.map +0 -0
  13. package/dist/cjs/cancellable-promise.js +0 -0
  14. package/dist/cjs/cancellable-promise.js.map +0 -0
  15. package/dist/cjs/clean-url-search-params.js +0 -0
  16. package/dist/cjs/clean-url-search-params.js.map +0 -0
  17. package/dist/cjs/collections/cache-dictionary.js +0 -0
  18. package/dist/cjs/collections/cache-dictionary.js.map +0 -0
  19. package/dist/cjs/collections/default-map.js +0 -0
  20. package/dist/cjs/collections/default-map.js.map +0 -0
  21. package/dist/cjs/collections/default-weak-map.js +0 -0
  22. package/dist/cjs/collections/default-weak-map.js.map +0 -0
  23. package/dist/cjs/collections/index.js +0 -0
  24. package/dist/cjs/collections/index.js.map +0 -0
  25. package/dist/cjs/draft.js +153 -0
  26. package/dist/cjs/draft.js.map +1 -0
  27. package/dist/cjs/event-bus.js +0 -0
  28. package/dist/cjs/event-bus.js.map +0 -0
  29. package/dist/cjs/from.js +1 -1
  30. package/dist/cjs/from.js.map +1 -1
  31. package/dist/cjs/index.js +3 -1
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/key-value-pair.js +0 -0
  34. package/dist/cjs/key-value-pair.js.map +0 -0
  35. package/dist/cjs/lazy.js +0 -0
  36. package/dist/cjs/lazy.js.map +0 -0
  37. package/dist/cjs/math.js +2 -3
  38. package/dist/cjs/math.js.map +1 -1
  39. package/dist/cjs/order.js +0 -0
  40. package/dist/cjs/order.js.map +0 -0
  41. package/dist/cjs/parse.js +3 -4
  42. package/dist/cjs/parse.js.map +1 -1
  43. package/dist/cjs/patch.js +2 -3
  44. package/dist/cjs/patch.js.map +1 -1
  45. package/dist/cjs/stopwatch.js +0 -0
  46. package/dist/cjs/stopwatch.js.map +0 -0
  47. package/dist/cjs/string.js +8 -9
  48. package/dist/cjs/string.js.map +1 -1
  49. package/dist/cjs/timer.js +0 -0
  50. package/dist/cjs/timer.js.map +0 -0
  51. package/dist/cjs/timespan.js +0 -0
  52. package/dist/cjs/timespan.js.map +0 -0
  53. package/dist/cjs/type-code.js +0 -0
  54. package/dist/cjs/type-code.js.map +0 -0
  55. package/dist/cjs/type.js +0 -0
  56. package/dist/cjs/type.js.map +0 -0
  57. package/dist/cjs/types.js +0 -0
  58. package/dist/cjs/types.js.map +0 -0
  59. package/dist/cjs/utilities.js +106 -57
  60. package/dist/cjs/utilities.js.map +1 -1
  61. package/dist/esm/array.js +0 -0
  62. package/dist/esm/array.js.map +0 -0
  63. package/dist/esm/async-pool-executor.js +0 -0
  64. package/dist/esm/async-pool-executor.js.map +0 -0
  65. package/dist/esm/browser/form-utilities.js +7 -6
  66. package/dist/esm/browser/form-utilities.js.map +1 -1
  67. package/dist/esm/browser/geo-location.js +0 -0
  68. package/dist/esm/browser/geo-location.js.map +0 -0
  69. package/dist/esm/browser/index.js +27 -0
  70. package/dist/esm/browser/index.js.map +1 -1
  71. package/dist/esm/browser/native-bridge.js +0 -0
  72. package/dist/esm/browser/native-bridge.js.map +0 -0
  73. package/dist/esm/cancellable-promise.js +0 -0
  74. package/dist/esm/cancellable-promise.js.map +0 -0
  75. package/dist/esm/clean-url-search-params.js +0 -0
  76. package/dist/esm/clean-url-search-params.js.map +0 -0
  77. package/dist/esm/collections/cache-dictionary.js +0 -0
  78. package/dist/esm/collections/cache-dictionary.js.map +0 -0
  79. package/dist/esm/collections/default-map.js +0 -0
  80. package/dist/esm/collections/default-map.js.map +0 -0
  81. package/dist/esm/collections/default-weak-map.js +0 -0
  82. package/dist/esm/collections/default-weak-map.js.map +0 -0
  83. package/dist/esm/collections/index.js +0 -0
  84. package/dist/esm/collections/index.js.map +0 -0
  85. package/dist/esm/draft.js +150 -0
  86. package/dist/esm/draft.js.map +1 -0
  87. package/dist/esm/event-bus.js +0 -0
  88. package/dist/esm/event-bus.js.map +0 -0
  89. package/dist/esm/from.js +0 -0
  90. package/dist/esm/from.js.map +0 -0
  91. package/dist/esm/index.js +1 -0
  92. package/dist/esm/index.js.map +1 -1
  93. package/dist/esm/key-value-pair.js +0 -0
  94. package/dist/esm/key-value-pair.js.map +0 -0
  95. package/dist/esm/lazy.js +0 -0
  96. package/dist/esm/lazy.js.map +0 -0
  97. package/dist/esm/math.js +0 -0
  98. package/dist/esm/math.js.map +0 -0
  99. package/dist/esm/order.js +0 -0
  100. package/dist/esm/order.js.map +0 -0
  101. package/dist/esm/parse.js +0 -0
  102. package/dist/esm/parse.js.map +0 -0
  103. package/dist/esm/patch.js +0 -0
  104. package/dist/esm/patch.js.map +0 -0
  105. package/dist/esm/stopwatch.js +0 -0
  106. package/dist/esm/stopwatch.js.map +0 -0
  107. package/dist/esm/string.js +0 -0
  108. package/dist/esm/string.js.map +0 -0
  109. package/dist/esm/timer.js +0 -0
  110. package/dist/esm/timer.js.map +0 -0
  111. package/dist/esm/timespan.js +0 -0
  112. package/dist/esm/timespan.js.map +0 -0
  113. package/dist/esm/type-code.js +0 -0
  114. package/dist/esm/type-code.js.map +0 -0
  115. package/dist/esm/type.js +0 -0
  116. package/dist/esm/type.js.map +0 -0
  117. package/dist/esm/types.js +0 -0
  118. package/dist/esm/types.js.map +0 -0
  119. package/dist/esm/utilities.js +81 -32
  120. package/dist/esm/utilities.js.map +1 -1
  121. package/dist/types/array.d.ts +0 -0
  122. package/dist/types/array.d.ts.map +0 -0
  123. package/dist/types/async-pool-executor.d.ts +0 -0
  124. package/dist/types/async-pool-executor.d.ts.map +0 -0
  125. package/dist/types/browser/form-utilities.d.ts +0 -0
  126. package/dist/types/browser/form-utilities.d.ts.map +1 -1
  127. package/dist/types/browser/geo-location.d.ts +0 -0
  128. package/dist/types/browser/geo-location.d.ts.map +0 -0
  129. package/dist/types/browser/index.d.ts +3 -0
  130. package/dist/types/browser/index.d.ts.map +1 -1
  131. package/dist/types/browser/native-bridge.d.ts +0 -0
  132. package/dist/types/browser/native-bridge.d.ts.map +0 -0
  133. package/dist/types/cancellable-promise.d.ts +0 -0
  134. package/dist/types/cancellable-promise.d.ts.map +0 -0
  135. package/dist/types/clean-url-search-params.d.ts +0 -0
  136. package/dist/types/clean-url-search-params.d.ts.map +0 -0
  137. package/dist/types/collections/cache-dictionary.d.ts +0 -0
  138. package/dist/types/collections/cache-dictionary.d.ts.map +0 -0
  139. package/dist/types/collections/default-map.d.ts +0 -0
  140. package/dist/types/collections/default-map.d.ts.map +0 -0
  141. package/dist/types/collections/default-weak-map.d.ts +0 -0
  142. package/dist/types/collections/default-weak-map.d.ts.map +0 -0
  143. package/dist/types/collections/index.d.ts +0 -0
  144. package/dist/types/collections/index.d.ts.map +0 -0
  145. package/dist/types/draft.d.ts +17 -0
  146. package/dist/types/draft.d.ts.map +1 -0
  147. package/dist/types/event-bus.d.ts +0 -0
  148. package/dist/types/event-bus.d.ts.map +0 -0
  149. package/dist/types/from.d.ts +0 -0
  150. package/dist/types/from.d.ts.map +0 -0
  151. package/dist/types/index.d.ts +1 -0
  152. package/dist/types/index.d.ts.map +1 -1
  153. package/dist/types/key-value-pair.d.ts +0 -0
  154. package/dist/types/key-value-pair.d.ts.map +0 -0
  155. package/dist/types/lazy.d.ts +0 -0
  156. package/dist/types/lazy.d.ts.map +0 -0
  157. package/dist/types/math.d.ts +0 -0
  158. package/dist/types/math.d.ts.map +0 -0
  159. package/dist/types/order.d.ts +0 -0
  160. package/dist/types/order.d.ts.map +0 -0
  161. package/dist/types/parse.d.ts +0 -0
  162. package/dist/types/parse.d.ts.map +0 -0
  163. package/dist/types/patch.d.ts +0 -0
  164. package/dist/types/patch.d.ts.map +0 -0
  165. package/dist/types/stopwatch.d.ts +0 -0
  166. package/dist/types/stopwatch.d.ts.map +0 -0
  167. package/dist/types/string.d.ts +0 -0
  168. package/dist/types/string.d.ts.map +0 -0
  169. package/dist/types/timer.d.ts +0 -0
  170. package/dist/types/timer.d.ts.map +0 -0
  171. package/dist/types/timespan.d.ts +0 -0
  172. package/dist/types/timespan.d.ts.map +0 -0
  173. package/dist/types/type-code.d.ts +0 -0
  174. package/dist/types/type-code.d.ts.map +0 -0
  175. package/dist/types/type.d.ts +0 -0
  176. package/dist/types/type.d.ts.map +0 -0
  177. package/dist/types/types.d.ts +0 -0
  178. package/dist/types/types.d.ts.map +0 -0
  179. package/dist/types/utilities.d.ts +3 -2
  180. package/dist/types/utilities.d.ts.map +1 -1
  181. package/dist/web/array.js +0 -0
  182. package/dist/web/array.js.map +0 -0
  183. package/dist/web/async-pool-executor.js +0 -0
  184. package/dist/web/async-pool-executor.js.map +0 -0
  185. package/dist/web/browser/form-utilities.js +7 -6
  186. package/dist/web/browser/form-utilities.js.map +1 -1
  187. package/dist/web/browser/geo-location.js +0 -0
  188. package/dist/web/browser/geo-location.js.map +0 -0
  189. package/dist/web/browser/index.js +27 -0
  190. package/dist/web/browser/index.js.map +1 -1
  191. package/dist/web/browser/native-bridge.js +0 -0
  192. package/dist/web/browser/native-bridge.js.map +0 -0
  193. package/dist/web/cancellable-promise.js +0 -0
  194. package/dist/web/cancellable-promise.js.map +0 -0
  195. package/dist/web/clean-url-search-params.js +0 -0
  196. package/dist/web/clean-url-search-params.js.map +0 -0
  197. package/dist/web/collections/cache-dictionary.js +0 -0
  198. package/dist/web/collections/cache-dictionary.js.map +0 -0
  199. package/dist/web/collections/default-map.js +0 -0
  200. package/dist/web/collections/default-map.js.map +0 -0
  201. package/dist/web/collections/default-weak-map.js +0 -0
  202. package/dist/web/collections/default-weak-map.js.map +0 -0
  203. package/dist/web/collections/index.js +0 -0
  204. package/dist/web/collections/index.js.map +0 -0
  205. package/dist/web/draft.js +150 -0
  206. package/dist/web/draft.js.map +1 -0
  207. package/dist/web/event-bus.js +0 -0
  208. package/dist/web/event-bus.js.map +0 -0
  209. package/dist/web/from.js +0 -0
  210. package/dist/web/from.js.map +0 -0
  211. package/dist/web/index.js +1 -0
  212. package/dist/web/index.js.map +1 -1
  213. package/dist/web/key-value-pair.js +0 -0
  214. package/dist/web/key-value-pair.js.map +0 -0
  215. package/dist/web/lazy.js +0 -0
  216. package/dist/web/lazy.js.map +0 -0
  217. package/dist/web/math.js +0 -0
  218. package/dist/web/math.js.map +0 -0
  219. package/dist/web/order.js +0 -0
  220. package/dist/web/order.js.map +0 -0
  221. package/dist/web/parse.js +0 -0
  222. package/dist/web/parse.js.map +0 -0
  223. package/dist/web/patch.js +0 -0
  224. package/dist/web/patch.js.map +0 -0
  225. package/dist/web/stopwatch.js +0 -0
  226. package/dist/web/stopwatch.js.map +0 -0
  227. package/dist/web/string.js +0 -0
  228. package/dist/web/string.js.map +0 -0
  229. package/dist/web/timer.js +0 -0
  230. package/dist/web/timer.js.map +0 -0
  231. package/dist/web/timespan.js +0 -0
  232. package/dist/web/timespan.js.map +0 -0
  233. package/dist/web/type-code.js +0 -0
  234. package/dist/web/type-code.js.map +0 -0
  235. package/dist/web/type.js +0 -0
  236. package/dist/web/type.js.map +0 -0
  237. package/dist/web/types.js +0 -0
  238. package/dist/web/types.js.map +0 -0
  239. package/dist/web/utilities.js +81 -32
  240. package/dist/web/utilities.js.map +1 -1
  241. package/package.json +60 -56
  242. package/src/browser/form-utilities.ts +7 -6
  243. package/src/browser/geo-location.ts +113 -113
  244. package/src/browser/index.ts +37 -0
  245. package/src/browser/native-bridge.ts +116 -116
  246. package/src/cancellable-promise.ts +76 -76
  247. package/src/collections/index.ts +2 -2
  248. package/src/draft.ts +268 -0
  249. package/src/event-bus.ts +83 -83
  250. package/src/index.ts +42 -37
  251. package/src/parse.ts +240 -240
  252. package/src/string.ts +128 -128
  253. package/src/type-code.ts +15 -15
  254. package/src/type.ts +371 -371
  255. package/src/types.ts +30 -30
  256. package/src/utilities.ts +480 -404
@@ -54,37 +54,55 @@ export function isFunction(value) {
54
54
  return typeof value === 'function';
55
55
  }
56
56
  export function deepEqual(a, b) {
57
- if (a === b) {
57
+ return _deepEqual(a, b);
58
+ }
59
+ function _deepEqual(a, b, seen = new WeakMap()) {
60
+ if (a === b)
58
61
  return true;
59
- }
60
- if (a === null || b === null || typeof a !== typeof b) {
62
+ if (a === null || b === null)
61
63
  return false;
62
- }
63
- if (Array.isArray(a) && Array.isArray(b)) {
64
- if (a.length !== b.length) {
64
+ if (typeof a !== typeof b)
65
+ return false;
66
+ if (typeof a !== "object")
67
+ return false;
68
+ const objA = a;
69
+ if (seen.has(objA))
70
+ return seen.get(objA) === b;
71
+ seen.set(objA, b);
72
+ if (a instanceof Date)
73
+ return b instanceof Date && a.getTime() === b.getTime();
74
+ if (a instanceof RegExp)
75
+ return b instanceof RegExp && a.toString() === b.toString();
76
+ if (Array.isArray(a) !== Array.isArray(b))
77
+ return false;
78
+ if (a instanceof Map) {
79
+ if (!(b instanceof Map) || a.size !== b.size)
65
80
  return false;
66
- }
67
- for (let i = 0; i < a.length; i++) {
68
- if (!deepEqual(a[i], b[i])) {
81
+ for (const [k, v] of a) {
82
+ if (!b.has(k) || !_deepEqual(v, b.get(k), seen))
69
83
  return false;
70
- }
71
84
  }
72
85
  return true;
73
86
  }
74
- if (typeof a === "object" && typeof b === "object") {
75
- const keysA = Object.keys(a);
76
- const keysB = Object.keys(b);
77
- if (keysA.length !== keysB.length) {
87
+ if (a instanceof Set) {
88
+ if (!(b instanceof Set) || a.size !== b.size)
78
89
  return false;
79
- }
80
- for (const key of keysA) {
81
- if (!keysB.includes(key) || !deepEqual(a[key], b[key])) {
90
+ for (const v of a)
91
+ if (!b.has(v))
82
92
  return false;
83
- }
84
- }
85
93
  return true;
86
94
  }
87
- return false;
95
+ const keysA = Reflect.ownKeys(a);
96
+ const keysB = Reflect.ownKeys(b);
97
+ if (keysA.length !== keysB.length)
98
+ return false;
99
+ for (const key of keysA) {
100
+ if (!Object.prototype.hasOwnProperty.call(b, key))
101
+ return false;
102
+ if (!_deepEqual(a[key], b[key], seen))
103
+ return false;
104
+ }
105
+ return true;
88
106
  }
89
107
  export function shallowEqual(a, b) {
90
108
  if (a === b) {
@@ -150,6 +168,18 @@ export function toPairs(obj) {
150
168
  }
151
169
  return output;
152
170
  }
171
+ export function pick(obj, props) {
172
+ const result = {};
173
+ if (obj === null || typeof obj !== 'object') {
174
+ return result;
175
+ }
176
+ for (const key of props) {
177
+ if (key in obj) {
178
+ result[key] = obj[key];
179
+ }
180
+ }
181
+ return result;
182
+ }
153
183
  export function promisify(thing) {
154
184
  if (thing instanceof Promise)
155
185
  return thing;
@@ -166,22 +196,41 @@ export function promisify(thing) {
166
196
  }
167
197
  return Promise.resolve(thing);
168
198
  }
169
- export function deepClone(obj) {
170
- if (obj === null || typeof obj !== 'object') {
171
- return obj;
172
- }
173
- if (Array.isArray(obj)) {
174
- const copy = [];
175
- for (const element of obj) {
176
- copy.push(deepClone(element));
199
+ export function deepClone(value) {
200
+ return _deepClone(value);
201
+ }
202
+ function _deepClone(value, seen = new WeakMap()) {
203
+ if (value === null || typeof value !== "object")
204
+ return value;
205
+ const obj = value;
206
+ if (seen.has(obj))
207
+ return seen.get(obj);
208
+ if (value instanceof Date)
209
+ return new Date(value);
210
+ if (value instanceof RegExp)
211
+ return new RegExp(value);
212
+ if (value instanceof Map) {
213
+ const copy = new Map();
214
+ seen.set(value, copy);
215
+ for (const [k, v] of value) {
216
+ copy.set(_deepClone(k, seen), _deepClone(v, seen));
177
217
  }
178
218
  return copy;
179
219
  }
180
- const copy = {};
181
- for (const key in obj) {
182
- if (obj.hasOwnProperty(key)) {
183
- copy[key] = deepClone(obj[key]);
220
+ if (value instanceof Set) {
221
+ const copy = new Set();
222
+ seen.set(value, copy);
223
+ for (const v of value) {
224
+ copy.add(_deepClone(v, seen));
184
225
  }
226
+ return copy;
227
+ }
228
+ const copy = Array.isArray(value)
229
+ ? []
230
+ : Object.create(Object.getPrototypeOf(value));
231
+ seen.set(obj, copy);
232
+ for (const key of Reflect.ownKeys(obj)) {
233
+ copy[key] = _deepClone(value[key], seen);
185
234
  }
186
235
  return copy;
187
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,56 +1,60 @@
1
- {
2
- "name": "@develia/commons",
3
- "version": "0.4.12",
4
- "author": {
5
- "name": "Antonio Gil Espinosa",
6
- "email": "antonio.gil.espinosa@gmail.com",
7
- "url": "https://antoniogilespinosa.com"
8
- },
9
- "type": "module",
10
- "main": "./dist/cjs/index.js",
11
- "module": "./dist/esm/index.js",
12
- "types": "./dist/types/index.d.ts",
13
- "exports": {
14
- ".": {
15
- "types": "./dist/types/index.d.ts",
16
- "import": "./dist/esm/index.js",
17
- "require": "./dist/cjs/index.js",
18
- "browser": "./dist/web/index.js"
19
- },
20
- "./array": {
21
- "types": "./dist/types/array.d.ts",
22
- "import": "./dist/esm/array.js",
23
- "require": "./dist/cjs/array.js",
24
- "browser": "./dist/web/array.js"
25
- },
26
- "./collections": {
27
- "types": "./dist/types/collections/index.d.ts",
28
- "import": "./dist/esm/collections/index.js",
29
- "require": "./dist/cjs/collections/index.js",
30
- "browser": "./dist/web/collections/index.js"
31
- },
32
- "./browser": {
33
- "types": "./dist/types/browser/index.d.ts",
34
- "import": "./dist/esm/browser/index.js",
35
- "require": "./dist/cjs/browser/index.js",
36
- "browser": "./dist/web/browser/index.js"
37
- }
38
- },
39
- "license": "proprietary",
40
- "devDependencies": {
41
- "rimraf": "^6.0.1",
42
- "typescript": "^5.1.3",
43
- "jest": "^29.7.0"
44
- },
45
- "scripts": {
46
- "clean": "rimraf dist || rm -rf dist",
47
- "build:esm": "tsc -p tsconfig.esm.json",
48
- "build:cjs": "tsc -p tsconfig.cjs.json",
49
- "build:web": "tsc -p tsconfig.web.json",
50
- "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:web"
51
- },
52
- "files": [
53
- "dist",
54
- "src"
55
- ]
56
- }
1
+ {
2
+ "name": "@develia/commons",
3
+ "version": "0.4.14",
4
+ "author": {
5
+ "name": "Antonio Gil Espinosa",
6
+ "email": "antonio.gil.espinosa@gmail.com",
7
+ "url": "https://antoniogilespinosa.com"
8
+ },
9
+ "type": "module",
10
+ "main": "./dist/cjs/index.js",
11
+ "module": "./dist/esm/index.js",
12
+ "types": "./dist/types/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/types/index.d.ts",
16
+ "import": "./dist/esm/index.js",
17
+ "require": "./dist/cjs/index.js",
18
+ "browser": "./dist/web/index.js"
19
+ },
20
+ "./array": {
21
+ "types": "./dist/types/array.d.ts",
22
+ "import": "./dist/esm/array.js",
23
+ "require": "./dist/cjs/array.js",
24
+ "browser": "./dist/web/array.js"
25
+ },
26
+ "./collections": {
27
+ "types": "./dist/types/collections/index.d.ts",
28
+ "import": "./dist/esm/collections/index.js",
29
+ "require": "./dist/cjs/collections/index.js",
30
+ "browser": "./dist/web/collections/index.js"
31
+ },
32
+ "./browser": {
33
+ "types": "./dist/types/browser/index.d.ts",
34
+ "import": "./dist/esm/browser/index.js",
35
+ "require": "./dist/cjs/browser/index.js",
36
+ "browser": "./dist/web/browser/index.js"
37
+ }
38
+ },
39
+ "license": "proprietary",
40
+ "devDependencies": {
41
+ "@jest/globals": "^30.4.1",
42
+ "@types/jest": "^30.0.0",
43
+ "jest": "^29.7.0",
44
+ "rimraf": "^6.0.1",
45
+ "ts-jest": "^29.4.9",
46
+ "typescript": "^5.1.3"
47
+ },
48
+ "scripts": {
49
+ "clean": "rimraf dist || rm -rf dist",
50
+ "build:esm": "tsc -p tsconfig.esm.json",
51
+ "build:cjs": "tsc -p tsconfig.cjs.json",
52
+ "build:web": "tsc -p tsconfig.web.json",
53
+ "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:web",
54
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
55
+ },
56
+ "files": [
57
+ "dist",
58
+ "src"
59
+ ]
60
+ }
@@ -53,9 +53,9 @@ export function submitForm(
53
53
  */
54
54
  const appendInputs = (keyPrefix: string, value: any) => {
55
55
  if (Array.isArray(value)) {
56
- value.forEach(val => {
56
+ for (const val of value) {
57
57
  appendInputs(`${keyPrefix}[]`, val);
58
- });
58
+ }
59
59
  } else if (typeof value === 'object' && value !== null) {
60
60
  for (const subKey in value) {
61
61
  if (value.hasOwnProperty(subKey)) {
@@ -122,14 +122,15 @@ function _objectToFormData(data: Record<string, any>, formData: FormData, parent
122
122
  } else if (typeof value === 'object' && !Array.isArray(value)) {
123
123
  _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
124
124
  } else if (Array.isArray(value)) {
125
- value.forEach((item, index) => {
125
+ for (let index = 0; index < value.length; index++) {
126
+ const item = value[index];
126
127
  const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
127
128
  if (typeof item === 'object' && !Array.isArray(item)) {
128
129
  _objectToFormData(item, formData, arrayKey);
129
130
  } else {
130
131
  formData.append(arrayKey, item);
131
132
  }
132
- });
133
+ }
133
134
  } else {
134
135
  formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
135
136
  }
@@ -161,7 +162,7 @@ export function ajaxSubmission(
161
162
  .filter(el => el instanceof HTMLFormElement) as HTMLFormElement[]
162
163
  : [selectorOrElement];
163
164
 
164
- forms.forEach(form => {
165
+ for (const form of forms) {
165
166
  form.addEventListener('submit', async (event) => {
166
167
  event.preventDefault();
167
168
 
@@ -176,5 +177,5 @@ export function ajaxSubmission(
176
177
 
177
178
 
178
179
  });
179
- });
180
+ }
180
181
  }
@@ -1,114 +1,114 @@
1
- // ─── Tipos ───────────────────────────────────────────────
2
-
3
- export interface GeoLocation {
4
- latitude: number;
5
- longitude: number;
6
- accuracy: number;
7
- altitude: number | null;
8
- altitudeAccuracy: number | null;
9
- heading: number | null;
10
- speed: number | null;
11
- timestamp: number;
12
- }
13
-
14
- export interface GeoLocationOptions {
15
- enableHighAccuracy?: boolean;
16
- timeout?: number;
17
- maximumAge?: number;
18
- }
19
-
20
- // ─── Helpers ─────────────────────────────────────────────
21
-
22
- function positionToGeoLocation(position: GeolocationPosition): GeoLocation {
23
- const {coords, timestamp} = position;
24
- return {
25
- latitude: coords.latitude,
26
- longitude: coords.longitude,
27
- accuracy: coords.accuracy,
28
- altitude: coords.altitude,
29
- altitudeAccuracy: coords.altitudeAccuracy,
30
- heading: coords.heading,
31
- speed: coords.speed,
32
- timestamp,
33
- };
34
- }
35
-
36
- function geolocationError(error: GeolocationPositionError): Error {
37
- switch (error.code) {
38
- case error.PERMISSION_DENIED:
39
- return new Error('Has denegado el permiso de ubicación.');
40
- case error.POSITION_UNAVAILABLE:
41
- return new Error('No se pudo determinar tu ubicación.');
42
- case error.TIMEOUT:
43
- return new Error('Tiempo de espera agotado al obtener la ubicación.');
44
- default:
45
- return new Error('Error desconocido al obtener la ubicación.');
46
- }
47
- }
48
-
49
- function requestPosition(options: PositionOptions): Promise<GeoLocation> {
50
- return new Promise((resolve, reject) => {
51
- navigator.geolocation.getCurrentPosition(
52
- (position) => resolve(positionToGeoLocation(position)),
53
- (error) => reject(geolocationError(error)),
54
- options,
55
- );
56
- });
57
- }
58
-
59
- async function ensurePermission(): Promise<void> {
60
- if (!navigator.permissions) return;
61
-
62
- const permission = await navigator.permissions.query({name: 'geolocation'});
63
-
64
- if (permission.state === 'denied') {
65
- throw new Error(
66
- 'Permiso de ubicación denegado. Actívalo en la configuración del navegador.',
67
- );
68
- }
69
-
70
- if (permission.state === 'prompt') {
71
- await new Promise<void>((resolve, reject) => {
72
- // Escuchar cambio de estado del permiso
73
- permission.onchange = () => {
74
- permission.onchange = null;
75
- if (permission.state === 'granted') {
76
- resolve();
77
- } else {
78
- reject(new Error('Has denegado el permiso de ubicación.'));
79
- }
80
- };
81
-
82
- // Forzar el diálogo nativo del navegador
83
- navigator.geolocation.getCurrentPosition(
84
- () => {
85
- permission.onchange = null;
86
- resolve();
87
- },
88
- (error) => {
89
- permission.onchange = null;
90
- reject(geolocationError(error));
91
- },
92
- {timeout: 30000},
93
- );
94
- });
95
- }
96
- }
97
-
98
- // ─── Función principal ──────────────────────────────────
99
-
100
- export default async function getGeoLocation(
101
- options: GeoLocationOptions = {},
102
- ): Promise<GeoLocation> {
103
- if (!navigator.geolocation) {
104
- throw new Error('Tu navegador no soporta geolocalización.');
105
- }
106
-
107
- await ensurePermission();
108
-
109
- return requestPosition({
110
- enableHighAccuracy: options.enableHighAccuracy ?? true,
111
- timeout: options.timeout ?? 10000,
112
- maximumAge: options.maximumAge ?? 0,
113
- });
1
+ // ─── Tipos ───────────────────────────────────────────────
2
+
3
+ export interface GeoLocation {
4
+ latitude: number;
5
+ longitude: number;
6
+ accuracy: number;
7
+ altitude: number | null;
8
+ altitudeAccuracy: number | null;
9
+ heading: number | null;
10
+ speed: number | null;
11
+ timestamp: number;
12
+ }
13
+
14
+ export interface GeoLocationOptions {
15
+ enableHighAccuracy?: boolean;
16
+ timeout?: number;
17
+ maximumAge?: number;
18
+ }
19
+
20
+ // ─── Helpers ─────────────────────────────────────────────
21
+
22
+ function positionToGeoLocation(position: GeolocationPosition): GeoLocation {
23
+ const {coords, timestamp} = position;
24
+ return {
25
+ latitude: coords.latitude,
26
+ longitude: coords.longitude,
27
+ accuracy: coords.accuracy,
28
+ altitude: coords.altitude,
29
+ altitudeAccuracy: coords.altitudeAccuracy,
30
+ heading: coords.heading,
31
+ speed: coords.speed,
32
+ timestamp,
33
+ };
34
+ }
35
+
36
+ function geolocationError(error: GeolocationPositionError): Error {
37
+ switch (error.code) {
38
+ case error.PERMISSION_DENIED:
39
+ return new Error('Has denegado el permiso de ubicación.');
40
+ case error.POSITION_UNAVAILABLE:
41
+ return new Error('No se pudo determinar tu ubicación.');
42
+ case error.TIMEOUT:
43
+ return new Error('Tiempo de espera agotado al obtener la ubicación.');
44
+ default:
45
+ return new Error('Error desconocido al obtener la ubicación.');
46
+ }
47
+ }
48
+
49
+ function requestPosition(options: PositionOptions): Promise<GeoLocation> {
50
+ return new Promise((resolve, reject) => {
51
+ navigator.geolocation.getCurrentPosition(
52
+ (position) => resolve(positionToGeoLocation(position)),
53
+ (error) => reject(geolocationError(error)),
54
+ options,
55
+ );
56
+ });
57
+ }
58
+
59
+ async function ensurePermission(): Promise<void> {
60
+ if (!navigator.permissions) return;
61
+
62
+ const permission = await navigator.permissions.query({name: 'geolocation'});
63
+
64
+ if (permission.state === 'denied') {
65
+ throw new Error(
66
+ 'Permiso de ubicación denegado. Actívalo en la configuración del navegador.',
67
+ );
68
+ }
69
+
70
+ if (permission.state === 'prompt') {
71
+ await new Promise<void>((resolve, reject) => {
72
+ // Escuchar cambio de estado del permiso
73
+ permission.onchange = () => {
74
+ permission.onchange = null;
75
+ if (permission.state === 'granted') {
76
+ resolve();
77
+ } else {
78
+ reject(new Error('Has denegado el permiso de ubicación.'));
79
+ }
80
+ };
81
+
82
+ // Forzar el diálogo nativo del navegador
83
+ navigator.geolocation.getCurrentPosition(
84
+ () => {
85
+ permission.onchange = null;
86
+ resolve();
87
+ },
88
+ (error) => {
89
+ permission.onchange = null;
90
+ reject(geolocationError(error));
91
+ },
92
+ {timeout: 30000},
93
+ );
94
+ });
95
+ }
96
+ }
97
+
98
+ // ─── Función principal ──────────────────────────────────
99
+
100
+ export default async function getGeoLocation(
101
+ options: GeoLocationOptions = {},
102
+ ): Promise<GeoLocation> {
103
+ if (!navigator.geolocation) {
104
+ throw new Error('Tu navegador no soporta geolocalización.');
105
+ }
106
+
107
+ await ensurePermission();
108
+
109
+ return requestPosition({
110
+ enableHighAccuracy: options.enableHighAccuracy ?? true,
111
+ timeout: options.timeout ?? 10000,
112
+ maximumAge: options.maximumAge ?? 0,
113
+ });
114
114
  }
@@ -1,3 +1,5 @@
1
+ import {delay} from "../utilities.js";
2
+
1
3
  interface FetchIntoOptions {
2
4
  url?: string;
3
5
  fetchOptions?: RequestInit;
@@ -5,6 +7,41 @@ interface FetchIntoOptions {
5
7
  transition?: string;
6
8
  }
7
9
 
10
+ export async function waitFor(
11
+ selector: string,
12
+ options: { timeout?: number } = {}
13
+ ): Promise<HTMLElement | null> {
14
+ const {timeout = 5000} = options;
15
+
16
+ const element = document.querySelector(selector);
17
+ if (element) {
18
+ return element as HTMLElement;
19
+ }
20
+
21
+ let observer: MutationObserver | undefined;
22
+ const timeoutPromise = delay(timeout).then(() => {
23
+ observer?.disconnect();
24
+ return null;
25
+ });
26
+
27
+ const observerPromise = new Promise<HTMLElement | null>((resolve) => {
28
+ observer = new MutationObserver(() => {
29
+ const element = document.querySelector(selector);
30
+ if (element) {
31
+ observer?.disconnect();
32
+ resolve(element as HTMLElement);
33
+ }
34
+ });
35
+
36
+ observer.observe(document.body, {
37
+ childList: true,
38
+ subtree: true,
39
+ });
40
+ });
41
+
42
+ return Promise.race([observerPromise, timeoutPromise]);
43
+ }
44
+
8
45
  export async function fetchInto(
9
46
  selector: string,
10
47
  options: FetchIntoOptions = {}