@develia/commons 0.4.8 → 0.4.12
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 +5 -4
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/browser/form-utilities.js +29 -23
- package/dist/cjs/browser/form-utilities.js.map +1 -1
- package/dist/cjs/browser/geo-location.js +61 -37
- package/dist/cjs/browser/geo-location.js.map +1 -1
- package/dist/cjs/browser/index.js +46 -1
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/cancellable-promise.js +60 -0
- package/dist/cjs/cancellable-promise.js.map +1 -0
- package/dist/cjs/event-bus.js +70 -0
- package/dist/cjs/event-bus.js.map +1 -0
- package/dist/cjs/from.js +1 -1
- package/dist/cjs/from.js.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math.js +3 -2
- package/dist/cjs/math.js.map +1 -1
- package/dist/cjs/parse.js +70 -0
- package/dist/cjs/parse.js.map +1 -0
- package/dist/cjs/patch.js +3 -2
- package/dist/cjs/patch.js.map +1 -1
- package/dist/cjs/string.js +43 -3
- package/dist/cjs/string.js.map +1 -1
- package/dist/cjs/utilities.js +25 -24
- package/dist/cjs/utilities.js.map +1 -1
- package/dist/esm/browser/form-utilities.js +23 -18
- package/dist/esm/browser/form-utilities.js.map +1 -1
- package/dist/esm/browser/geo-location.js +60 -36
- package/dist/esm/browser/geo-location.js.map +1 -1
- package/dist/esm/browser/index.js +44 -0
- package/dist/esm/browser/index.js.map +1 -1
- package/dist/esm/cancellable-promise.js +57 -0
- package/dist/esm/cancellable-promise.js.map +1 -0
- package/dist/esm/event-bus.js +65 -0
- package/dist/esm/event-bus.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parse.js +64 -0
- package/dist/esm/parse.js.map +1 -0
- package/dist/esm/string.js +34 -0
- package/dist/esm/string.js.map +1 -1
- package/dist/types/browser/form-utilities.d.ts +2 -2
- package/dist/types/browser/form-utilities.d.ts.map +1 -1
- package/dist/types/browser/geo-location.d.ts.map +1 -1
- package/dist/types/browser/index.d.ts +7 -0
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/cancellable-promise.d.ts +13 -0
- package/dist/types/cancellable-promise.d.ts.map +1 -0
- package/dist/types/event-bus.d.ts +21 -0
- package/dist/types/event-bus.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/parse.d.ts +16 -0
- package/dist/types/parse.d.ts.map +1 -0
- package/dist/types/string.d.ts +5 -0
- package/dist/types/string.d.ts.map +1 -1
- package/dist/web/browser/form-utilities.js +23 -18
- package/dist/web/browser/form-utilities.js.map +1 -1
- package/dist/web/browser/geo-location.js +60 -36
- package/dist/web/browser/geo-location.js.map +1 -1
- package/dist/web/browser/index.js +44 -0
- package/dist/web/browser/index.js.map +1 -1
- package/dist/web/cancellable-promise.js +57 -0
- package/dist/web/cancellable-promise.js.map +1 -0
- package/dist/web/event-bus.js +65 -0
- package/dist/web/event-bus.js.map +1 -0
- package/dist/web/index.js +2 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/parse.js +64 -0
- package/dist/web/parse.js.map +1 -0
- package/dist/web/string.js +34 -0
- package/dist/web/string.js.map +1 -1
- package/package.json +56 -56
- package/src/array.ts +0 -0
- package/src/async-pool-executor.ts +0 -0
- package/src/browser/form-utilities.ts +179 -173
- package/src/browser/geo-location.ts +113 -79
- package/src/browser/index.ts +78 -4
- package/src/browser/native-bridge.ts +116 -116
- package/src/cancellable-promise.ts +77 -0
- package/src/clean-url-search-params.ts +0 -0
- package/src/collections/cache-dictionary.ts +0 -0
- package/src/collections/default-map.ts +0 -0
- package/src/collections/default-weak-map.ts +0 -0
- package/src/collections/index.ts +2 -2
- package/src/event-bus.ts +84 -0
- package/src/from.ts +0 -0
- package/src/index.ts +37 -35
- package/src/key-value-pair.ts +0 -0
- package/src/lazy.ts +0 -0
- package/src/math.ts +0 -0
- package/src/order.ts +0 -0
- package/src/parse.ts +241 -0
- package/src/patch.ts +0 -0
- package/src/stopwatch.ts +0 -0
- package/src/string.ts +82 -2
- package/src/timer.ts +0 -0
- package/src/timespan.ts +0 -0
- package/src/type-code.ts +15 -15
- package/src/type.ts +371 -371
- package/src/types.ts +30 -30
- package/src/utilities.ts +404 -404
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export default class CancellablePromise extends Promise {
|
|
2
|
+
static get [Symbol.species]() {
|
|
3
|
+
return Promise;
|
|
4
|
+
}
|
|
5
|
+
constructor(executor) {
|
|
6
|
+
const controller = new AbortController();
|
|
7
|
+
super((resolve, reject) => {
|
|
8
|
+
controller.signal.addEventListener("abort", () => {
|
|
9
|
+
reject(controller.signal.reason);
|
|
10
|
+
});
|
|
11
|
+
executor(resolve, reject, controller.signal);
|
|
12
|
+
});
|
|
13
|
+
this._controller = controller;
|
|
14
|
+
}
|
|
15
|
+
get cancelled() {
|
|
16
|
+
return this._controller.signal.aborted;
|
|
17
|
+
}
|
|
18
|
+
cancel(reason = new Error("Promesa cancelada")) {
|
|
19
|
+
if (!this.cancelled) {
|
|
20
|
+
this._controller.abort(reason);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static async compete(promises) {
|
|
24
|
+
return await Promise.race(promises).then((resultado) => {
|
|
25
|
+
for (const p of promises) {
|
|
26
|
+
p.cancel();
|
|
27
|
+
}
|
|
28
|
+
return resultado;
|
|
29
|
+
}, (error) => {
|
|
30
|
+
for (const p of promises) {
|
|
31
|
+
p.cancel();
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
static async cooperate(promises) {
|
|
37
|
+
try {
|
|
38
|
+
return await Promise.all(promises);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
for (const p of promises) {
|
|
42
|
+
p.cancel();
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static withTimeout(executor, ms) {
|
|
48
|
+
return new CancellablePromise((resolve, reject, signal) => {
|
|
49
|
+
const timer = setTimeout(() => {
|
|
50
|
+
reject(new Error(`Timeout: ${ms}ms`));
|
|
51
|
+
}, ms);
|
|
52
|
+
signal.addEventListener("abort", () => clearTimeout(timer));
|
|
53
|
+
executor(resolve, reject, signal);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=cancellable-promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancellable-promise.js","sourceRoot":"","sources":["../../src/cancellable-promise.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,kBAAsB,SAAQ,OAAU;IAIzD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACvB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,QAAuC;QAC/C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtB,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC7C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,SAAkB,IAAI,KAAK,CAAC,mBAAmB,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,QAAiC;QACrD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CACpC,CAAC,SAAS,EAAE,EAAE;YACV,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,EAAE,CAAC;YACf,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACN,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,EAAE,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC,CACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAI,QAAiC;QACvD,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,EAAE,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAI,QAAuC,EAAE,EAAU;QACrE,OAAO,IAAI,kBAAkB,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export class Event {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.timestamp = new Date();
|
|
4
|
+
}
|
|
5
|
+
toString() {
|
|
6
|
+
return `${this.constructor.name}(${this.timestamp.toISOString()})`;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class EventBus {
|
|
10
|
+
constructor() {
|
|
11
|
+
this._handlers = new Map();
|
|
12
|
+
}
|
|
13
|
+
static get shared() {
|
|
14
|
+
return this._instance ?? (this._instance = new EventBus());
|
|
15
|
+
}
|
|
16
|
+
on(type, handler) {
|
|
17
|
+
if (!this._handlers.has(type)) {
|
|
18
|
+
this._handlers.set(type, []);
|
|
19
|
+
}
|
|
20
|
+
this._handlers.get(type).push({
|
|
21
|
+
original: handler,
|
|
22
|
+
wrapped: (event) => handler(event),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
off(type, handler) {
|
|
26
|
+
const handlers = this._handlers.get(type);
|
|
27
|
+
if (!handlers)
|
|
28
|
+
return;
|
|
29
|
+
let index = handlers.findIndex((h) => h.original === handler);
|
|
30
|
+
if (index !== -1) {
|
|
31
|
+
handlers.splice(index, 1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
emit(event) {
|
|
35
|
+
const handlers = this._handlers.get(event.constructor);
|
|
36
|
+
if (!handlers)
|
|
37
|
+
return;
|
|
38
|
+
for (const handler of [...handlers]) {
|
|
39
|
+
try {
|
|
40
|
+
handler.wrapped(event);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(`[EventBus] Error en handler de ${event.constructor.name}:`, e);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
once(type, handler) {
|
|
48
|
+
const wrapper = (event) => {
|
|
49
|
+
handler(event);
|
|
50
|
+
this.off(type, wrapper);
|
|
51
|
+
};
|
|
52
|
+
this.on(type, wrapper);
|
|
53
|
+
}
|
|
54
|
+
clear(type) {
|
|
55
|
+
this._handlers.delete(type);
|
|
56
|
+
}
|
|
57
|
+
clearAll() {
|
|
58
|
+
this._handlers.clear();
|
|
59
|
+
}
|
|
60
|
+
hasListeners(type) {
|
|
61
|
+
return (this._handlers.get(type)?.length ?? 0) > 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
EventBus._instance = null;
|
|
65
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/event-bus.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,KAAK;IAGvB;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,QAAQ;QACJ,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC;IACvE,CAAC;CACJ;AAUD,MAAM,OAAO,QAAQ;IAArB;QAOY,cAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAsD9D,CAAC;IA1DG,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,KAAd,IAAI,CAAC,SAAS,GAAK,IAAI,QAAQ,EAAE,EAAC;IAC7C,CAAC;IAID,EAAE,CAAkB,IAAmB,EAAE,OAAmB;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAU,CAAC;SACjD,CAAC,CAAC;IACP,CAAC;IAED,GAAG,CAAkB,IAAmB,EAAE,OAAmB;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,IAAI,CAAkB,KAAQ;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAkB,IAAmB,EAAE,OAAmB;QAC1D,MAAM,OAAO,GAAe,CAAC,KAAQ,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAkB,IAAmB;QACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY,CAAkB,IAAmB;QAC7C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;;AA3Dc,kBAAS,GAAoB,IAAI,AAAxB,CAAyB"}
|
package/dist/esm/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { default as TypeCode } from './type-code.js';
|
|
|
4
4
|
export * from './utilities.js';
|
|
5
5
|
export * from './string.js';
|
|
6
6
|
export * from './math.js';
|
|
7
|
+
export { default as CancellablePromise } from "./cancellable-promise.js";
|
|
7
8
|
export { default as KeyValuePair } from './key-value-pair.js';
|
|
8
9
|
export { default as Order } from './order.js';
|
|
9
10
|
export { default as Timer } from './timer.js';
|
|
@@ -12,6 +13,7 @@ export { default as Stopwatch } from './stopwatch.js';
|
|
|
12
13
|
export { default as AsyncPoolExecutor } from './async-pool-executor.js';
|
|
13
14
|
export { default as Lazy } from './lazy.js';
|
|
14
15
|
export { default as from, From } from './from.js';
|
|
16
|
+
export { EventBus, Event } from './event-bus.js';
|
|
15
17
|
export { default as CleanURLSearchParams } from './clean-url-search-params.js';
|
|
16
18
|
export { ajaxSubmit, ajaxSubmission, submitForm, formToObject } from './browser/index.js';
|
|
17
19
|
export * from './array.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIxF,cAAc,YAAY,CAAC;AAE3B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
function stripThousands(value, separator) {
|
|
2
|
+
if (!separator)
|
|
3
|
+
return value;
|
|
4
|
+
return value.split(separator).join("");
|
|
5
|
+
}
|
|
6
|
+
export function parseInteger(value, options = {}) {
|
|
7
|
+
if (value === null || value === undefined)
|
|
8
|
+
return null;
|
|
9
|
+
if (typeof value === "number") {
|
|
10
|
+
return Number.isFinite(value) ? Math.trunc(value) : null;
|
|
11
|
+
}
|
|
12
|
+
const { radix = 10, thousandsSeparator } = options;
|
|
13
|
+
const cleaned = stripThousands(value.trim(), thousandsSeparator);
|
|
14
|
+
if (cleaned === "")
|
|
15
|
+
return null;
|
|
16
|
+
if (radix === 10 && !/^[+-]?\d+$/.test(cleaned))
|
|
17
|
+
return null;
|
|
18
|
+
const parsed = Number.parseInt(cleaned, radix);
|
|
19
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
20
|
+
}
|
|
21
|
+
export function parseDecimal(value, options = {}) {
|
|
22
|
+
if (value === null || value === undefined)
|
|
23
|
+
return null;
|
|
24
|
+
if (typeof value === "number") {
|
|
25
|
+
return Number.isFinite(value) ? value : null;
|
|
26
|
+
}
|
|
27
|
+
const { decimalSeparator = ".", thousandsSeparator } = options;
|
|
28
|
+
let cleaned = stripThousands(value.trim(), thousandsSeparator);
|
|
29
|
+
if (cleaned === "")
|
|
30
|
+
return null;
|
|
31
|
+
if (decimalSeparator === ",") {
|
|
32
|
+
const commaCount = (cleaned.match(/,/g) || []).length;
|
|
33
|
+
if (commaCount > 1)
|
|
34
|
+
return null;
|
|
35
|
+
cleaned = cleaned.replace(",", ".");
|
|
36
|
+
}
|
|
37
|
+
if (!/^[+-]?\d+(\.\d+)?$/.test(cleaned))
|
|
38
|
+
return null;
|
|
39
|
+
const parsed = Number.parseFloat(cleaned);
|
|
40
|
+
return Number.isNaN(parsed) || !Number.isFinite(parsed) ? null : parsed;
|
|
41
|
+
}
|
|
42
|
+
const DEFAULT_TRUTHY = ["true", "1", "yes", "si", "sí", "on"];
|
|
43
|
+
const DEFAULT_FALSY = ["false", "0", "no", "off"];
|
|
44
|
+
export function parseBoolean(value, options = {}) {
|
|
45
|
+
if (value === null || value === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
if (typeof value === "boolean")
|
|
48
|
+
return value;
|
|
49
|
+
if (typeof value === "number") {
|
|
50
|
+
return Number.isFinite(value) ? value !== 0 : null;
|
|
51
|
+
}
|
|
52
|
+
const { extraTruthy = [], extraFalsy = [] } = options;
|
|
53
|
+
const normalized = value.trim().toLowerCase();
|
|
54
|
+
if (normalized === "")
|
|
55
|
+
return null;
|
|
56
|
+
const truthy = [...DEFAULT_TRUTHY, ...extraTruthy.map((s) => s.toLowerCase())];
|
|
57
|
+
const falsy = [...DEFAULT_FALSY, ...extraFalsy.map((s) => s.toLowerCase())];
|
|
58
|
+
if (truthy.includes(normalized))
|
|
59
|
+
return true;
|
|
60
|
+
if (falsy.includes(normalized))
|
|
61
|
+
return false;
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/string.js
CHANGED
|
@@ -21,4 +21,38 @@ export function format(template, ...args) {
|
|
|
21
21
|
return typeof args[key] !== 'undefined' ? args[key] : "";
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
+
function toWords(str) {
|
|
25
|
+
if (!str)
|
|
26
|
+
return [];
|
|
27
|
+
return str
|
|
28
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
29
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
30
|
+
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
31
|
+
.trim()
|
|
32
|
+
.toLowerCase()
|
|
33
|
+
.split(/\s+/)
|
|
34
|
+
.filter(Boolean);
|
|
35
|
+
}
|
|
36
|
+
export function toSnakeCase(str) {
|
|
37
|
+
return toWords(str).join('_');
|
|
38
|
+
}
|
|
39
|
+
export function toKebabCase(str) {
|
|
40
|
+
return toWords(str).join('-');
|
|
41
|
+
}
|
|
42
|
+
export function toCamelCase(str) {
|
|
43
|
+
const words = toWords(str);
|
|
44
|
+
if (words.length === 0)
|
|
45
|
+
return '';
|
|
46
|
+
return words
|
|
47
|
+
.map((word, i) => i === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))
|
|
48
|
+
.join('');
|
|
49
|
+
}
|
|
50
|
+
export function toPascalCase(str) {
|
|
51
|
+
return toWords(str)
|
|
52
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
53
|
+
.join('');
|
|
54
|
+
}
|
|
55
|
+
export function toConstantCase(str) {
|
|
56
|
+
return toWords(str).join('_').toUpperCase();
|
|
57
|
+
}
|
|
24
58
|
//# sourceMappingURL=string.js.map
|
package/dist/esm/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAc;IACpD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QACvB,OAAO,MAAM,GAAG,GAAG,CAAA;IACvB,OAAO,GAAG,CAAA;AACd,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAc;IACpD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,OAAO,GAAG,GAAG,MAAM,CAAA;IACvB,OAAO,GAAG,CAAA;AACd,CAAC;AASD,MAAM,UAAU,MAAM,CAAC,QAAgB,EAAE,GAAG,IAAW;IAEnD,IAAI,KAAa,CAAC;IAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,KAAK,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,CAAC;QACJ,KAAK,GAAG,WAAW,CAAC;IACxB,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAc;IACpD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QACvB,OAAO,MAAM,GAAG,GAAG,CAAA;IACvB,OAAO,GAAG,CAAA;AACd,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAc;IACpD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,OAAO,GAAG,GAAG,MAAM,CAAA;IACvB,OAAO,GAAG,CAAA;AACd,CAAC;AASD,MAAM,UAAU,MAAM,CAAC,QAAgB,EAAE,GAAG,IAAW;IAEnD,IAAI,KAAa,CAAC;IAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,KAAK,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,CAAC;QACJ,KAAK,GAAG,WAAW,CAAC;IACxB,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC;AAUD,SAAS,OAAO,CAAC,GAAW;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,OAAO,GAAG;SAEL,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SAEtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SAEzC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,IAAI,EAAE;SACN,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,GAAW;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,GAAW;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,GAAW;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,KAAK;SACP,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/E,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAQD,MAAM,UAAU,YAAY,CAAC,GAAW;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC;SACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Consumer, type Optional } from "../types.js";
|
|
2
2
|
export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response>;
|
|
3
3
|
export declare function submitForm(url: string, data: Record<string, any>, method?: 'POST' | 'GET', target?: '_blank' | '_self' | '_parent' | '_top'): void;
|
|
4
4
|
export declare function formToObject(form: HTMLFormElement): Record<string, FormDataEntryValue | FormDataEntryValue[]>;
|
|
5
5
|
export declare function objectToFormData(data: Record<string, any>): FormData;
|
|
6
|
-
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Optional<
|
|
6
|
+
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Optional<Consumer<any>>, onFailure?: Optional<Consumer<any>>): void;
|
|
7
7
|
//# sourceMappingURL=form-utilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-utilities.d.ts","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAC;AAUzD,wBAAsB,UAAU,CAAC,iBAAiB,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"form-utilities.d.ts","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAC;AAUzD,wBAAsB,UAAU,CAAC,iBAAiB,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmB/F;AAGD,wBAAgB,UAAU,CACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,MAAM,GAAE,MAAM,GAAG,KAAc,EAC/B,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GACjD,IAAI,CA4CN;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAC,CAkB7G;AA8CD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,CAGpE;AAED,wBAAgB,cAAc,CAC1B,iBAAiB,EAAE,eAAe,GAAG,MAAM,EAC3C,SAAS,GAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAa,EAC9C,SAAS,GAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAa,GAC/C,IAAI,CAuBN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geo-location.d.ts","sourceRoot":"","sources":["../../../src/browser/geo-location.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"geo-location.d.ts","sourceRoot":"","sources":["../../../src/browser/geo-location.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAkFD,wBAA8B,cAAc,CACxC,OAAO,GAAE,kBAAuB,GACjC,OAAO,CAAC,WAAW,CAAC,CAYtB"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
interface FetchIntoOptions {
|
|
2
|
+
url?: string;
|
|
3
|
+
fetchOptions?: RequestInit;
|
|
4
|
+
runScripts?: boolean;
|
|
5
|
+
transition?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function fetchInto(selector: string, options?: FetchIntoOptions): Promise<number>;
|
|
1
8
|
export * from './form-utilities.js';
|
|
2
9
|
export { default as NativeBridge } from "./native-bridge.js";
|
|
3
10
|
export { default as getGeoLocation } from './geo-location.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,SAAS,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAED,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type CancellablePromiseExecutor<T> = (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: unknown) => void, signal: AbortSignal) => void;
|
|
2
|
+
export default class CancellablePromise<T> extends Promise<T> {
|
|
3
|
+
private _controller;
|
|
4
|
+
static get [Symbol.species](): PromiseConstructor;
|
|
5
|
+
constructor(executor: CancellablePromiseExecutor<T>);
|
|
6
|
+
get cancelled(): boolean;
|
|
7
|
+
cancel(reason?: unknown): void;
|
|
8
|
+
static compete<T>(promises: CancellablePromise<T>[]): Promise<T>;
|
|
9
|
+
static cooperate<T>(promises: CancellablePromise<T>[]): Promise<T[]>;
|
|
10
|
+
static withTimeout<T>(executor: CancellablePromiseExecutor<T>, ms: number): CancellablePromise<T>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=cancellable-promise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancellable-promise.d.ts","sourceRoot":"","sources":["../../src/cancellable-promise.ts"],"names":[],"mappings":"AAAA,KAAK,0BAA0B,CAAC,CAAC,IAAI,CACjC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,EAClC,MAAM,EAAE,WAAW,KAClB,IAAI,CAAC;AAEV,MAAM,CAAC,OAAO,OAAO,kBAAkB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAEzD,OAAO,CAAC,WAAW,CAAkB;IAErC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,uBAE1B;gBAEW,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAcnD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,MAAM,CAAC,MAAM,GAAE,OAAwC,GAAG,IAAI;WAMjD,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;WAiBzD,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAW1E,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;CAUpG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare abstract class Event {
|
|
2
|
+
readonly timestamp: Date;
|
|
3
|
+
protected constructor();
|
|
4
|
+
toString(): string;
|
|
5
|
+
}
|
|
6
|
+
type EventClass<T extends Event> = new (...args: any[]) => T;
|
|
7
|
+
type Handler<T extends Event> = (event: T) => void;
|
|
8
|
+
export declare class EventBus {
|
|
9
|
+
private static _instance;
|
|
10
|
+
static get shared(): EventBus;
|
|
11
|
+
private _handlers;
|
|
12
|
+
on<T extends Event>(type: EventClass<T>, handler: Handler<T>): void;
|
|
13
|
+
off<T extends Event>(type: EventClass<T>, handler: Handler<T>): void;
|
|
14
|
+
emit<T extends Event>(event: T): void;
|
|
15
|
+
once<T extends Event>(type: EventClass<T>, handler: Handler<T>): void;
|
|
16
|
+
clear<T extends Event>(type: EventClass<T>): void;
|
|
17
|
+
clearAll(): void;
|
|
18
|
+
hasListeners<T extends Event>(type: EventClass<T>): boolean;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/event-bus.ts"],"names":[],"mappings":"AAEA,8BAAsB,KAAK;IACvB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAEzB,SAAS;IAIT,QAAQ,IAAI,MAAM;CAGrB;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,KAAK,OAAO,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAOnD,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyB;IAEjD,MAAM,KAAK,MAAM,IAAI,QAAQ,CAE5B;IAED,OAAO,CAAC,SAAS,CAAyC;IAE1D,EAAE,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAUnE,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAUpE,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAarC,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAQrE,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAIjD,QAAQ,IAAI,IAAI;IAIhB,YAAY,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;CAG9D"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { default as TypeCode } from './type-code.js';
|
|
|
4
4
|
export * from './utilities.js';
|
|
5
5
|
export * from './string.js';
|
|
6
6
|
export * from './math.js';
|
|
7
|
+
export { default as CancellablePromise } from "./cancellable-promise.js";
|
|
7
8
|
export { default as KeyValuePair } from './key-value-pair.js';
|
|
8
9
|
export { default as Order } from './order.js';
|
|
9
10
|
export { default as Timer } from './timer.js';
|
|
@@ -12,6 +13,7 @@ export { default as Stopwatch } from './stopwatch.js';
|
|
|
12
13
|
export { default as AsyncPoolExecutor } from './async-pool-executor.js';
|
|
13
14
|
export { default as Lazy } from './lazy.js';
|
|
14
15
|
export { default as from, From } from './from.js';
|
|
16
|
+
export { EventBus, Event } from './event-bus.js';
|
|
15
17
|
export { default as CleanURLSearchParams } from './clean-url-search-params.js';
|
|
16
18
|
export { ajaxSubmit, ajaxSubmission, submitForm, formToObject } from './browser/index.js';
|
|
17
19
|
export * from './array.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAIxF,cAAc,YAAY,CAAC;AAE3B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ParseBooleanOptions {
|
|
2
|
+
extraTruthy?: string[];
|
|
3
|
+
extraFalsy?: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface ParseIntegerOptions {
|
|
6
|
+
radix?: number;
|
|
7
|
+
thousandsSeparator?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ParseDecimalOptions {
|
|
10
|
+
decimalSeparator?: "." | ",";
|
|
11
|
+
thousandsSeparator?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function parseInteger(value: string | number | null | undefined, options?: ParseIntegerOptions): number | null;
|
|
14
|
+
export declare function parseDecimal(value: string | number | null | undefined, options?: ParseDecimalOptions): number | null;
|
|
15
|
+
export declare function parseBoolean(value: string | number | boolean | null | undefined, options?: ParseBooleanOptions): boolean | null;
|
|
16
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAMhC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAOvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAKD,MAAM,WAAW,mBAAmB;IAKhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAOf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAKD,MAAM,WAAW,mBAAmB;IAKhC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAO7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAuCD,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAiBf;AAgCD,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAwBf;AA2CD,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EACnD,OAAO,GAAE,mBAAwB,GAClC,OAAO,GAAG,IAAI,CAsBhB"}
|
package/dist/types/string.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export declare function ensurePrefix(str: string, prefix: string): string;
|
|
2
2
|
export declare function ensureSuffix(str: string, suffix: string): string;
|
|
3
3
|
export declare function format(template: string, ...args: any[]): string;
|
|
4
|
+
export declare function toSnakeCase(str: string): string;
|
|
5
|
+
export declare function toKebabCase(str: string): string;
|
|
6
|
+
export declare function toCamelCase(str: string): string;
|
|
7
|
+
export declare function toPascalCase(str: string): string;
|
|
8
|
+
export declare function toConstantCase(str: string): string;
|
|
4
9
|
//# sourceMappingURL=string.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAUD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AASD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAa/D;AAgCD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAQD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAQD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAQD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAQD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -6,9 +6,12 @@ export async function ajaxSubmit(selectorOrElement) {
|
|
|
6
6
|
if (!(form instanceof HTMLFormElement)) {
|
|
7
7
|
throw new Error("Invalid element.");
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const formData = new FormData(form);
|
|
10
|
+
const method = form.getAttribute('method') ?? form.method;
|
|
11
|
+
const action = form.getAttribute('action') ?? form.action;
|
|
12
|
+
return await fetch(action, {
|
|
13
|
+
method: method,
|
|
14
|
+
body: formData,
|
|
12
15
|
});
|
|
13
16
|
}
|
|
14
17
|
export function submitForm(url, data, method = 'POST', target) {
|
|
@@ -103,21 +106,23 @@ export function objectToFormData(data) {
|
|
|
103
106
|
return _objectToFormData(data, formData);
|
|
104
107
|
}
|
|
105
108
|
export function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
|
|
106
|
-
const
|
|
107
|
-
? document.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
109
|
+
const forms = typeof selectorOrElement === 'string'
|
|
110
|
+
? Array.from(document.querySelectorAll(selectorOrElement))
|
|
111
|
+
.filter(el => el instanceof HTMLFormElement)
|
|
112
|
+
: [selectorOrElement];
|
|
113
|
+
forms.forEach(form => {
|
|
114
|
+
form.addEventListener('submit', async (event) => {
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
try {
|
|
117
|
+
let result = await ajaxSubmit(event.currentTarget);
|
|
118
|
+
if (onSuccess)
|
|
119
|
+
onSuccess(result);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
if (onFailure)
|
|
123
|
+
onFailure(e);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
121
126
|
});
|
|
122
127
|
}
|
|
123
128
|
//# sourceMappingURL=form-utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-utilities.js","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,aAAa,CAAC;AAUzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,iBAA2C;IAExE,MAAM,IAAI,GAAG,OAAO,iBAAiB,KAAK,QAAQ;QAC9C,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAC3C,CAAC,CAAC,iBAAiB,CAAC;IAExB,IAAI,CAAC,CAAC,IAAI,YAAY,eAAe,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAGD,
|
|
1
|
+
{"version":3,"file":"form-utilities.js","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +1,70 @@
|
|
|
1
|
+
function positionToGeoLocation(position) {
|
|
2
|
+
const { coords, timestamp } = position;
|
|
3
|
+
return {
|
|
4
|
+
latitude: coords.latitude,
|
|
5
|
+
longitude: coords.longitude,
|
|
6
|
+
accuracy: coords.accuracy,
|
|
7
|
+
altitude: coords.altitude,
|
|
8
|
+
altitudeAccuracy: coords.altitudeAccuracy,
|
|
9
|
+
heading: coords.heading,
|
|
10
|
+
speed: coords.speed,
|
|
11
|
+
timestamp,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function geolocationError(error) {
|
|
15
|
+
switch (error.code) {
|
|
16
|
+
case error.PERMISSION_DENIED:
|
|
17
|
+
return new Error('Has denegado el permiso de ubicación.');
|
|
18
|
+
case error.POSITION_UNAVAILABLE:
|
|
19
|
+
return new Error('No se pudo determinar tu ubicación.');
|
|
20
|
+
case error.TIMEOUT:
|
|
21
|
+
return new Error('Tiempo de espera agotado al obtener la ubicación.');
|
|
22
|
+
default:
|
|
23
|
+
return new Error('Error desconocido al obtener la ubicación.');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function requestPosition(options) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
navigator.geolocation.getCurrentPosition((position) => resolve(positionToGeoLocation(position)), (error) => reject(geolocationError(error)), options);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function ensurePermission() {
|
|
32
|
+
if (!navigator.permissions)
|
|
33
|
+
return;
|
|
34
|
+
const permission = await navigator.permissions.query({ name: 'geolocation' });
|
|
35
|
+
if (permission.state === 'denied') {
|
|
36
|
+
throw new Error('Permiso de ubicación denegado. Actívalo en la configuración del navegador.');
|
|
37
|
+
}
|
|
38
|
+
if (permission.state === 'prompt') {
|
|
39
|
+
await new Promise((resolve, reject) => {
|
|
40
|
+
permission.onchange = () => {
|
|
41
|
+
permission.onchange = null;
|
|
42
|
+
if (permission.state === 'granted') {
|
|
43
|
+
resolve();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
reject(new Error('Has denegado el permiso de ubicación.'));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
navigator.geolocation.getCurrentPosition(() => {
|
|
50
|
+
permission.onchange = null;
|
|
51
|
+
resolve();
|
|
52
|
+
}, (error) => {
|
|
53
|
+
permission.onchange = null;
|
|
54
|
+
reject(geolocationError(error));
|
|
55
|
+
}, { timeout: 30000 });
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
1
59
|
export default async function getGeoLocation(options = {}) {
|
|
2
60
|
if (!navigator.geolocation) {
|
|
3
61
|
throw new Error('Tu navegador no soporta geolocalización.');
|
|
4
62
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (permission.state === 'denied') {
|
|
8
|
-
throw new Error('Permiso de ubicación denegado. Actívalo en la configuración del navegador.');
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
const defaultOptions = {
|
|
63
|
+
await ensurePermission();
|
|
64
|
+
return requestPosition({
|
|
12
65
|
enableHighAccuracy: options.enableHighAccuracy ?? true,
|
|
13
66
|
timeout: options.timeout ?? 10000,
|
|
14
67
|
maximumAge: options.maximumAge ?? 0,
|
|
15
|
-
};
|
|
16
|
-
return new Promise((resolve, reject) => {
|
|
17
|
-
navigator.geolocation.getCurrentPosition((position) => {
|
|
18
|
-
const { coords, timestamp } = position;
|
|
19
|
-
resolve({
|
|
20
|
-
latitude: coords.latitude,
|
|
21
|
-
longitude: coords.longitude,
|
|
22
|
-
accuracy: coords.accuracy,
|
|
23
|
-
altitude: coords.altitude,
|
|
24
|
-
altitudeAccuracy: coords.altitudeAccuracy,
|
|
25
|
-
heading: coords.heading,
|
|
26
|
-
speed: coords.speed,
|
|
27
|
-
timestamp,
|
|
28
|
-
});
|
|
29
|
-
}, (error) => {
|
|
30
|
-
switch (error.code) {
|
|
31
|
-
case error.PERMISSION_DENIED:
|
|
32
|
-
reject(new Error('Has denegado el permiso de ubicación.'));
|
|
33
|
-
break;
|
|
34
|
-
case error.POSITION_UNAVAILABLE:
|
|
35
|
-
reject(new Error('No se pudo determinar tu ubicación.'));
|
|
36
|
-
break;
|
|
37
|
-
case error.TIMEOUT:
|
|
38
|
-
reject(new Error('Tiempo de espera agotado al obtener la ubicación.'));
|
|
39
|
-
break;
|
|
40
|
-
default:
|
|
41
|
-
reject(new Error('Error desconocido al obtener la ubicación.'));
|
|
42
|
-
}
|
|
43
|
-
}, defaultOptions);
|
|
44
68
|
});
|
|
45
69
|
}
|
|
46
70
|
//# sourceMappingURL=geo-location.js.map
|