@develia/commons 0.4.6 → 0.4.8
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/browser/form-utilities.js +129 -0
- package/dist/cjs/browser/form-utilities.js.map +1 -0
- package/dist/cjs/browser/{gps.js → geo-location.js} +2 -2
- package/dist/cjs/browser/geo-location.js.map +1 -0
- package/dist/cjs/browser/index.js +9 -127
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/browser/native-bridge.js +70 -0
- package/dist/cjs/browser/native-bridge.js.map +1 -0
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/browser/form-utilities.js +122 -0
- package/dist/esm/browser/form-utilities.js.map +1 -0
- package/dist/{web/browser/gps.js → esm/browser/geo-location.js} +2 -2
- package/dist/esm/browser/geo-location.js.map +1 -0
- package/dist/esm/browser/index.js +3 -122
- package/dist/esm/browser/index.js.map +1 -1
- package/dist/esm/browser/native-bridge.js +67 -0
- package/dist/esm/browser/native-bridge.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/browser/form-utilities.d.ts +7 -0
- package/dist/types/browser/form-utilities.d.ts.map +1 -0
- package/dist/types/browser/{gps.d.ts → geo-location.d.ts} +2 -2
- package/dist/types/browser/geo-location.d.ts.map +1 -0
- package/dist/types/browser/index.d.ts +3 -7
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/browser/native-bridge.d.ts +22 -0
- package/dist/types/browser/native-bridge.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/web/browser/form-utilities.js +123 -0
- package/dist/web/browser/form-utilities.js.map +1 -0
- package/dist/{esm/browser/gps.js → web/browser/geo-location.js} +2 -2
- package/dist/web/browser/geo-location.js.map +1 -0
- package/dist/web/browser/index.js +3 -123
- package/dist/web/browser/index.js.map +1 -1
- package/dist/web/browser/native-bridge.js +67 -0
- package/dist/web/browser/native-bridge.js.map +1 -0
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/package.json +7 -1
- package/src/browser/form-utilities.ts +174 -0
- package/src/browser/{gps.ts → geo-location.ts} +1 -1
- package/src/browser/index.ts +3 -174
- package/src/browser/native-bridge.ts +117 -0
- package/src/index.ts +1 -1
- package/dist/cjs/browser/gps.js.map +0 -1
- package/dist/esm/browser/gps.js.map +0 -1
- package/dist/types/browser/gps.d.ts.map +0 -1
- package/dist/web/browser/gps.js.map +0 -1
|
@@ -1,123 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
form.action = url;
|
|
5
|
-
form.style.display = 'none';
|
|
6
|
-
if (target) {
|
|
7
|
-
form.target = target;
|
|
8
|
-
}
|
|
9
|
-
const appendInputs = (keyPrefix, value) => {
|
|
10
|
-
if (Array.isArray(value)) {
|
|
11
|
-
value.forEach(val => {
|
|
12
|
-
appendInputs(`${keyPrefix}[]`, val);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
else if (typeof value === 'object' && value !== null) {
|
|
16
|
-
for (const subKey in value) {
|
|
17
|
-
if (value.hasOwnProperty(subKey)) {
|
|
18
|
-
appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const input = document.createElement('input');
|
|
24
|
-
input.type = 'hidden';
|
|
25
|
-
input.name = keyPrefix;
|
|
26
|
-
input.value = String(value);
|
|
27
|
-
form.appendChild(input);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
for (const key in data) {
|
|
31
|
-
if (data.hasOwnProperty(key)) {
|
|
32
|
-
appendInputs(key, data[key]);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
document.body.appendChild(form);
|
|
36
|
-
form.submit();
|
|
37
|
-
}
|
|
38
|
-
export function formToObject(form) {
|
|
39
|
-
const fd = new FormData(form);
|
|
40
|
-
const out = {};
|
|
41
|
-
for (const [key, value] of fd.entries()) {
|
|
42
|
-
if (key in out) {
|
|
43
|
-
const current = out[key];
|
|
44
|
-
if (Array.isArray(current)) {
|
|
45
|
-
current.push(value);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
out[key] = [current, value];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
out[key] = value;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return out;
|
|
56
|
-
}
|
|
57
|
-
function _objectToFormData(data, formData, parentKey = '') {
|
|
58
|
-
for (const key in data) {
|
|
59
|
-
if (data.hasOwnProperty(key)) {
|
|
60
|
-
const value = data[key];
|
|
61
|
-
if (value instanceof Date) {
|
|
62
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
|
|
63
|
-
}
|
|
64
|
-
else if (value instanceof File) {
|
|
65
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
66
|
-
}
|
|
67
|
-
else if (typeof value === 'object' && !Array.isArray(value)) {
|
|
68
|
-
_objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
|
|
69
|
-
}
|
|
70
|
-
else if (Array.isArray(value)) {
|
|
71
|
-
value.forEach((item, index) => {
|
|
72
|
-
const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
|
|
73
|
-
if (typeof item === 'object' && !Array.isArray(item)) {
|
|
74
|
-
_objectToFormData(item, formData, arrayKey);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
formData.append(arrayKey, item);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return formData;
|
|
87
|
-
}
|
|
88
|
-
export function objectToFormData(data) {
|
|
89
|
-
let formData = new FormData();
|
|
90
|
-
return _objectToFormData(data, formData);
|
|
91
|
-
}
|
|
92
|
-
export function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
|
|
93
|
-
const form = typeof selectorOrElement === 'string'
|
|
94
|
-
? document.querySelector(selectorOrElement)
|
|
95
|
-
: selectorOrElement;
|
|
96
|
-
if (!(form instanceof HTMLFormElement)) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
form.addEventListener('submit', async (event) => {
|
|
100
|
-
event.preventDefault();
|
|
101
|
-
let promise = ajaxSubmit(form);
|
|
102
|
-
if (promise) {
|
|
103
|
-
if (onSuccess)
|
|
104
|
-
promise = promise.then(onSuccess);
|
|
105
|
-
if (onFailure)
|
|
106
|
-
promise.catch(onFailure);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
export async function ajaxSubmit(selectorOrElement) {
|
|
111
|
-
const form = typeof selectorOrElement === 'string'
|
|
112
|
-
? document.querySelector(selectorOrElement)
|
|
113
|
-
: selectorOrElement;
|
|
114
|
-
if (!(form instanceof HTMLFormElement)) {
|
|
115
|
-
throw new Error("Invalid element.");
|
|
116
|
-
}
|
|
117
|
-
return await fetch(form.action, {
|
|
118
|
-
method: form.method,
|
|
119
|
-
body: new FormData(form),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
export * from './gps.js';
|
|
1
|
+
export * from './form-utilities.js';
|
|
2
|
+
export { default as NativeBridge } from "./native-bridge.js";
|
|
3
|
+
export { default as getGeoLocation } from './geo-location.js';
|
|
123
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export default class NativeBridge {
|
|
2
|
+
constructor({ channel, timeout = 3000, callbackName = '__nativeResponseHandler' }) {
|
|
3
|
+
this._pending = new Map();
|
|
4
|
+
this._callId = 0;
|
|
5
|
+
this._defaultTimeout = timeout;
|
|
6
|
+
this._channel = channel;
|
|
7
|
+
if (!this._channel) {
|
|
8
|
+
throw new Error('Channel not found');
|
|
9
|
+
}
|
|
10
|
+
window[callbackName] = this._callback;
|
|
11
|
+
return new Proxy(this, {
|
|
12
|
+
get(target, prop) {
|
|
13
|
+
if (prop in target) {
|
|
14
|
+
return target[prop];
|
|
15
|
+
}
|
|
16
|
+
return (data, timeout) => target.call(String(prop), data, timeout);
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
_callback(id, error, result) {
|
|
21
|
+
const pending = this._pending.get(id);
|
|
22
|
+
if (!pending) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (pending.timer !== null) {
|
|
26
|
+
clearTimeout(pending.timer);
|
|
27
|
+
}
|
|
28
|
+
this._pending.delete(id);
|
|
29
|
+
if (error) {
|
|
30
|
+
pending.reject(error instanceof Error ? error : new Error(String(error)));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
pending.resolve(result);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
call(method, data = null, timeout) {
|
|
37
|
+
const effectiveTimeout = timeout !== undefined ? timeout : this._defaultTimeout;
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
const id = this._callId++;
|
|
40
|
+
let timer = null;
|
|
41
|
+
if (effectiveTimeout !== null && effectiveTimeout > 0) {
|
|
42
|
+
timer = setTimeout(() => {
|
|
43
|
+
this._pending.delete(id);
|
|
44
|
+
reject(new Error(`Timeout (${effectiveTimeout}ms): ${method}`));
|
|
45
|
+
}, effectiveTimeout);
|
|
46
|
+
}
|
|
47
|
+
this._pending.set(id, { resolve, reject, timer });
|
|
48
|
+
this._channel.postMessage(JSON.stringify({ id, method, data }));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
send(method, data = null) {
|
|
52
|
+
this._channel.postMessage(JSON.stringify({ method, data }));
|
|
53
|
+
}
|
|
54
|
+
get pendingCount() {
|
|
55
|
+
return this._pending.size;
|
|
56
|
+
}
|
|
57
|
+
cancelAll() {
|
|
58
|
+
for (const [, { reject, timer }] of this._pending) {
|
|
59
|
+
if (timer !== null) {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
}
|
|
62
|
+
reject(new Error('Cancelled'));
|
|
63
|
+
}
|
|
64
|
+
this._pending.clear();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=native-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-bridge.js","sourceRoot":"","sources":["../../../src/browser/native-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { default as AsyncPoolExecutor } from './async-pool-executor.js';
|
|
|
13
13
|
export { default as Lazy } from './lazy.js';
|
|
14
14
|
export { default as from, From } from './from.js';
|
|
15
15
|
export { default as CleanURLSearchParams } from './clean-url-search-params.js';
|
|
16
|
-
export
|
|
16
|
+
export { ajaxSubmit, ajaxSubmission, submitForm, formToObject } from './browser/index.js';
|
|
17
17
|
export * from './array.js';
|
|
18
18
|
export * from './collections/index.js';
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
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;AAG1B,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;AAGhD,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,cAAc,oBAAoB,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;AAG1B,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;AAGhD,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAG,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAI1F,cAAc,YAAY,CAAC;AAE3B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Optional, type Supplier } from "../types.js";
|
|
2
|
+
export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response>;
|
|
3
|
+
export declare function submitForm(url: string, data: Record<string, any>, method?: 'POST' | 'GET', target?: '_blank' | '_self' | '_parent' | '_top'): void;
|
|
4
|
+
export declare function formToObject(form: HTMLFormElement): Record<string, FormDataEntryValue | FormDataEntryValue[]>;
|
|
5
|
+
export declare function objectToFormData(data: Record<string, any>): FormData;
|
|
6
|
+
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Optional<Supplier<any>>, onFailure?: Optional<Supplier<any>>): void;
|
|
7
|
+
//# sourceMappingURL=form-utilities.d.ts.map
|
|
@@ -0,0 +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,CAe/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,CAAC,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,GAAG,IAAI,CAuBnF"}
|
|
@@ -13,5 +13,5 @@ export interface GeoLocationOptions {
|
|
|
13
13
|
timeout?: number;
|
|
14
14
|
maximumAge?: number;
|
|
15
15
|
}
|
|
16
|
-
export
|
|
17
|
-
//# sourceMappingURL=
|
|
16
|
+
export default function getGeoLocation(options?: GeoLocationOptions): Promise<GeoLocation>;
|
|
17
|
+
//# sourceMappingURL=geo-location.d.ts.map
|
|
@@ -0,0 +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;AAID,wBAA8B,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0DnG"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export declare function objectToFormData(data: Record<string, any>): FormData;
|
|
5
|
-
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Optional<Supplier<any>>, onFailure?: Optional<Supplier<any>>): void;
|
|
6
|
-
export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response>;
|
|
7
|
-
export * from './gps.js';
|
|
1
|
+
export * from './form-utilities.js';
|
|
2
|
+
export { default as NativeBridge } from "./native-bridge.js";
|
|
3
|
+
export { default as getGeoLocation } from './geo-location.js';
|
|
8
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,
|
|
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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface BridgeOptions {
|
|
2
|
+
channel: Channel;
|
|
3
|
+
timeout?: number | null;
|
|
4
|
+
callbackName?: string;
|
|
5
|
+
}
|
|
6
|
+
interface Channel {
|
|
7
|
+
postMessage: (message: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export default class NativeBridge {
|
|
10
|
+
private _pending;
|
|
11
|
+
private _callId;
|
|
12
|
+
private readonly _defaultTimeout;
|
|
13
|
+
private readonly _channel;
|
|
14
|
+
constructor({ channel, timeout, callbackName }: BridgeOptions);
|
|
15
|
+
private _callback;
|
|
16
|
+
call(method: string, data?: unknown, timeout?: number | null): Promise<unknown>;
|
|
17
|
+
send(method: string, data?: unknown): void;
|
|
18
|
+
get pendingCount(): number;
|
|
19
|
+
cancelAll(): void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=native-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-bridge.d.ts","sourceRoot":"","sources":["../../../src/browser/native-bridge.ts"],"names":[],"mappings":"AACA,UAAU,aAAa;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAOD,UAAU,OAAO;IACb,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAMD,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAGvB,EAAE,OAAO,EAAE,OAAc,EAAE,YAAwC,EAAE,EAAE,aAAa;IAsBhG,OAAO,CAAC,SAAS;IAoBjB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,GAAG,IAAI;IAOhD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAKD,SAAS,IAAI,IAAI;CASpB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { default as AsyncPoolExecutor } from './async-pool-executor.js';
|
|
|
13
13
|
export { default as Lazy } from './lazy.js';
|
|
14
14
|
export { default as from, From } from './from.js';
|
|
15
15
|
export { default as CleanURLSearchParams } from './clean-url-search-params.js';
|
|
16
|
-
export
|
|
16
|
+
export { ajaxSubmit, ajaxSubmission, submitForm, formToObject } from './browser/index.js';
|
|
17
17
|
export * from './array.js';
|
|
18
18
|
export * from './collections/index.js';
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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;AAG1B,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;AAGhD,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,cAAc,oBAAoB,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;AAG1B,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;AAGhD,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAG,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAI1F,cAAc,YAAY,CAAC;AAE3B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import {} from "../types.js";
|
|
2
|
+
export async function ajaxSubmit(selectorOrElement) {
|
|
3
|
+
const form = typeof selectorOrElement === 'string'
|
|
4
|
+
? document.querySelector(selectorOrElement)
|
|
5
|
+
: selectorOrElement;
|
|
6
|
+
if (!(form instanceof HTMLFormElement)) {
|
|
7
|
+
throw new Error("Invalid element.");
|
|
8
|
+
}
|
|
9
|
+
return await fetch(form.action, {
|
|
10
|
+
method: form.method,
|
|
11
|
+
body: new FormData(form),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function submitForm(url, data, method = 'POST', target) {
|
|
15
|
+
const form = document.createElement('form');
|
|
16
|
+
form.method = method.toUpperCase();
|
|
17
|
+
form.action = url;
|
|
18
|
+
form.style.display = 'none';
|
|
19
|
+
if (target) {
|
|
20
|
+
form.target = target;
|
|
21
|
+
}
|
|
22
|
+
const appendInputs = (keyPrefix, value) => {
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
value.forEach(val => {
|
|
25
|
+
appendInputs(`${keyPrefix}[]`, val);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else if (typeof value === 'object' && value !== null) {
|
|
29
|
+
for (const subKey in value) {
|
|
30
|
+
if (value.hasOwnProperty(subKey)) {
|
|
31
|
+
appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const input = document.createElement('input');
|
|
37
|
+
input.type = 'hidden';
|
|
38
|
+
input.name = keyPrefix;
|
|
39
|
+
input.value = String(value);
|
|
40
|
+
form.appendChild(input);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
for (const key in data) {
|
|
44
|
+
if (data.hasOwnProperty(key)) {
|
|
45
|
+
appendInputs(key, data[key]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
document.body.appendChild(form);
|
|
49
|
+
form.submit();
|
|
50
|
+
}
|
|
51
|
+
export function formToObject(form) {
|
|
52
|
+
const fd = new FormData(form);
|
|
53
|
+
const out = {};
|
|
54
|
+
for (const [key, value] of fd.entries()) {
|
|
55
|
+
if (key in out) {
|
|
56
|
+
const current = out[key];
|
|
57
|
+
if (Array.isArray(current)) {
|
|
58
|
+
current.push(value);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
out[key] = [current, value];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
out[key] = value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
function _objectToFormData(data, formData, parentKey = '') {
|
|
71
|
+
for (const key in data) {
|
|
72
|
+
if (data.hasOwnProperty(key)) {
|
|
73
|
+
const value = data[key];
|
|
74
|
+
if (value instanceof Date) {
|
|
75
|
+
formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
|
|
76
|
+
}
|
|
77
|
+
else if (value instanceof File) {
|
|
78
|
+
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
79
|
+
}
|
|
80
|
+
else if (typeof value === 'object' && !Array.isArray(value)) {
|
|
81
|
+
_objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
|
|
82
|
+
}
|
|
83
|
+
else if (Array.isArray(value)) {
|
|
84
|
+
value.forEach((item, index) => {
|
|
85
|
+
const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
|
|
86
|
+
if (typeof item === 'object' && !Array.isArray(item)) {
|
|
87
|
+
_objectToFormData(item, formData, arrayKey);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
formData.append(arrayKey, item);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return formData;
|
|
100
|
+
}
|
|
101
|
+
export function objectToFormData(data) {
|
|
102
|
+
let formData = new FormData();
|
|
103
|
+
return _objectToFormData(data, formData);
|
|
104
|
+
}
|
|
105
|
+
export function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
|
|
106
|
+
const form = typeof selectorOrElement === 'string'
|
|
107
|
+
? document.querySelector(selectorOrElement)
|
|
108
|
+
: selectorOrElement;
|
|
109
|
+
if (!(form instanceof HTMLFormElement)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
form.addEventListener('submit', async (event) => {
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
let promise = ajaxSubmit(form);
|
|
115
|
+
if (promise) {
|
|
116
|
+
if (onSuccess)
|
|
117
|
+
promise = promise.then(onSuccess);
|
|
118
|
+
if (onFailure)
|
|
119
|
+
promise.catch(onFailure);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=form-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-utilities.js","sourceRoot":"","sources":["../../../src/browser/form-utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export async function getGeoLocation(options = {}) {
|
|
1
|
+
export default async function getGeoLocation(options = {}) {
|
|
2
2
|
if (!navigator.geolocation) {
|
|
3
3
|
throw new Error('Tu navegador no soporta geolocalización.');
|
|
4
4
|
}
|
|
@@ -43,4 +43,4 @@ export async function getGeoLocation(options = {}) {
|
|
|
43
43
|
}, defaultOptions);
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=geo-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo-location.js","sourceRoot":"","sources":["../../../src/browser/geo-location.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,UAA8B,EAAE;IAGzE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IAGD,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAE9E,IAAI,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACX,4EAA4E,CAC/E,CAAC;QACN,CAAC;IACL,CAAC;IAGD,MAAM,cAAc,GAAoB;QACpC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;QACtD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;KACtC,CAAC;IAEF,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChD,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACpC,CAAC,QAAQ,EAAE,EAAE;YACT,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YACvC,OAAO,CAAC;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS;aACZ,CAAC,CAAC;QACP,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACN,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,KAAK,KAAK,CAAC,iBAAiB;oBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC3D,MAAM;gBACV,KAAK,KAAK,CAAC,oBAAoB;oBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBACzD,MAAM;gBACV,KAAK,KAAK,CAAC,OAAO;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;oBACvE,MAAM;gBACV;oBACI,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACxE,CAAC;QACL,CAAC,EACD,cAAc,CACjB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,124 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
form.method = method.toUpperCase();
|
|
5
|
-
form.action = url;
|
|
6
|
-
form.style.display = 'none';
|
|
7
|
-
if (target) {
|
|
8
|
-
form.target = target;
|
|
9
|
-
}
|
|
10
|
-
const appendInputs = (keyPrefix, value) => {
|
|
11
|
-
if (Array.isArray(value)) {
|
|
12
|
-
value.forEach(val => {
|
|
13
|
-
appendInputs(`${keyPrefix}[]`, val);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
else if (typeof value === 'object' && value !== null) {
|
|
17
|
-
for (const subKey in value) {
|
|
18
|
-
if (value.hasOwnProperty(subKey)) {
|
|
19
|
-
appendInputs(`${keyPrefix}[${subKey}]`, value[subKey]);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
const input = document.createElement('input');
|
|
25
|
-
input.type = 'hidden';
|
|
26
|
-
input.name = keyPrefix;
|
|
27
|
-
input.value = String(value);
|
|
28
|
-
form.appendChild(input);
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
for (const key in data) {
|
|
32
|
-
if (data.hasOwnProperty(key)) {
|
|
33
|
-
appendInputs(key, data[key]);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
document.body.appendChild(form);
|
|
37
|
-
form.submit();
|
|
38
|
-
}
|
|
39
|
-
export function formToObject(form) {
|
|
40
|
-
const fd = new FormData(form);
|
|
41
|
-
const out = {};
|
|
42
|
-
for (const [key, value] of fd.entries()) {
|
|
43
|
-
if (key in out) {
|
|
44
|
-
const current = out[key];
|
|
45
|
-
if (Array.isArray(current)) {
|
|
46
|
-
current.push(value);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
out[key] = [current, value];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
out[key] = value;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return out;
|
|
57
|
-
}
|
|
58
|
-
function _objectToFormData(data, formData, parentKey = '') {
|
|
59
|
-
for (const key in data) {
|
|
60
|
-
if (data.hasOwnProperty(key)) {
|
|
61
|
-
const value = data[key];
|
|
62
|
-
if (value instanceof Date) {
|
|
63
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());
|
|
64
|
-
}
|
|
65
|
-
else if (value instanceof File) {
|
|
66
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
67
|
-
}
|
|
68
|
-
else if (typeof value === 'object' && !Array.isArray(value)) {
|
|
69
|
-
_objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
|
|
70
|
-
}
|
|
71
|
-
else if (Array.isArray(value)) {
|
|
72
|
-
value.forEach((item, index) => {
|
|
73
|
-
const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
|
|
74
|
-
if (typeof item === 'object' && !Array.isArray(item)) {
|
|
75
|
-
_objectToFormData(item, formData, arrayKey);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
formData.append(arrayKey, item);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return formData;
|
|
88
|
-
}
|
|
89
|
-
export function objectToFormData(data) {
|
|
90
|
-
let formData = new FormData();
|
|
91
|
-
return _objectToFormData(data, formData);
|
|
92
|
-
}
|
|
93
|
-
export function ajaxSubmission(selectorOrElement, onSuccess = undefined, onFailure = undefined) {
|
|
94
|
-
const form = typeof selectorOrElement === 'string'
|
|
95
|
-
? document.querySelector(selectorOrElement)
|
|
96
|
-
: selectorOrElement;
|
|
97
|
-
if (!(form instanceof HTMLFormElement)) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
form.addEventListener('submit', async (event) => {
|
|
101
|
-
event.preventDefault();
|
|
102
|
-
let promise = ajaxSubmit(form);
|
|
103
|
-
if (promise) {
|
|
104
|
-
if (onSuccess)
|
|
105
|
-
promise = promise.then(onSuccess);
|
|
106
|
-
if (onFailure)
|
|
107
|
-
promise.catch(onFailure);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
export async function ajaxSubmit(selectorOrElement) {
|
|
112
|
-
const form = typeof selectorOrElement === 'string'
|
|
113
|
-
? document.querySelector(selectorOrElement)
|
|
114
|
-
: selectorOrElement;
|
|
115
|
-
if (!(form instanceof HTMLFormElement)) {
|
|
116
|
-
throw new Error("Invalid element.");
|
|
117
|
-
}
|
|
118
|
-
return await fetch(form.action, {
|
|
119
|
-
method: form.method,
|
|
120
|
-
body: new FormData(form),
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
export * from './gps.js';
|
|
1
|
+
export * from './form-utilities.js';
|
|
2
|
+
export { default as NativeBridge } from "./native-bridge.js";
|
|
3
|
+
export { default as getGeoLocation } from './geo-location.js';
|
|
124
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","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"}
|