@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.
- package/dist/cjs/array.js +4 -5
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/async-pool-executor.js +0 -0
- package/dist/cjs/async-pool-executor.js.map +0 -0
- package/dist/cjs/browser/form-utilities.js +12 -12
- package/dist/cjs/browser/form-utilities.js.map +1 -1
- package/dist/cjs/browser/geo-location.js +1 -1
- package/dist/cjs/browser/geo-location.js.map +1 -1
- package/dist/cjs/browser/index.js +30 -2
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/browser/native-bridge.js +0 -0
- package/dist/cjs/browser/native-bridge.js.map +0 -0
- package/dist/cjs/cancellable-promise.js +0 -0
- package/dist/cjs/cancellable-promise.js.map +0 -0
- package/dist/cjs/clean-url-search-params.js +0 -0
- package/dist/cjs/clean-url-search-params.js.map +0 -0
- package/dist/cjs/collections/cache-dictionary.js +0 -0
- package/dist/cjs/collections/cache-dictionary.js.map +0 -0
- package/dist/cjs/collections/default-map.js +0 -0
- package/dist/cjs/collections/default-map.js.map +0 -0
- package/dist/cjs/collections/default-weak-map.js +0 -0
- package/dist/cjs/collections/default-weak-map.js.map +0 -0
- package/dist/cjs/collections/index.js +0 -0
- package/dist/cjs/collections/index.js.map +0 -0
- package/dist/cjs/draft.js +153 -0
- package/dist/cjs/draft.js.map +1 -0
- package/dist/cjs/event-bus.js +0 -0
- package/dist/cjs/event-bus.js.map +0 -0
- package/dist/cjs/from.js +1 -1
- package/dist/cjs/from.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/key-value-pair.js +0 -0
- package/dist/cjs/key-value-pair.js.map +0 -0
- package/dist/cjs/lazy.js +0 -0
- package/dist/cjs/lazy.js.map +0 -0
- package/dist/cjs/math.js +2 -3
- package/dist/cjs/math.js.map +1 -1
- package/dist/cjs/order.js +0 -0
- package/dist/cjs/order.js.map +0 -0
- package/dist/cjs/parse.js +3 -4
- package/dist/cjs/parse.js.map +1 -1
- package/dist/cjs/patch.js +2 -3
- package/dist/cjs/patch.js.map +1 -1
- package/dist/cjs/stopwatch.js +0 -0
- package/dist/cjs/stopwatch.js.map +0 -0
- package/dist/cjs/string.js +8 -9
- package/dist/cjs/string.js.map +1 -1
- package/dist/cjs/timer.js +0 -0
- package/dist/cjs/timer.js.map +0 -0
- package/dist/cjs/timespan.js +0 -0
- package/dist/cjs/timespan.js.map +0 -0
- package/dist/cjs/type-code.js +0 -0
- package/dist/cjs/type-code.js.map +0 -0
- package/dist/cjs/type.js +0 -0
- package/dist/cjs/type.js.map +0 -0
- package/dist/cjs/types.js +0 -0
- package/dist/cjs/types.js.map +0 -0
- package/dist/cjs/utilities.js +106 -57
- package/dist/cjs/utilities.js.map +1 -1
- package/dist/esm/array.js +0 -0
- package/dist/esm/array.js.map +0 -0
- package/dist/esm/async-pool-executor.js +0 -0
- package/dist/esm/async-pool-executor.js.map +0 -0
- package/dist/esm/browser/form-utilities.js +7 -6
- package/dist/esm/browser/form-utilities.js.map +1 -1
- package/dist/esm/browser/geo-location.js +0 -0
- package/dist/esm/browser/geo-location.js.map +0 -0
- package/dist/esm/browser/index.js +27 -0
- package/dist/esm/browser/index.js.map +1 -1
- package/dist/esm/browser/native-bridge.js +0 -0
- package/dist/esm/browser/native-bridge.js.map +0 -0
- package/dist/esm/cancellable-promise.js +0 -0
- package/dist/esm/cancellable-promise.js.map +0 -0
- package/dist/esm/clean-url-search-params.js +0 -0
- package/dist/esm/clean-url-search-params.js.map +0 -0
- package/dist/esm/collections/cache-dictionary.js +0 -0
- package/dist/esm/collections/cache-dictionary.js.map +0 -0
- package/dist/esm/collections/default-map.js +0 -0
- package/dist/esm/collections/default-map.js.map +0 -0
- package/dist/esm/collections/default-weak-map.js +0 -0
- package/dist/esm/collections/default-weak-map.js.map +0 -0
- package/dist/esm/collections/index.js +0 -0
- package/dist/esm/collections/index.js.map +0 -0
- package/dist/esm/draft.js +150 -0
- package/dist/esm/draft.js.map +1 -0
- package/dist/esm/event-bus.js +0 -0
- package/dist/esm/event-bus.js.map +0 -0
- package/dist/esm/from.js +0 -0
- package/dist/esm/from.js.map +0 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/key-value-pair.js +0 -0
- package/dist/esm/key-value-pair.js.map +0 -0
- package/dist/esm/lazy.js +0 -0
- package/dist/esm/lazy.js.map +0 -0
- package/dist/esm/math.js +0 -0
- package/dist/esm/math.js.map +0 -0
- package/dist/esm/order.js +0 -0
- package/dist/esm/order.js.map +0 -0
- package/dist/esm/parse.js +0 -0
- package/dist/esm/parse.js.map +0 -0
- package/dist/esm/patch.js +0 -0
- package/dist/esm/patch.js.map +0 -0
- package/dist/esm/stopwatch.js +0 -0
- package/dist/esm/stopwatch.js.map +0 -0
- package/dist/esm/string.js +0 -0
- package/dist/esm/string.js.map +0 -0
- package/dist/esm/timer.js +0 -0
- package/dist/esm/timer.js.map +0 -0
- package/dist/esm/timespan.js +0 -0
- package/dist/esm/timespan.js.map +0 -0
- package/dist/esm/type-code.js +0 -0
- package/dist/esm/type-code.js.map +0 -0
- package/dist/esm/type.js +0 -0
- package/dist/esm/type.js.map +0 -0
- package/dist/esm/types.js +0 -0
- package/dist/esm/types.js.map +0 -0
- package/dist/esm/utilities.js +81 -32
- package/dist/esm/utilities.js.map +1 -1
- package/dist/types/array.d.ts +0 -0
- package/dist/types/array.d.ts.map +0 -0
- package/dist/types/async-pool-executor.d.ts +0 -0
- package/dist/types/async-pool-executor.d.ts.map +0 -0
- package/dist/types/browser/form-utilities.d.ts +0 -0
- package/dist/types/browser/form-utilities.d.ts.map +1 -1
- package/dist/types/browser/geo-location.d.ts +0 -0
- package/dist/types/browser/geo-location.d.ts.map +0 -0
- package/dist/types/browser/index.d.ts +3 -0
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/browser/native-bridge.d.ts +0 -0
- package/dist/types/browser/native-bridge.d.ts.map +0 -0
- package/dist/types/cancellable-promise.d.ts +0 -0
- package/dist/types/cancellable-promise.d.ts.map +0 -0
- package/dist/types/clean-url-search-params.d.ts +0 -0
- package/dist/types/clean-url-search-params.d.ts.map +0 -0
- package/dist/types/collections/cache-dictionary.d.ts +0 -0
- package/dist/types/collections/cache-dictionary.d.ts.map +0 -0
- package/dist/types/collections/default-map.d.ts +0 -0
- package/dist/types/collections/default-map.d.ts.map +0 -0
- package/dist/types/collections/default-weak-map.d.ts +0 -0
- package/dist/types/collections/default-weak-map.d.ts.map +0 -0
- package/dist/types/collections/index.d.ts +0 -0
- package/dist/types/collections/index.d.ts.map +0 -0
- package/dist/types/draft.d.ts +17 -0
- package/dist/types/draft.d.ts.map +1 -0
- package/dist/types/event-bus.d.ts +0 -0
- package/dist/types/event-bus.d.ts.map +0 -0
- package/dist/types/from.d.ts +0 -0
- package/dist/types/from.d.ts.map +0 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/key-value-pair.d.ts +0 -0
- package/dist/types/key-value-pair.d.ts.map +0 -0
- package/dist/types/lazy.d.ts +0 -0
- package/dist/types/lazy.d.ts.map +0 -0
- package/dist/types/math.d.ts +0 -0
- package/dist/types/math.d.ts.map +0 -0
- package/dist/types/order.d.ts +0 -0
- package/dist/types/order.d.ts.map +0 -0
- package/dist/types/parse.d.ts +0 -0
- package/dist/types/parse.d.ts.map +0 -0
- package/dist/types/patch.d.ts +0 -0
- package/dist/types/patch.d.ts.map +0 -0
- package/dist/types/stopwatch.d.ts +0 -0
- package/dist/types/stopwatch.d.ts.map +0 -0
- package/dist/types/string.d.ts +0 -0
- package/dist/types/string.d.ts.map +0 -0
- package/dist/types/timer.d.ts +0 -0
- package/dist/types/timer.d.ts.map +0 -0
- package/dist/types/timespan.d.ts +0 -0
- package/dist/types/timespan.d.ts.map +0 -0
- package/dist/types/type-code.d.ts +0 -0
- package/dist/types/type-code.d.ts.map +0 -0
- package/dist/types/type.d.ts +0 -0
- package/dist/types/type.d.ts.map +0 -0
- package/dist/types/types.d.ts +0 -0
- package/dist/types/types.d.ts.map +0 -0
- package/dist/types/utilities.d.ts +3 -2
- package/dist/types/utilities.d.ts.map +1 -1
- package/dist/web/array.js +0 -0
- package/dist/web/array.js.map +0 -0
- package/dist/web/async-pool-executor.js +0 -0
- package/dist/web/async-pool-executor.js.map +0 -0
- package/dist/web/browser/form-utilities.js +7 -6
- package/dist/web/browser/form-utilities.js.map +1 -1
- package/dist/web/browser/geo-location.js +0 -0
- package/dist/web/browser/geo-location.js.map +0 -0
- package/dist/web/browser/index.js +27 -0
- package/dist/web/browser/index.js.map +1 -1
- package/dist/web/browser/native-bridge.js +0 -0
- package/dist/web/browser/native-bridge.js.map +0 -0
- package/dist/web/cancellable-promise.js +0 -0
- package/dist/web/cancellable-promise.js.map +0 -0
- package/dist/web/clean-url-search-params.js +0 -0
- package/dist/web/clean-url-search-params.js.map +0 -0
- package/dist/web/collections/cache-dictionary.js +0 -0
- package/dist/web/collections/cache-dictionary.js.map +0 -0
- package/dist/web/collections/default-map.js +0 -0
- package/dist/web/collections/default-map.js.map +0 -0
- package/dist/web/collections/default-weak-map.js +0 -0
- package/dist/web/collections/default-weak-map.js.map +0 -0
- package/dist/web/collections/index.js +0 -0
- package/dist/web/collections/index.js.map +0 -0
- package/dist/web/draft.js +150 -0
- package/dist/web/draft.js.map +1 -0
- package/dist/web/event-bus.js +0 -0
- package/dist/web/event-bus.js.map +0 -0
- package/dist/web/from.js +0 -0
- package/dist/web/from.js.map +0 -0
- package/dist/web/index.js +1 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/key-value-pair.js +0 -0
- package/dist/web/key-value-pair.js.map +0 -0
- package/dist/web/lazy.js +0 -0
- package/dist/web/lazy.js.map +0 -0
- package/dist/web/math.js +0 -0
- package/dist/web/math.js.map +0 -0
- package/dist/web/order.js +0 -0
- package/dist/web/order.js.map +0 -0
- package/dist/web/parse.js +0 -0
- package/dist/web/parse.js.map +0 -0
- package/dist/web/patch.js +0 -0
- package/dist/web/patch.js.map +0 -0
- package/dist/web/stopwatch.js +0 -0
- package/dist/web/stopwatch.js.map +0 -0
- package/dist/web/string.js +0 -0
- package/dist/web/string.js.map +0 -0
- package/dist/web/timer.js +0 -0
- package/dist/web/timer.js.map +0 -0
- package/dist/web/timespan.js +0 -0
- package/dist/web/timespan.js.map +0 -0
- package/dist/web/type-code.js +0 -0
- package/dist/web/type-code.js.map +0 -0
- package/dist/web/type.js +0 -0
- package/dist/web/type.js.map +0 -0
- package/dist/web/types.js +0 -0
- package/dist/web/types.js.map +0 -0
- package/dist/web/utilities.js +81 -32
- package/dist/web/utilities.js.map +1 -1
- package/package.json +60 -56
- package/src/browser/form-utilities.ts +7 -6
- package/src/browser/geo-location.ts +113 -113
- package/src/browser/index.ts +37 -0
- package/src/browser/native-bridge.ts +116 -116
- package/src/cancellable-promise.ts +76 -76
- package/src/collections/index.ts +2 -2
- package/src/draft.ts +268 -0
- package/src/event-bus.ts +83 -83
- package/src/index.ts +42 -37
- package/src/parse.ts +240 -240
- package/src/string.ts +128 -128
- package/src/type-code.ts +15 -15
- package/src/type.ts +371 -371
- package/src/types.ts +30 -30
- package/src/utilities.ts +480 -404
package/dist/web/utilities.js
CHANGED
|
@@ -54,37 +54,55 @@ export function isFunction(value) {
|
|
|
54
54
|
return typeof value === 'function';
|
|
55
55
|
}
|
|
56
56
|
export function deepEqual(a, b) {
|
|
57
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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 (
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if (
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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":"AAGA,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,IAAI,CAAmB,OAAgB;IACnD,IAAI,QAAQ,GAAa,IAAI,CAAC;IAE9B,MAAM,WAAW,GAAG,GAAM,EAAE;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,OAAO,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,EAAO,EAAE;QACtB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ;YACjB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ;YACxB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,GAAG,CAAC,CAAC,EAAE,IAAI;YACP,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,cAAc,CAAC,CAAC,EAAE,IAAI;YAClB,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,OAAO;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,wBAAwB,CAAC,CAAC,EAAE,IAAI;YAC5B,OAAO,OAAO,CAAC,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,cAAc;YACV,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAQD,MAAM,UAAU,UAAU,CAAC,GAAQ;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;AAC/C,CAAC;AAQD,MAAM,UAAU,QAAQ,CAAC,KAAU;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrC,CAAC;AAQD,MAAM,UAAU,QAAQ,CAAC,KAAU;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrC,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,KAAU;IAChC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACtC,CAAC;AAOD,MAAM,UAAU,QAAQ,CAAC,KAAU;IAC/B,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AASD,MAAM,UAAU,OAAO,CAAC,KAAU;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAQD,MAAM,UAAU,UAAU,CAAC,KAAU;IACjC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACvC,CAAC;
|
|
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.
|
|
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
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"jest": "^29.7.0"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"build": "
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
"
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
}
|
package/src/browser/index.ts
CHANGED
|
@@ -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 = {}
|