@develia/commons 0.4.24 → 0.4.26
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/array.d.ts.map +1 -0
- package/dist/array.js.map +1 -0
- package/dist/async-pool-executor.d.ts.map +1 -0
- package/dist/async-pool-executor.js.map +1 -0
- package/dist/browser/form-utilities.d.ts.map +1 -0
- package/dist/browser/form-utilities.js.map +1 -0
- package/dist/browser/geo-location.d.ts.map +1 -0
- package/dist/browser/geo-location.js.map +1 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/native-bridge.d.ts.map +1 -0
- package/dist/browser/native-bridge.js.map +1 -0
- package/dist/cancellable-promise.d.ts.map +1 -0
- package/dist/cancellable-promise.js.map +1 -0
- package/dist/clean-url-search-params.d.ts.map +1 -0
- package/dist/clean-url-search-params.js.map +1 -0
- package/dist/collections/cache-dictionary.d.ts.map +1 -0
- package/dist/collections/cache-dictionary.js.map +1 -0
- package/dist/collections/default-map.d.ts.map +1 -0
- package/dist/collections/default-map.js.map +1 -0
- package/dist/collections/default-weak-map.d.ts.map +1 -0
- package/dist/collections/default-weak-map.js.map +1 -0
- package/dist/{types/collections → collections}/from.d.ts +15 -6
- package/dist/collections/from.d.ts.map +1 -0
- package/dist/{esm/collections → collections}/from.js +4 -10
- package/dist/collections/from.js.map +1 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/debouncer.d.ts.map +1 -0
- package/dist/debouncer.js.map +1 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js.map +1 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/key-value-pair.d.ts.map +1 -0
- package/dist/key-value-pair.js.map +1 -0
- package/dist/keyed-debouncer.d.ts.map +1 -0
- package/dist/keyed-debouncer.js.map +1 -0
- package/dist/lazy.d.ts.map +1 -0
- package/dist/lazy.js.map +1 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js.map +1 -0
- package/dist/order.d.ts.map +1 -0
- package/dist/order.js.map +1 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js.map +1 -0
- package/dist/patch.d.ts.map +1 -0
- package/dist/patch.js.map +1 -0
- package/dist/range.d.ts.map +1 -0
- package/dist/range.js.map +1 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js.map +1 -0
- package/dist/stopwatch.d.ts.map +1 -0
- package/dist/stopwatch.js.map +1 -0
- package/dist/string.d.ts.map +1 -0
- package/dist/string.js.map +1 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js.map +1 -0
- package/dist/timespan.d.ts.map +1 -0
- package/dist/timespan.js.map +1 -0
- package/dist/triggers.d.ts.map +1 -0
- package/dist/triggers.js.map +1 -0
- package/dist/type-code.d.ts.map +1 -0
- package/dist/type-code.js.map +1 -0
- package/dist/type.d.ts.map +1 -0
- package/dist/type.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/{types/utilities.d.ts → utilities.d.ts} +4 -3
- package/dist/utilities.d.ts.map +1 -0
- package/dist/{web/utilities.js → utilities.js} +4 -3
- package/dist/utilities.js.map +1 -0
- package/package.json +13 -62
- package/src/collections/from.ts +21 -11
- package/src/utilities.ts +5 -4
- package/dist/cjs/array.js +0 -106
- package/dist/cjs/array.js.map +0 -1
- package/dist/cjs/async-pool-executor.js +0 -79
- package/dist/cjs/async-pool-executor.js.map +0 -1
- package/dist/cjs/browser/form-utilities.js +0 -162
- package/dist/cjs/browser/form-utilities.js.map +0 -1
- package/dist/cjs/browser/geo-location.js +0 -78
- package/dist/cjs/browser/geo-location.js.map +0 -1
- package/dist/cjs/browser/index.js +0 -99
- package/dist/cjs/browser/index.js.map +0 -1
- package/dist/cjs/browser/native-bridge.js +0 -81
- package/dist/cjs/browser/native-bridge.js.map +0 -1
- package/dist/cjs/cancellable-promise.js +0 -81
- package/dist/cjs/cancellable-promise.js.map +0 -1
- package/dist/cjs/clean-url-search-params.js +0 -34
- package/dist/cjs/clean-url-search-params.js.map +0 -1
- package/dist/cjs/collections/cache-dictionary.js +0 -102
- package/dist/cjs/collections/cache-dictionary.js.map +0 -1
- package/dist/cjs/collections/default-map.js +0 -45
- package/dist/cjs/collections/default-map.js.map +0 -1
- package/dist/cjs/collections/default-weak-map.js +0 -46
- package/dist/cjs/collections/default-weak-map.js.map +0 -1
- package/dist/cjs/collections/from.js +0 -778
- package/dist/cjs/collections/from.js.map +0 -1
- package/dist/cjs/collections/index.js +0 -15
- package/dist/cjs/collections/index.js.map +0 -1
- package/dist/cjs/debouncer.js +0 -121
- package/dist/cjs/debouncer.js.map +0 -1
- package/dist/cjs/draft.js +0 -225
- package/dist/cjs/draft.js.map +0 -1
- package/dist/cjs/event-bus.js +0 -71
- package/dist/cjs/event-bus.js.map +0 -1
- package/dist/cjs/functions.js +0 -262
- package/dist/cjs/functions.js.map +0 -1
- package/dist/cjs/index.js +0 -84
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/key-value-pair.js +0 -22
- package/dist/cjs/key-value-pair.js.map +0 -1
- package/dist/cjs/keyed-debouncer.js +0 -144
- package/dist/cjs/keyed-debouncer.js.map +0 -1
- package/dist/cjs/lazy.js +0 -29
- package/dist/cjs/lazy.js.map +0 -1
- package/dist/cjs/math.js +0 -37
- package/dist/cjs/math.js.map +0 -1
- package/dist/cjs/order.js +0 -9
- package/dist/cjs/order.js.map +0 -1
- package/dist/cjs/parse.js +0 -174
- package/dist/cjs/parse.js.map +0 -1
- package/dist/cjs/patch.js +0 -52
- package/dist/cjs/patch.js.map +0 -1
- package/dist/cjs/range.js +0 -154
- package/dist/cjs/range.js.map +0 -1
- package/dist/cjs/result.js +0 -3
- package/dist/cjs/result.js.map +0 -1
- package/dist/cjs/stopwatch.js +0 -46
- package/dist/cjs/stopwatch.js.map +0 -1
- package/dist/cjs/string.js +0 -154
- package/dist/cjs/string.js.map +0 -1
- package/dist/cjs/timer.js +0 -57
- package/dist/cjs/timer.js.map +0 -1
- package/dist/cjs/timespan.js +0 -367
- package/dist/cjs/timespan.js.map +0 -1
- package/dist/cjs/triggers.js +0 -103
- package/dist/cjs/triggers.js.map +0 -1
- package/dist/cjs/type-code.js +0 -18
- package/dist/cjs/type-code.js.map +0 -1
- package/dist/cjs/type.js +0 -296
- package/dist/cjs/type.js.map +0 -1
- package/dist/cjs/types.js +0 -3
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utilities.js +0 -621
- package/dist/cjs/utilities.js.map +0 -1
- package/dist/esm/array.js.map +0 -1
- package/dist/esm/async-pool-executor.js.map +0 -1
- package/dist/esm/browser/form-utilities.js.map +0 -1
- package/dist/esm/browser/geo-location.js.map +0 -1
- package/dist/esm/browser/index.js.map +0 -1
- package/dist/esm/browser/native-bridge.js.map +0 -1
- package/dist/esm/cancellable-promise.js.map +0 -1
- package/dist/esm/clean-url-search-params.js.map +0 -1
- package/dist/esm/collections/cache-dictionary.js.map +0 -1
- package/dist/esm/collections/default-map.js.map +0 -1
- package/dist/esm/collections/default-weak-map.js.map +0 -1
- package/dist/esm/collections/from.js.map +0 -1
- package/dist/esm/collections/index.js.map +0 -1
- package/dist/esm/debouncer.js.map +0 -1
- package/dist/esm/draft.js.map +0 -1
- package/dist/esm/event-bus.js.map +0 -1
- package/dist/esm/functions.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/key-value-pair.js.map +0 -1
- package/dist/esm/keyed-debouncer.js.map +0 -1
- package/dist/esm/lazy.js.map +0 -1
- package/dist/esm/math.js.map +0 -1
- package/dist/esm/order.js.map +0 -1
- package/dist/esm/parse.js.map +0 -1
- package/dist/esm/patch.js.map +0 -1
- package/dist/esm/range.js.map +0 -1
- package/dist/esm/result.js.map +0 -1
- package/dist/esm/stopwatch.js.map +0 -1
- package/dist/esm/string.js.map +0 -1
- package/dist/esm/timer.js.map +0 -1
- package/dist/esm/timespan.js.map +0 -1
- package/dist/esm/triggers.js.map +0 -1
- package/dist/esm/type-code.js.map +0 -1
- package/dist/esm/type.js.map +0 -1
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/utilities.js +0 -590
- package/dist/esm/utilities.js.map +0 -1
- package/dist/types/array.d.ts.map +0 -1
- package/dist/types/async-pool-executor.d.ts.map +0 -1
- package/dist/types/browser/form-utilities.d.ts.map +0 -1
- package/dist/types/browser/geo-location.d.ts.map +0 -1
- package/dist/types/browser/index.d.ts.map +0 -1
- package/dist/types/browser/native-bridge.d.ts.map +0 -1
- package/dist/types/cancellable-promise.d.ts.map +0 -1
- package/dist/types/clean-url-search-params.d.ts.map +0 -1
- package/dist/types/collections/cache-dictionary.d.ts.map +0 -1
- package/dist/types/collections/default-map.d.ts.map +0 -1
- package/dist/types/collections/default-weak-map.d.ts.map +0 -1
- package/dist/types/collections/from.d.ts.map +0 -1
- package/dist/types/collections/index.d.ts.map +0 -1
- package/dist/types/debouncer.d.ts.map +0 -1
- package/dist/types/draft.d.ts.map +0 -1
- package/dist/types/event-bus.d.ts.map +0 -1
- package/dist/types/functions.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/key-value-pair.d.ts.map +0 -1
- package/dist/types/keyed-debouncer.d.ts.map +0 -1
- package/dist/types/lazy.d.ts.map +0 -1
- package/dist/types/math.d.ts.map +0 -1
- package/dist/types/order.d.ts.map +0 -1
- package/dist/types/parse.d.ts.map +0 -1
- package/dist/types/patch.d.ts.map +0 -1
- package/dist/types/range.d.ts.map +0 -1
- package/dist/types/result.d.ts.map +0 -1
- package/dist/types/stopwatch.d.ts.map +0 -1
- package/dist/types/string.d.ts.map +0 -1
- package/dist/types/timer.d.ts.map +0 -1
- package/dist/types/timespan.d.ts.map +0 -1
- package/dist/types/triggers.d.ts.map +0 -1
- package/dist/types/type-code.d.ts.map +0 -1
- package/dist/types/type.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utilities.d.ts.map +0 -1
- package/dist/web/array.js +0 -98
- package/dist/web/array.js.map +0 -1
- package/dist/web/async-pool-executor.js +0 -76
- package/dist/web/async-pool-executor.js.map +0 -1
- package/dist/web/browser/form-utilities.js +0 -155
- package/dist/web/browser/form-utilities.js.map +0 -1
- package/dist/web/browser/geo-location.js +0 -75
- package/dist/web/browser/geo-location.js.map +0 -1
- package/dist/web/browser/index.js +0 -75
- package/dist/web/browser/index.js.map +0 -1
- package/dist/web/browser/native-bridge.js +0 -78
- package/dist/web/browser/native-bridge.js.map +0 -1
- package/dist/web/cancellable-promise.js +0 -78
- package/dist/web/cancellable-promise.js.map +0 -1
- package/dist/web/clean-url-search-params.js +0 -31
- package/dist/web/clean-url-search-params.js.map +0 -1
- package/dist/web/collections/cache-dictionary.js +0 -99
- package/dist/web/collections/cache-dictionary.js.map +0 -1
- package/dist/web/collections/default-map.js +0 -42
- package/dist/web/collections/default-map.js.map +0 -1
- package/dist/web/collections/default-weak-map.js +0 -43
- package/dist/web/collections/default-weak-map.js.map +0 -1
- package/dist/web/collections/from.js +0 -770
- package/dist/web/collections/from.js.map +0 -1
- package/dist/web/collections/index.js +0 -5
- package/dist/web/collections/index.js.map +0 -1
- package/dist/web/debouncer.js +0 -118
- package/dist/web/debouncer.js.map +0 -1
- package/dist/web/draft.js +0 -222
- package/dist/web/draft.js.map +0 -1
- package/dist/web/event-bus.js +0 -66
- package/dist/web/event-bus.js.map +0 -1
- package/dist/web/functions.js +0 -251
- package/dist/web/functions.js.map +0 -1
- package/dist/web/index.js +0 -40
- package/dist/web/index.js.map +0 -1
- package/dist/web/key-value-pair.js +0 -19
- package/dist/web/key-value-pair.js.map +0 -1
- package/dist/web/keyed-debouncer.js +0 -109
- package/dist/web/keyed-debouncer.js.map +0 -1
- package/dist/web/lazy.js +0 -26
- package/dist/web/lazy.js.map +0 -1
- package/dist/web/math.js +0 -33
- package/dist/web/math.js.map +0 -1
- package/dist/web/order.js +0 -7
- package/dist/web/order.js.map +0 -1
- package/dist/web/parse.js +0 -169
- package/dist/web/parse.js.map +0 -1
- package/dist/web/patch.js +0 -48
- package/dist/web/patch.js.map +0 -1
- package/dist/web/range.js +0 -151
- package/dist/web/range.js.map +0 -1
- package/dist/web/result.js +0 -2
- package/dist/web/result.js.map +0 -1
- package/dist/web/stopwatch.js +0 -40
- package/dist/web/stopwatch.js.map +0 -1
- package/dist/web/string.js +0 -142
- package/dist/web/string.js.map +0 -1
- package/dist/web/timer.js +0 -54
- package/dist/web/timer.js.map +0 -1
- package/dist/web/timespan.js +0 -365
- package/dist/web/timespan.js.map +0 -1
- package/dist/web/triggers.js +0 -99
- package/dist/web/triggers.js.map +0 -1
- package/dist/web/type-code.js +0 -16
- package/dist/web/type-code.js.map +0 -1
- package/dist/web/type.js +0 -292
- package/dist/web/type.js.map +0 -1
- package/dist/web/types.js +0 -2
- package/dist/web/types.js.map +0 -1
- package/dist/web/utilities.js.map +0 -1
- /package/dist/{types/array.d.ts → array.d.ts} +0 -0
- /package/dist/{esm/array.js → array.js} +0 -0
- /package/dist/{types/async-pool-executor.d.ts → async-pool-executor.d.ts} +0 -0
- /package/dist/{esm/async-pool-executor.js → async-pool-executor.js} +0 -0
- /package/dist/{types/browser → browser}/form-utilities.d.ts +0 -0
- /package/dist/{esm/browser → browser}/form-utilities.js +0 -0
- /package/dist/{types/browser → browser}/geo-location.d.ts +0 -0
- /package/dist/{esm/browser → browser}/geo-location.js +0 -0
- /package/dist/{types/browser → browser}/index.d.ts +0 -0
- /package/dist/{esm/browser → browser}/index.js +0 -0
- /package/dist/{types/browser → browser}/native-bridge.d.ts +0 -0
- /package/dist/{esm/browser → browser}/native-bridge.js +0 -0
- /package/dist/{types/cancellable-promise.d.ts → cancellable-promise.d.ts} +0 -0
- /package/dist/{esm/cancellable-promise.js → cancellable-promise.js} +0 -0
- /package/dist/{types/clean-url-search-params.d.ts → clean-url-search-params.d.ts} +0 -0
- /package/dist/{esm/clean-url-search-params.js → clean-url-search-params.js} +0 -0
- /package/dist/{types/collections → collections}/cache-dictionary.d.ts +0 -0
- /package/dist/{esm/collections → collections}/cache-dictionary.js +0 -0
- /package/dist/{types/collections → collections}/default-map.d.ts +0 -0
- /package/dist/{esm/collections → collections}/default-map.js +0 -0
- /package/dist/{types/collections → collections}/default-weak-map.d.ts +0 -0
- /package/dist/{esm/collections → collections}/default-weak-map.js +0 -0
- /package/dist/{types/collections → collections}/index.d.ts +0 -0
- /package/dist/{esm/collections → collections}/index.js +0 -0
- /package/dist/{types/debouncer.d.ts → debouncer.d.ts} +0 -0
- /package/dist/{esm/debouncer.js → debouncer.js} +0 -0
- /package/dist/{types/draft.d.ts → draft.d.ts} +0 -0
- /package/dist/{esm/draft.js → draft.js} +0 -0
- /package/dist/{types/event-bus.d.ts → event-bus.d.ts} +0 -0
- /package/dist/{esm/event-bus.js → event-bus.js} +0 -0
- /package/dist/{types/functions.d.ts → functions.d.ts} +0 -0
- /package/dist/{esm/functions.js → functions.js} +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{esm/index.js → index.js} +0 -0
- /package/dist/{types/key-value-pair.d.ts → key-value-pair.d.ts} +0 -0
- /package/dist/{esm/key-value-pair.js → key-value-pair.js} +0 -0
- /package/dist/{types/keyed-debouncer.d.ts → keyed-debouncer.d.ts} +0 -0
- /package/dist/{esm/keyed-debouncer.js → keyed-debouncer.js} +0 -0
- /package/dist/{types/lazy.d.ts → lazy.d.ts} +0 -0
- /package/dist/{esm/lazy.js → lazy.js} +0 -0
- /package/dist/{types/math.d.ts → math.d.ts} +0 -0
- /package/dist/{esm/math.js → math.js} +0 -0
- /package/dist/{types/order.d.ts → order.d.ts} +0 -0
- /package/dist/{esm/order.js → order.js} +0 -0
- /package/dist/{types/parse.d.ts → parse.d.ts} +0 -0
- /package/dist/{esm/parse.js → parse.js} +0 -0
- /package/dist/{types/patch.d.ts → patch.d.ts} +0 -0
- /package/dist/{esm/patch.js → patch.js} +0 -0
- /package/dist/{types/range.d.ts → range.d.ts} +0 -0
- /package/dist/{esm/range.js → range.js} +0 -0
- /package/dist/{types/result.d.ts → result.d.ts} +0 -0
- /package/dist/{esm/result.js → result.js} +0 -0
- /package/dist/{types/stopwatch.d.ts → stopwatch.d.ts} +0 -0
- /package/dist/{esm/stopwatch.js → stopwatch.js} +0 -0
- /package/dist/{types/string.d.ts → string.d.ts} +0 -0
- /package/dist/{esm/string.js → string.js} +0 -0
- /package/dist/{types/timer.d.ts → timer.d.ts} +0 -0
- /package/dist/{esm/timer.js → timer.js} +0 -0
- /package/dist/{types/timespan.d.ts → timespan.d.ts} +0 -0
- /package/dist/{esm/timespan.js → timespan.js} +0 -0
- /package/dist/{types/triggers.d.ts → triggers.d.ts} +0 -0
- /package/dist/{esm/triggers.js → triggers.js} +0 -0
- /package/dist/{types/type-code.d.ts → type-code.d.ts} +0 -0
- /package/dist/{esm/type-code.js → type-code.js} +0 -0
- /package/dist/{types/type.d.ts → type.d.ts} +0 -0
- /package/dist/{esm/type.js → type.js} +0 -0
- /package/dist/{types/types.d.ts → types.d.ts} +0 -0
- /package/dist/{esm/types.js → types.js} +0 -0
package/package.json
CHANGED
|
@@ -1,70 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@develia/commons",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.26",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Antonio Gil Espinosa",
|
|
6
6
|
"email": "antonio.gil.espinosa@gmail.com",
|
|
7
7
|
"url": "https://antoniogilespinosa.com"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
|
-
"main": "./dist/
|
|
11
|
-
"
|
|
12
|
-
"types": "./dist/types/index.d.ts",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
13
12
|
"exports": {
|
|
14
|
-
".":
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"./
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"require": "./dist/cjs/array.js",
|
|
24
|
-
"browser": "./dist/web/array.js"
|
|
25
|
-
},
|
|
26
|
-
"./functions": {
|
|
27
|
-
"types": "./dist/types/functions.d.ts",
|
|
28
|
-
"import": "./dist/esm/functions.js",
|
|
29
|
-
"require": "./dist/cjs/functions.js",
|
|
30
|
-
"browser": "./dist/web/functions.js"
|
|
31
|
-
},
|
|
32
|
-
"./utilities": {
|
|
33
|
-
"types": "./dist/types/utilities.d.ts",
|
|
34
|
-
"import": "./dist/esm/utilities.js",
|
|
35
|
-
"require": "./dist/cjs/utilities.js",
|
|
36
|
-
"browser": "./dist/web/utilities.js"
|
|
37
|
-
},
|
|
38
|
-
"./parse": {
|
|
39
|
-
"types": "./dist/types/parse.d.ts",
|
|
40
|
-
"import": "./dist/esm/parse.js",
|
|
41
|
-
"require": "./dist/cjs/parse.js",
|
|
42
|
-
"browser": "./dist/web/parse.js"
|
|
43
|
-
},
|
|
44
|
-
"./string": {
|
|
45
|
-
"types": "./dist/types/string.d.ts",
|
|
46
|
-
"import": "./dist/esm/string.js",
|
|
47
|
-
"require": "./dist/cjs/string.js",
|
|
48
|
-
"browser": "./dist/web/string.js"
|
|
49
|
-
},
|
|
50
|
-
"./math": {
|
|
51
|
-
"types": "./dist/types/math.d.ts",
|
|
52
|
-
"import": "./dist/esm/math.js",
|
|
53
|
-
"require": "./dist/cjs/math.js",
|
|
54
|
-
"browser": "./dist/web/math.js"
|
|
55
|
-
},
|
|
56
|
-
"./collections": {
|
|
57
|
-
"types": "./dist/types/collections/index.d.ts",
|
|
58
|
-
"import": "./dist/esm/collections/index.js",
|
|
59
|
-
"require": "./dist/cjs/collections/index.js",
|
|
60
|
-
"browser": "./dist/web/collections/index.js"
|
|
61
|
-
},
|
|
62
|
-
"./browser": {
|
|
63
|
-
"types": "./dist/types/browser/index.d.ts",
|
|
64
|
-
"import": "./dist/esm/browser/index.js",
|
|
65
|
-
"require": "./dist/cjs/browser/index.js",
|
|
66
|
-
"browser": "./dist/web/browser/index.js"
|
|
67
|
-
}
|
|
13
|
+
".": "./dist/index.js",
|
|
14
|
+
"./array": "./dist/array.js",
|
|
15
|
+
"./functions": "./dist/functions.js",
|
|
16
|
+
"./utilities": "./dist/utilities.js",
|
|
17
|
+
"./parse": "./dist/parse.js",
|
|
18
|
+
"./string": "./dist/string.js",
|
|
19
|
+
"./math": "./dist/math.js",
|
|
20
|
+
"./collections": "./dist/collections/index.js",
|
|
21
|
+
"./browser": "./dist/browser/index.js"
|
|
68
22
|
},
|
|
69
23
|
"license": "proprietary",
|
|
70
24
|
"devDependencies": {
|
|
@@ -77,10 +31,7 @@
|
|
|
77
31
|
},
|
|
78
32
|
"scripts": {
|
|
79
33
|
"clean": "rimraf dist || rm -rf dist",
|
|
80
|
-
"build
|
|
81
|
-
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
82
|
-
"build:web": "tsc -p tsconfig.web.json",
|
|
83
|
-
"build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:web",
|
|
34
|
+
"build": "npm run clean && tsc",
|
|
84
35
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
85
36
|
"validate": "npm test && npm run build",
|
|
86
37
|
"prepack": "npm run validate"
|
package/src/collections/from.ts
CHANGED
|
@@ -5,21 +5,30 @@ import Order from "../order.js";
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Creates a new From instance from an Iterable
|
|
8
|
+
* Creates a new From instance from an Iterable, a Supplier of an Iterable, or the entries of a plain object.
|
|
9
9
|
* @template T - The type of elements in the source.
|
|
10
10
|
* @param {Iterable<T> | Supplier<Iterable<T>>} source - The source data.
|
|
11
|
-
* @returns {From<T>
|
|
11
|
+
* @returns {From<T>} A new From instance.
|
|
12
12
|
* @throws {Error} If source is null or invalid.
|
|
13
13
|
*/
|
|
14
|
-
export default function from<T>(source: Iterable<T> | Supplier<Iterable<T>>): From<T
|
|
14
|
+
export default function from<T>(source: Iterable<T> | Supplier<Iterable<T>>): From<T>;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new From instance from the enumerable own and inherited properties of a plain object.
|
|
17
|
+
* @template TValue - The type of the property values.
|
|
18
|
+
* @param {Record<string, TValue>} source - The source object.
|
|
19
|
+
* @returns {From<KeyValuePair<string, TValue>>} A From instance of key-value pairs.
|
|
20
|
+
* @throws {Error} If source is null or invalid.
|
|
21
|
+
*/
|
|
22
|
+
export default function from<TValue>(source: Record<string, TValue>): From<KeyValuePair<string, TValue>>;
|
|
23
|
+
export default function from(source: Iterable<unknown> | Supplier<Iterable<unknown>> | Record<string, unknown>): From<unknown> {
|
|
15
24
|
if (source == null)
|
|
16
25
|
throw new Error("Source is null.");
|
|
17
26
|
if (typeof source === 'function')
|
|
18
|
-
return From.fn
|
|
19
|
-
if (typeof source[Symbol.iterator] === 'function') {
|
|
20
|
-
return From.iterable<
|
|
27
|
+
return From.fn(source);
|
|
28
|
+
if (Symbol.iterator in source && typeof source[Symbol.iterator] === 'function') {
|
|
29
|
+
return From.iterable(source as Iterable<unknown>);
|
|
21
30
|
} else if (typeof source === 'object') {
|
|
22
|
-
return From.object(source);
|
|
31
|
+
return From.object(source as Record<string, unknown>);
|
|
23
32
|
}
|
|
24
33
|
|
|
25
34
|
throw new Error("Invalid source.");
|
|
@@ -33,11 +42,12 @@ export class From<T> implements Iterable<T> {
|
|
|
33
42
|
|
|
34
43
|
/**
|
|
35
44
|
* Creates a From instance from an object's entries.
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
45
|
+
* @template TValue - The type of the property values.
|
|
46
|
+
* @param {Record<string, TValue>} obj - The object to convert to pairs.
|
|
47
|
+
* @returns {From<KeyValuePair<string, TValue>>} A From instance of key-value pairs.
|
|
38
48
|
*/
|
|
39
|
-
public static object(obj:
|
|
40
|
-
return new From<KeyValuePair<
|
|
49
|
+
public static object<TValue>(obj: Record<string, TValue>): From<KeyValuePair<string, TValue>> {
|
|
50
|
+
return new From<KeyValuePair<string, TValue>>(function () {
|
|
41
51
|
return toPairs(obj);
|
|
42
52
|
});
|
|
43
53
|
}
|
package/src/utilities.ts
CHANGED
|
@@ -491,12 +491,13 @@ export function isEmptyOrWhitespace(value: any): boolean {
|
|
|
491
491
|
/**
|
|
492
492
|
* Converts an object into an array of key-value pairs.
|
|
493
493
|
*
|
|
494
|
-
* @
|
|
495
|
-
* @
|
|
494
|
+
* @template TValue - The type of the property values.
|
|
495
|
+
* @param {Record<string, TValue>} obj - The object to convert.
|
|
496
|
+
* @return {KeyValuePair<string, TValue>[]} - The array of key-value pairs.
|
|
496
497
|
*/
|
|
497
|
-
export function toPairs(obj: Record<string,
|
|
498
|
+
export function toPairs<TValue>(obj: Record<string, TValue>): KeyValuePair<string, TValue>[] {
|
|
498
499
|
|
|
499
|
-
|
|
500
|
+
const output: KeyValuePair<string, TValue>[] = [];
|
|
500
501
|
for (const key in obj) {
|
|
501
502
|
output.push(new KeyValuePair(key, obj[key]));
|
|
502
503
|
}
|
package/dist/cjs/array.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pull = pull;
|
|
4
|
-
exports.chunk = chunk;
|
|
5
|
-
exports.clear = clear;
|
|
6
|
-
exports.remove = remove;
|
|
7
|
-
exports.pushIfAbsent = pushIfAbsent;
|
|
8
|
-
exports.patchArray = patchArray;
|
|
9
|
-
const utilities_js_1 = require("./utilities.js");
|
|
10
|
-
/**
|
|
11
|
-
* Removes all given values from the provided array and returns the number of removed elements.
|
|
12
|
-
* The operation mutates the original array.
|
|
13
|
-
* @template T
|
|
14
|
-
* @param {Array<T>} array - The array to modify by removing specified items.
|
|
15
|
-
* @param {...T} items - The values to remove from the array.
|
|
16
|
-
* @return {number} The number of elements removed from the array.
|
|
17
|
-
*/
|
|
18
|
-
function pull(array, ...items) {
|
|
19
|
-
let output = 0;
|
|
20
|
-
for (const item of items) {
|
|
21
|
-
let index;
|
|
22
|
-
while ((index = array.findIndex(val => Object.is(val, item))) !== -1) {
|
|
23
|
-
array.splice(index, 1);
|
|
24
|
-
output++;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return output;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Splits an array into chunks of a given size.
|
|
31
|
-
* @template T
|
|
32
|
-
* @param {Array<T>} array - The array to split.
|
|
33
|
-
* @param {number} size - The size of each chunk.
|
|
34
|
-
* @return {Array<Array<T>>} The array of chunks.
|
|
35
|
-
*/
|
|
36
|
-
function chunk(array, size) {
|
|
37
|
-
if (size <= 0)
|
|
38
|
-
throw new Error("Size must be greater than 0");
|
|
39
|
-
const result = [];
|
|
40
|
-
for (let i = 0; i < array.length; i += size) {
|
|
41
|
-
result.push(array.slice(i, i + size));
|
|
42
|
-
}
|
|
43
|
-
return result;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Removes all elements from the array, mutating it.
|
|
47
|
-
* @template T
|
|
48
|
-
* @param {Array<T>} array - The array to clear.
|
|
49
|
-
*/
|
|
50
|
-
function clear(array) {
|
|
51
|
-
array.length = 0;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Removes all elements from the array that satisfy the predicate.
|
|
55
|
-
* The operation mutates the original array.
|
|
56
|
-
* @template T
|
|
57
|
-
* @return {Array<T>} An array of removed elements.
|
|
58
|
-
*/
|
|
59
|
-
function remove(array, predicate) {
|
|
60
|
-
const removed = [];
|
|
61
|
-
let i = 0;
|
|
62
|
-
while (i < array.length) {
|
|
63
|
-
if (predicate(array[i])) {
|
|
64
|
-
removed.push(array[i]);
|
|
65
|
-
array.splice(i, 1); // muta el array
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
i++;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return removed;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Adds an element to the array if it's not already present.
|
|
75
|
-
* The operation mutates the original array.
|
|
76
|
-
* @template T
|
|
77
|
-
* @param {Array<T>} array - The array to modify.
|
|
78
|
-
* @param {T} element - The element to add if absent.
|
|
79
|
-
* @return {boolean} True if the element was added, false otherwise.
|
|
80
|
-
*/
|
|
81
|
-
function pushIfAbsent(array, element) {
|
|
82
|
-
if (!array.includes(element)) {
|
|
83
|
-
array.push(element);
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Patches the Array prototype with the methods defined in this module:
|
|
90
|
-
* - pull
|
|
91
|
-
* - chunk
|
|
92
|
-
* - clear
|
|
93
|
-
* - remove
|
|
94
|
-
* - pushIfAbsent
|
|
95
|
-
*
|
|
96
|
-
* Each method is added only if it doesn't already exist on Array.prototype.
|
|
97
|
-
*/
|
|
98
|
-
function patchArray() {
|
|
99
|
-
const target = Array;
|
|
100
|
-
(0, utilities_js_1.monkeyPatch)(target, pull);
|
|
101
|
-
(0, utilities_js_1.monkeyPatch)(target, chunk);
|
|
102
|
-
(0, utilities_js_1.monkeyPatch)(target, clear);
|
|
103
|
-
(0, utilities_js_1.monkeyPatch)(target, remove);
|
|
104
|
-
(0, utilities_js_1.monkeyPatch)(target, pushIfAbsent);
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=array.js.map
|
package/dist/cjs/array.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":";;AAsBA,oBAWC;AASD,sBAOC;AAOD,sBAEC;AAQD,wBAcC;AAUD,oCAMC;AAYD,gCAQC;AAnHD,iDAA2C;AAa3C;;;;;;;GAOG;AACH,SAAgB,IAAI,CAAI,KAAe,EAAE,GAAG,KAAe;IAEvD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAI,KAAe,EAAE,IAAY;IAClD,IAAI,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAI,KAAe;IACpC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAI,KAAe,EAAC,SAAuB;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACxC,CAAC;aAAM,CAAC;YACJ,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAI,KAAe,EAAE,OAAU;IACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,UAAU;IACtB,MAAM,MAAM,GAAG,KAA2C,CAAC;IAE3D,IAAA,0BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAA,0BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,IAAA,0BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAA,0BAAW,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import type {Constructor, Predicate} from \"./types.js\";\nimport {monkeyPatch} from \"./utilities.js\";\n\ndeclare global {\n interface Array<T> {\n pull(...items: Array<T>): number;\n chunk(size: number): Array<Array<T>>;\n clear(): void;\n remove(predicate: Predicate<T>): Array<T>;\n pushIfAbsent(element: T): boolean;\n }\n}\n\n\n/**\n * Removes all given values from the provided array and returns the number of removed elements.\n * The operation mutates the original array.\n * @template T\n * @param {Array<T>} array - The array to modify by removing specified items.\n * @param {...T} items - The values to remove from the array.\n * @return {number} The number of elements removed from the array.\n */\nexport function pull<T>(array: Array<T>, ...items: Array<T>): number {\n\n let output = 0;\n for (const item of items) {\n let index;\n while ((index = array.findIndex(val => Object.is(val, item))) !== -1) {\n array.splice(index, 1);\n output++;\n }\n }\n return output;\n}\n\n/**\n * Splits an array into chunks of a given size.\n * @template T\n * @param {Array<T>} array - The array to split.\n * @param {number} size - The size of each chunk.\n * @return {Array<Array<T>>} The array of chunks.\n */\nexport function chunk<T>(array: Array<T>, size: number): Array<Array<T>> {\n if (size <= 0) throw new Error(\"Size must be greater than 0\");\n const result: Array<Array<T>> = [];\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\n/**\n * Removes all elements from the array, mutating it.\n * @template T\n * @param {Array<T>} array - The array to clear.\n */\nexport function clear<T>(array: Array<T>): void {\n array.length = 0;\n}\n\n/**\n * Removes all elements from the array that satisfy the predicate.\n * The operation mutates the original array.\n * @template T\n * @return {Array<T>} An array of removed elements.\n */\nexport function remove<T>(array: Array<T>,predicate: Predicate<T>): Array<T> {\n const removed: Array<T> = [];\n let i = 0;\n\n while (i < array.length) {\n if (predicate(array[i])) {\n removed.push(array[i]);\n array.splice(i, 1); // muta el array\n } else {\n i++;\n }\n }\n\n return removed;\n}\n\n/**\n * Adds an element to the array if it's not already present.\n * The operation mutates the original array.\n * @template T\n * @param {Array<T>} array - The array to modify.\n * @param {T} element - The element to add if absent.\n * @return {boolean} True if the element was added, false otherwise.\n */\nexport function pushIfAbsent<T>(array: Array<T>, element: T): boolean {\n if (!array.includes(element)) {\n array.push(element);\n return true;\n }\n return false;\n}\n\n/**\n * Patches the Array prototype with the methods defined in this module:\n * - pull\n * - chunk\n * - clear\n * - remove\n * - pushIfAbsent\n *\n * Each method is added only if it doesn't already exist on Array.prototype.\n */\nexport function patchArray(): void {\n const target = Array as unknown as Constructor<Array<any>>;\n\n monkeyPatch(target, pull);\n monkeyPatch(target, chunk);\n monkeyPatch(target, clear);\n monkeyPatch(target, remove);\n monkeyPatch(target, pushIfAbsent);\n}"]}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utilities_js_1 = require("./utilities.js");
|
|
4
|
-
function normalizeMaxConcurrency(value) {
|
|
5
|
-
if (!Number.isInteger(value) || value < 1) {
|
|
6
|
-
throw new RangeError("maxConcurrency must be a positive integer");
|
|
7
|
-
}
|
|
8
|
-
return value;
|
|
9
|
-
}
|
|
10
|
-
function normalizeCheckInterval(value) {
|
|
11
|
-
return Number.isFinite(value) ? Math.max(0, value) : 0;
|
|
12
|
-
}
|
|
13
|
-
class AsyncPoolExecutor {
|
|
14
|
-
get maxConcurrency() {
|
|
15
|
-
return this._maxConcurrency;
|
|
16
|
-
}
|
|
17
|
-
set maxConcurrency(value) {
|
|
18
|
-
this._maxConcurrency = normalizeMaxConcurrency(value);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* @param {number} maxConcurrency - The maximum number of concurrent tasks allowed.
|
|
22
|
-
* @param {number} [checkInterval=50] - The interval, in milliseconds, to check for capacity to run new tasks. Defaults to 50 ms.
|
|
23
|
-
*/
|
|
24
|
-
constructor(maxConcurrency, checkInterval = 50) {
|
|
25
|
-
this._taskQueue = [];
|
|
26
|
-
this._maxConcurrency = normalizeMaxConcurrency(maxConcurrency);
|
|
27
|
-
this._checkIntervalMs = normalizeCheckInterval(checkInterval);
|
|
28
|
-
this._activeTasks = 0;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Submits a deferred task to a queue for asynchronous execution and returns a Promise resolving to its result.
|
|
32
|
-
* @template T
|
|
33
|
-
* @param {Supplier<T>} task - The deferred task to be executed asynchronously.
|
|
34
|
-
*/
|
|
35
|
-
submit(task) {
|
|
36
|
-
const promise = new Promise((resolve, reject) => {
|
|
37
|
-
this._taskQueue.push({ task, resolve, reject });
|
|
38
|
-
});
|
|
39
|
-
if (this._process != null)
|
|
40
|
-
return promise;
|
|
41
|
-
this._process = setTimeout(async () => {
|
|
42
|
-
while (this._taskQueue.length > 0) {
|
|
43
|
-
while (this._activeTasks >= this._maxConcurrency) {
|
|
44
|
-
await (0, utilities_js_1.delay)(this._checkIntervalMs);
|
|
45
|
-
}
|
|
46
|
-
const queuedTask = this._taskQueue.shift();
|
|
47
|
-
if (queuedTask) {
|
|
48
|
-
this._activeTasks++;
|
|
49
|
-
setTimeout(async () => {
|
|
50
|
-
try {
|
|
51
|
-
queuedTask.resolve(await queuedTask.task());
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
queuedTask.reject(error);
|
|
55
|
-
}
|
|
56
|
-
finally {
|
|
57
|
-
this._activeTasks--;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
this._process = null;
|
|
63
|
-
}, 0);
|
|
64
|
-
return promise;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Waits until all tasks (both queued and active) are completed.
|
|
68
|
-
* This method resolves only when there are no pending tasks.
|
|
69
|
-
*
|
|
70
|
-
* @return {Promise<void>} A promise that resolves when all tasks are complete.
|
|
71
|
-
*/
|
|
72
|
-
async shutdown() {
|
|
73
|
-
while (this._taskQueue.length > 0 || this._activeTasks > 0) {
|
|
74
|
-
await (0, utilities_js_1.delay)(this._checkIntervalMs);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
exports.default = AsyncPoolExecutor;
|
|
79
|
-
//# sourceMappingURL=async-pool-executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async-pool-executor.js","sourceRoot":"","sources":["../../src/async-pool-executor.ts"],"names":[],"mappings":";;AACA,iDAAqC;AAQrC,SAAS,uBAAuB,CAAC,KAAa;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IACzC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAqB,iBAAiB;IAGlC,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,cAAc,CAAC,KAAa;QAC5B,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAE1D,CAAC;IAQD;;;OAGG;IACH,YAAY,cAAsB,EAAE,gBAAwB,EAAE;QAPtD,eAAU,GAA2B,EAAE,CAAC;QAQ5C,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAI,IAA8B;QAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YACrB,OAAO,OAAO,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAElC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEhC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC/C,MAAM,IAAA,oBAAK,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACvC,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC3C,IAAI,UAAU,EAAE,CAAC;oBACb,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,UAAU,CAAC,KAAK,IAAI,EAAE;wBAClB,IAAI,CAAC;4BACD,UAAU,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;wBAChD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACb,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;gCAAS,CAAC;4BACP,IAAI,CAAC,YAAY,EAAE,CAAC;wBACxB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;YAGL,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO,OAAO,CAAC;IAGnB,CAAC;IAGD;;;;;OAKG;IACI,KAAK,CAAC,QAAQ;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAA,oBAAK,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;CACJ;AAtFD,oCAsFC","sourcesContent":["import type {Supplier} from \"./types.js\";\nimport {delay} from \"./utilities.js\";\n\ntype QueuedTask<T> = {\n task: Supplier<T | Promise<T>>;\n resolve: (value: T) => void;\n reject: (reason?: any) => void;\n};\n\nfunction normalizeMaxConcurrency(value: number): number {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError(\"maxConcurrency must be a positive integer\");\n }\n return value;\n}\n\nfunction normalizeCheckInterval(value: number): number {\n return Number.isFinite(value) ? Math.max(0, value) : 0;\n}\n\nexport default class AsyncPoolExecutor {\n private _checkIntervalMs: number;\n\n get maxConcurrency(): number {\n return this._maxConcurrency;\n }\n\n set maxConcurrency(value: number) {\n this._maxConcurrency = normalizeMaxConcurrency(value);\n\n }\n\n private _process: any;\n private _maxConcurrency: number;\n private _activeTasks: number;\n private _taskQueue: Array<QueuedTask<any>> = [];\n\n\n /**\n * @param {number} maxConcurrency - The maximum number of concurrent tasks allowed.\n * @param {number} [checkInterval=50] - The interval, in milliseconds, to check for capacity to run new tasks. Defaults to 50 ms.\n */\n constructor(maxConcurrency: number, checkInterval: number = 50) {\n this._maxConcurrency = normalizeMaxConcurrency(maxConcurrency);\n this._checkIntervalMs = normalizeCheckInterval(checkInterval);\n this._activeTasks = 0;\n }\n\n /**\n * Submits a deferred task to a queue for asynchronous execution and returns a Promise resolving to its result.\n * @template T\n * @param {Supplier<T>} task - The deferred task to be executed asynchronously.\n */\n public submit<T>(task: Supplier<T | Promise<T>>): Promise<T> {\n const promise = new Promise<T>((resolve, reject) => {\n this._taskQueue.push({task, resolve, reject});\n });\n\n if (this._process != null)\n return promise;\n\n this._process = setTimeout(async () => {\n\n while (this._taskQueue.length > 0) {\n\n while (this._activeTasks >= this._maxConcurrency) {\n await delay(this._checkIntervalMs);\n }\n\n const queuedTask = this._taskQueue.shift();\n if (queuedTask) {\n this._activeTasks++;\n setTimeout(async () => {\n try {\n queuedTask.resolve(await queuedTask.task());\n } catch (error) {\n queuedTask.reject(error);\n } finally {\n this._activeTasks--;\n }\n });\n }\n\n\n }\n\n this._process = null;\n }, 0);\n\n return promise;\n\n\n }\n\n\n /**\n * Waits until all tasks (both queued and active) are completed.\n * This method resolves only when there are no pending tasks.\n *\n * @return {Promise<void>} A promise that resolves when all tasks are complete.\n */\n public async shutdown(): Promise<void> {\n while (this._taskQueue.length > 0 || this._activeTasks > 0) {\n await delay(this._checkIntervalMs);\n }\n }\n}\n"]}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ajaxSubmit = ajaxSubmit;
|
|
4
|
-
exports.submitForm = submitForm;
|
|
5
|
-
exports.formToObject = formToObject;
|
|
6
|
-
exports.objectToFormData = objectToFormData;
|
|
7
|
-
exports.ajaxSubmission = ajaxSubmission;
|
|
8
|
-
/**
|
|
9
|
-
* Submits a form via AJAX and returns a Promise that resolves to the Response object.
|
|
10
|
-
*
|
|
11
|
-
* @param {HTMLFormElement | string} selectorOrElement - The form element or selector.
|
|
12
|
-
* @return {Promise<Response>} A Promise that resolves to the Response object.
|
|
13
|
-
* @throws {Error} If the element is invalid.
|
|
14
|
-
*/
|
|
15
|
-
async function ajaxSubmit(selectorOrElement) {
|
|
16
|
-
const form = typeof selectorOrElement === 'string'
|
|
17
|
-
? document.querySelector(selectorOrElement)
|
|
18
|
-
: selectorOrElement;
|
|
19
|
-
if (!(form instanceof HTMLFormElement)) {
|
|
20
|
-
throw new Error("Invalid element.");
|
|
21
|
-
}
|
|
22
|
-
const formData = new FormData(form);
|
|
23
|
-
const method = form.getAttribute('method') ?? form.method;
|
|
24
|
-
const action = form.getAttribute('action') ?? form.action;
|
|
25
|
-
return await fetch(action, {
|
|
26
|
-
method: method,
|
|
27
|
-
body: formData,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function submitForm(url, data, method = 'POST', target) {
|
|
31
|
-
const form = document.createElement('form');
|
|
32
|
-
form.method = method.toUpperCase();
|
|
33
|
-
form.action = url;
|
|
34
|
-
form.style.display = 'none';
|
|
35
|
-
if (target) {
|
|
36
|
-
form.target = target;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Recursively appends inputs to the form, supporting nested keys and arrays.
|
|
40
|
-
* @param keyPrefix - Key path, e.g., 'user[name]' or 'tags[]'
|
|
41
|
-
* @param value - The value to append (can be nested)
|
|
42
|
-
*/
|
|
43
|
-
const appendInput = (key, value) => {
|
|
44
|
-
const input = document.createElement('input');
|
|
45
|
-
input.type = 'hidden';
|
|
46
|
-
input.name = key;
|
|
47
|
-
input.value = String(value);
|
|
48
|
-
form.appendChild(input);
|
|
49
|
-
};
|
|
50
|
-
const appendInputs = (keyPrefix, value) => {
|
|
51
|
-
if (Array.isArray(value)) {
|
|
52
|
-
for (const val of value) {
|
|
53
|
-
appendInputs(`${keyPrefix}[]`, val);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else if (value instanceof Date) {
|
|
57
|
-
appendInput(keyPrefix, value.toISOString());
|
|
58
|
-
}
|
|
59
|
-
else if (typeof value === 'object' && value !== null) {
|
|
60
|
-
for (const subKey in value) {
|
|
61
|
-
if (Object.prototype.hasOwnProperty.call(value, subKey)) {
|
|
62
|
-
appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
appendInput(keyPrefix, value);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
for (const key in data) {
|
|
71
|
-
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
72
|
-
appendInputs(key, data[key]);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
document.body.appendChild(form);
|
|
76
|
-
form.submit();
|
|
77
|
-
}
|
|
78
|
-
function formToObject(form) {
|
|
79
|
-
const fd = new FormData(form);
|
|
80
|
-
const out = {};
|
|
81
|
-
for (const [key, value] of fd.entries()) {
|
|
82
|
-
if (Object.prototype.hasOwnProperty.call(out, key)) {
|
|
83
|
-
const current = out[key];
|
|
84
|
-
if (Array.isArray(current)) {
|
|
85
|
-
current.push(value);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
out[key] = [current, value];
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
out[key] = value;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return out;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Converts an object to `FormData` format recursively.
|
|
99
|
-
*
|
|
100
|
-
* @param {Record<string, any>} data - The object data to convert.
|
|
101
|
-
* @param {FormData} formData - The `FormData` instance to append data to.
|
|
102
|
-
* @param {string} parentKey - The parent key to append to child keys in the `FormData`.
|
|
103
|
-
* @returns {FormData} - The `FormData` instance with the converted data.
|
|
104
|
-
*/
|
|
105
|
-
function _appendFormDataValue(formData, key, value) {
|
|
106
|
-
if (value instanceof Date) {
|
|
107
|
-
formData.append(key, value.toISOString());
|
|
108
|
-
}
|
|
109
|
-
else if (value instanceof File) {
|
|
110
|
-
formData.append(key, value);
|
|
111
|
-
}
|
|
112
|
-
else if (Array.isArray(value)) {
|
|
113
|
-
for (let index = 0; index < value.length; index++) {
|
|
114
|
-
_appendFormDataValue(formData, `${key}[${index}]`, value[index]);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else if (value !== null && typeof value === 'object') {
|
|
118
|
-
_objectToFormData(value, formData, key);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
formData.append(key, value);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function _objectToFormData(data, formData, parentKey = '') {
|
|
125
|
-
for (const key in data) {
|
|
126
|
-
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
127
|
-
_appendFormDataValue(formData, parentKey ? `${parentKey}[${key}]` : key, data[key]);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return formData;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Converts an object into FormData.
|
|
134
|
-
*
|
|
135
|
-
* @param {Record<string, any>} data - The object to be converted into FormData.
|
|
136
|
-
* @return {FormData} - The FormData object representing the converted data.
|
|
137
|
-
*/
|
|
138
|
-
function objectToFormData(data) {
|
|
139
|
-
let formData = new FormData();
|
|
140
|
-
return _objectToFormData(data, formData);
|
|
141
|
-
}
|
|
142
|
-
function ajaxSubmission(selectorOrElement, onSuccess, onFailure) {
|
|
143
|
-
const forms = typeof selectorOrElement === 'string'
|
|
144
|
-
? Array.from(document.querySelectorAll(selectorOrElement))
|
|
145
|
-
.filter(el => el instanceof HTMLFormElement)
|
|
146
|
-
: [selectorOrElement];
|
|
147
|
-
for (const form of forms) {
|
|
148
|
-
form.addEventListener('submit', async (event) => {
|
|
149
|
-
event.preventDefault();
|
|
150
|
-
try {
|
|
151
|
-
let result = await ajaxSubmit(event.currentTarget);
|
|
152
|
-
if (onSuccess)
|
|
153
|
-
onSuccess(result);
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
if (onFailure)
|
|
157
|
-
onFailure(e);
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=form-utilities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-utilities.js","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Consumer} from \"../types.js\";\n\n\n/**\n * Submits a form via AJAX and returns a Promise that resolves to the Response object.\n *\n * @param {HTMLFormElement | string} selectorOrElement - The form element or selector.\n * @return {Promise<Response>} A Promise that resolves to the Response object.\n * @throws {Error} If the element is invalid.\n */\nexport async function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> {\n\n const form = typeof selectorOrElement === 'string'\n ? document.querySelector(selectorOrElement)\n : selectorOrElement;\n\n if (!(form instanceof HTMLFormElement)) {\n throw new Error(\"Invalid element.\");\n }\n\n\n const formData = new FormData(form);\n const method = form.getAttribute('method') as string ?? form.method;\n const action = form.getAttribute('action') as string ?? form.action;\n\n return await fetch(action, {\n method: method,\n body: formData,\n });\n}\n\n\nexport function submitForm(\n url: string,\n data: Record<string, any>,\n method: 'POST' | 'GET' = 'POST',\n target?: '_blank' | '_self' | '_parent' | '_top'\n): void {\n\n const form = document.createElement('form');\n form.method = method.toUpperCase();\n form.action = url;\n form.style.display = 'none';\n\n if (target) {\n form.target = target;\n }\n\n /**\n * Recursively appends inputs to the form, supporting nested keys and arrays.\n * @param keyPrefix - Key path, e.g., 'user[name]' or 'tags[]'\n * @param value - The value to append (can be nested)\n */\n const appendInput = (key: string, value: any) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = key;\n input.value = String(value);\n form.appendChild(input);\n };\n\n const appendInputs = (keyPrefix: string, value: any) => {\n if (Array.isArray(value)) {\n for (const val of value) {\n appendInputs(`${keyPrefix}[]`, val);\n }\n } else if (value instanceof Date) {\n appendInput(keyPrefix, value.toISOString());\n } else if (typeof value === 'object' && value !== null) {\n for (const subKey in value) {\n if (Object.prototype.hasOwnProperty.call(value, subKey)) {\n appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);\n }\n }\n } else {\n appendInput(keyPrefix, value);\n }\n };\n\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n appendInputs(key, data[key]);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n}\n\nexport function formToObject(form: HTMLFormElement): Record<string, FormDataEntryValue | FormDataEntryValue[]> {\n const fd = new FormData(form);\n const out: Record<string, FormDataEntryValue | FormDataEntryValue[]> = {};\n\n for (const [key, value] of fd.entries()) {\n if (Object.prototype.hasOwnProperty.call(out, key)) {\n const current = out[key];\n if (Array.isArray(current)) {\n current.push(value);\n } else {\n out[key] = [current, value];\n }\n } else {\n out[key] = value;\n }\n }\n\n return out;\n}\n\n/**\n * Converts an object to `FormData` format recursively.\n *\n * @param {Record<string, any>} data - The object data to convert.\n * @param {FormData} formData - The `FormData` instance to append data to.\n * @param {string} parentKey - The parent key to append to child keys in the `FormData`.\n * @returns {FormData} - The `FormData` instance with the converted data.\n */\nfunction _appendFormDataValue(formData: FormData, key: string, value: any): void {\n if (value instanceof Date) {\n formData.append(key, value.toISOString());\n } else if (value instanceof File) {\n formData.append(key, value);\n } else if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n _appendFormDataValue(formData, `${key}[${index}]`, value[index]);\n }\n } else if (value !== null && typeof value === 'object') {\n _objectToFormData(value, formData, key);\n } else {\n formData.append(key, value);\n }\n}\n\nfunction _objectToFormData(data: Record<string, any>, formData: FormData, parentKey: string = ''): FormData {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n _appendFormDataValue(formData, parentKey ? `${parentKey}[${key}]` : key, data[key]);\n }\n }\n\n return formData;\n}\n\n/**\n * Converts an object into FormData.\n *\n * @param {Record<string, any>} data - The object to be converted into FormData.\n * @return {FormData} - The FormData object representing the converted data.\n */\nexport function objectToFormData(data: Record<string, any>): FormData {\n let formData = new FormData();\n return _objectToFormData(data, formData);\n}\n\nexport function ajaxSubmission(\n selectorOrElement: HTMLFormElement | string,\n onSuccess?: Consumer<any>,\n onFailure?: Consumer<any>\n): void {\n\n const forms: HTMLFormElement[] = typeof selectorOrElement === 'string'\n ? Array.from(document.querySelectorAll(selectorOrElement))\n .filter(el => el instanceof HTMLFormElement) as HTMLFormElement[]\n : [selectorOrElement];\n\n for (const form of forms) {\n form.addEventListener('submit', async (event) => {\n event.preventDefault();\n\n try {\n let result = await ajaxSubmit(event.currentTarget as HTMLFormElement);\n if (onSuccess)\n onSuccess(result);\n } catch (e) {\n if (onFailure)\n onFailure(e);\n }\n\n\n });\n }\n}"]}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// ─── Tipos ───────────────────────────────────────────────
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.default = getGeoLocation;
|
|
5
|
-
// ─── Helpers ─────────────────────────────────────────────
|
|
6
|
-
function positionToGeoLocation(position) {
|
|
7
|
-
const { coords, timestamp } = position;
|
|
8
|
-
return {
|
|
9
|
-
latitude: coords.latitude,
|
|
10
|
-
longitude: coords.longitude,
|
|
11
|
-
accuracy: coords.accuracy,
|
|
12
|
-
altitude: coords.altitude,
|
|
13
|
-
altitudeAccuracy: coords.altitudeAccuracy,
|
|
14
|
-
heading: coords.heading,
|
|
15
|
-
speed: coords.speed,
|
|
16
|
-
timestamp,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function geolocationError(error) {
|
|
20
|
-
switch (error.code) {
|
|
21
|
-
case error.PERMISSION_DENIED:
|
|
22
|
-
return new Error('Has denegado el permiso de ubicación.');
|
|
23
|
-
case error.POSITION_UNAVAILABLE:
|
|
24
|
-
return new Error('No se pudo determinar tu ubicación.');
|
|
25
|
-
case error.TIMEOUT:
|
|
26
|
-
return new Error('Tiempo de espera agotado al obtener la ubicación.');
|
|
27
|
-
default:
|
|
28
|
-
return new Error('Error desconocido al obtener la ubicación.');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function requestPosition(options) {
|
|
32
|
-
return new Promise((resolve, reject) => {
|
|
33
|
-
navigator.geolocation.getCurrentPosition((position) => resolve(positionToGeoLocation(position)), (error) => reject(geolocationError(error)), options);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async function ensurePermission() {
|
|
37
|
-
if (!navigator.permissions)
|
|
38
|
-
return;
|
|
39
|
-
const permission = await navigator.permissions.query({ name: 'geolocation' });
|
|
40
|
-
if (permission.state === 'denied') {
|
|
41
|
-
throw new Error('Permiso de ubicación denegado. Actívalo en la configuración del navegador.');
|
|
42
|
-
}
|
|
43
|
-
if (permission.state === 'prompt') {
|
|
44
|
-
await new Promise((resolve, reject) => {
|
|
45
|
-
// Escuchar cambio de estado del permiso
|
|
46
|
-
permission.onchange = () => {
|
|
47
|
-
permission.onchange = null;
|
|
48
|
-
if (permission.state === 'granted') {
|
|
49
|
-
resolve();
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
reject(new Error('Has denegado el permiso de ubicación.'));
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
// Forzar el diálogo nativo del navegador
|
|
56
|
-
navigator.geolocation.getCurrentPosition(() => {
|
|
57
|
-
permission.onchange = null;
|
|
58
|
-
resolve();
|
|
59
|
-
}, (error) => {
|
|
60
|
-
permission.onchange = null;
|
|
61
|
-
reject(geolocationError(error));
|
|
62
|
-
}, { timeout: 30000 });
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// ─── Función principal ──────────────────────────────────
|
|
67
|
-
async function getGeoLocation(options = {}) {
|
|
68
|
-
if (typeof navigator === 'undefined' || !navigator.geolocation) {
|
|
69
|
-
throw new Error('Tu navegador no soporta geolocalización.');
|
|
70
|
-
}
|
|
71
|
-
await ensurePermission();
|
|
72
|
-
return requestPosition({
|
|
73
|
-
enableHighAccuracy: options.enableHighAccuracy ?? true,
|
|
74
|
-
timeout: options.timeout ?? 10000,
|
|
75
|
-
maximumAge: options.maximumAge ?? 0,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=geo-location.js.map
|