@lipemat/js-helpers 1.0.0
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/README.md +61 -0
- package/dist/classes/classes.d.ts +28 -0
- package/dist/classes/classes.d.ts.map +1 -0
- package/dist/classes/classes.js +50 -0
- package/dist/classes/classes.js.map +1 -0
- package/dist/colors/colors.d.ts +14 -0
- package/dist/colors/colors.d.ts.map +1 -0
- package/dist/colors/colors.js +63 -0
- package/dist/colors/colors.js.map +1 -0
- package/dist/csvExport/csvExport.d.ts +19 -0
- package/dist/csvExport/csvExport.d.ts.map +1 -0
- package/dist/csvExport/csvExport.js +74 -0
- package/dist/csvExport/csvExport.js.map +1 -0
- package/dist/date/date.d.ts +10 -0
- package/dist/date/date.d.ts.map +1 -0
- package/dist/date/date.js +20 -0
- package/dist/date/date.js.map +1 -0
- package/dist/debounce/debounce.d.ts +17 -0
- package/dist/debounce/debounce.d.ts.map +1 -0
- package/dist/debounce/debounce.js +34 -0
- package/dist/debounce/debounce.js.map +1 -0
- package/dist/delay/delay.d.ts +18 -0
- package/dist/delay/delay.d.ts.map +1 -0
- package/dist/delay/delay.js +20 -0
- package/dist/delay/delay.js.map +1 -0
- package/dist/device/device.d.ts +26 -0
- package/dist/device/device.d.ts.map +1 -0
- package/dist/device/device.js +42 -0
- package/dist/device/device.js.map +1 -0
- package/dist/dom-ready/dom-ready.d.ts +12 -0
- package/dist/dom-ready/dom-ready.d.ts.map +1 -0
- package/dist/dom-ready/dom-ready.js +19 -0
- package/dist/dom-ready/dom-ready.js.map +1 -0
- package/dist/error/error.d.ts +28 -0
- package/dist/error/error.d.ts.map +1 -0
- package/dist/error/error.js +33 -0
- package/dist/error/error.js.map +1 -0
- package/dist/escaping/escaping.d.ts +17 -0
- package/dist/escaping/escaping.d.ts.map +1 -0
- package/dist/escaping/escaping.js +39 -0
- package/dist/escaping/escaping.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/injectScript/injectScript.d.ts +14 -0
- package/dist/injectScript/injectScript.d.ts.map +1 -0
- package/dist/injectScript/injectScript.js +30 -0
- package/dist/injectScript/injectScript.js.map +1 -0
- package/dist/memoize/memoize.d.ts +13 -0
- package/dist/memoize/memoize.d.ts.map +1 -0
- package/dist/memoize/memoize.js +19 -0
- package/dist/memoize/memoize.js.map +1 -0
- package/dist/noop/noop.d.ts +9 -0
- package/dist/noop/noop.d.ts.map +1 -0
- package/dist/noop/noop.js +10 -0
- package/dist/noop/noop.js.map +1 -0
- package/dist/objects/objects.d.ts +20 -0
- package/dist/objects/objects.d.ts.map +1 -0
- package/dist/objects/objects.js +24 -0
- package/dist/objects/objects.js.map +1 -0
- package/dist/once/once.d.ts +9 -0
- package/dist/once/once.d.ts.map +1 -0
- package/dist/once/once.js +17 -0
- package/dist/once/once.js.map +1 -0
- package/dist/string/string.d.ts +34 -0
- package/dist/string/string.d.ts.map +1 -0
- package/dist/string/string.js +65 -0
- package/dist/string/string.js.map +1 -0
- package/dist/throttle/throttle.d.ts +17 -0
- package/dist/throttle/throttle.d.ts.map +1 -0
- package/dist/throttle/throttle.js +43 -0
- package/dist/throttle/throttle.js.map +1 -0
- package/dist/url/url.d.ts +17 -0
- package/dist/url/url.d.ts.map +1 -0
- package/dist/url/url.js +28 -0
- package/dist/url/url.js.map +1 -0
- package/package.json +71 -0
- package/src/classes/Readme.md +28 -0
- package/src/classes/classes.ts +51 -0
- package/src/colors/Readme.md +28 -0
- package/src/colors/colors.ts +80 -0
- package/src/csvExport/Readme.md +35 -0
- package/src/csvExport/csvExport.ts +89 -0
- package/src/date/Readme.md +21 -0
- package/src/date/date.ts +23 -0
- package/src/debounce/Readme.md +27 -0
- package/src/debounce/debounce.ts +47 -0
- package/src/delay/Readme.md +20 -0
- package/src/delay/delay.ts +19 -0
- package/src/device/Readme.md +31 -0
- package/src/device/device.ts +46 -0
- package/src/dom-ready/Readme.md +27 -0
- package/src/dom-ready/dom-ready.ts +22 -0
- package/src/error/Readme.md +40 -0
- package/src/error/error.ts +49 -0
- package/src/escaping/Readme.md +23 -0
- package/src/escaping/escaping.ts +41 -0
- package/src/index.ts +24 -0
- package/src/injectScript/Readme.md +26 -0
- package/src/injectScript/injectScript.ts +31 -0
- package/src/memoize/Readme.md +28 -0
- package/src/memoize/memoize.ts +27 -0
- package/src/noop/Readme.md +19 -0
- package/src/noop/noop.ts +9 -0
- package/src/objects/Readme.md +31 -0
- package/src/objects/objects.ts +26 -0
- package/src/once/Readme.md +26 -0
- package/src/once/once.ts +22 -0
- package/src/string/Readme.md +37 -0
- package/src/string/string.ts +72 -0
- package/src/throttle/Readme.md +27 -0
- package/src/throttle/throttle.ts +57 -0
- package/src/url/Readme.md +32 -0
- package/src/url/url.ts +35 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use in place from the default Error handler to include
|
|
3
|
+
* information about form fields which caused the errors.
|
|
4
|
+
*
|
|
5
|
+
* Translates `WP_Error` responses from REST API into
|
|
6
|
+
* field name and their corresponding messages.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.2.1
|
|
9
|
+
*/
|
|
10
|
+
export class ErrorWithFields extends Error {
|
|
11
|
+
fields;
|
|
12
|
+
constructor(error) {
|
|
13
|
+
const errors = [error];
|
|
14
|
+
if (undefined !== error.additional_errors) {
|
|
15
|
+
errors.push(...error.additional_errors);
|
|
16
|
+
}
|
|
17
|
+
super(errors.map(er => er.message).join(' '));
|
|
18
|
+
this.name = 'ErrorWithData';
|
|
19
|
+
this.fields = {};
|
|
20
|
+
errors.forEach(field => {
|
|
21
|
+
this.fields[this.translate(field).code] = field.message;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
translate(error) {
|
|
25
|
+
error.code = error.code
|
|
26
|
+
.toString()
|
|
27
|
+
.replace('user_name', 'username')
|
|
28
|
+
.replace('user_email', 'email')
|
|
29
|
+
.replace('rest_user_invalid_email', 'email');
|
|
30
|
+
return error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error/error.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAyD,SAAQ,KAAK;IAC3E,MAAM,CAAY;IAEzB,YAAa,KAAoB;QAChC,MAAM,MAAM,GAAG,CAAE,KAAK,CAAE,CAAC;QACzB,IAAK,SAAS,KAAK,KAAK,CAAC,iBAAiB,EAAG,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAE,GAAG,KAAK,CAAC,iBAAiB,CAAE,CAAC;QAC3C,CAAC;QAED,KAAK,CAAE,MAAM,CAAC,GAAG,CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,CAAC,IAAI,CAAE,GAAG,CAAE,CAAE,CAAC;QAEpD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,MAAM,CAAE,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE,CAAC,IAAI,CAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7D,CAAC,CAAE,CAAC;IACL,CAAC;IAED,SAAS,CAAE,KAAoB;QAC9B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;aACrB,QAAQ,EAAE;aACV,OAAO,CAAE,WAAW,EAAE,UAAU,CAAE;aAClC,OAAO,CAAE,YAAY,EAAE,OAAO,CAAE;aAChC,OAAO,CAAE,yBAAyB,EAAE,OAAO,CAAE,CAAC;QAEhD,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taken nearly verbatim from the Gutenberg package.
|
|
3
|
+
*
|
|
4
|
+
* Added to the helpers in case we are
|
|
5
|
+
* not loading wp-html-entities on the front-end.
|
|
6
|
+
*
|
|
7
|
+
* @notice We likely are loading wp-html-entities unless a special project.
|
|
8
|
+
*
|
|
9
|
+
* @see @wordpress/html-entities
|
|
10
|
+
*
|
|
11
|
+
* @version 1.0.5
|
|
12
|
+
*
|
|
13
|
+
* @link https://github.com/WordPress/gutenberg/blob/d5915916abc45e6682f4bdb70888aa41e98aa395/packages/html-entities/src/index.js#L14
|
|
14
|
+
* @param html
|
|
15
|
+
*/
|
|
16
|
+
export declare function decodeEntities(html: string): string;
|
|
17
|
+
//# sourceMappingURL=escaping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escaping.d.ts","sourceRoot":"","sources":["../../src/escaping/escaping.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAE,IAAI,EAAE,MAAM,UAqB3C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import DOMPurify from 'dompurify';
|
|
2
|
+
let _decodeTextArea;
|
|
3
|
+
/**
|
|
4
|
+
* Taken nearly verbatim from the Gutenberg package.
|
|
5
|
+
*
|
|
6
|
+
* Added to the helpers in case we are
|
|
7
|
+
* not loading wp-html-entities on the front-end.
|
|
8
|
+
*
|
|
9
|
+
* @notice We likely are loading wp-html-entities unless a special project.
|
|
10
|
+
*
|
|
11
|
+
* @see @wordpress/html-entities
|
|
12
|
+
*
|
|
13
|
+
* @version 1.0.5
|
|
14
|
+
*
|
|
15
|
+
* @link https://github.com/WordPress/gutenberg/blob/d5915916abc45e6682f4bdb70888aa41e98aa395/packages/html-entities/src/index.js#L14
|
|
16
|
+
* @param html
|
|
17
|
+
*/
|
|
18
|
+
export function decodeEntities(html) {
|
|
19
|
+
// Not a string, or no entities to decode.
|
|
20
|
+
if (-1 === html.indexOf('&')) {
|
|
21
|
+
return html;
|
|
22
|
+
}
|
|
23
|
+
// Create a textarea for decoding entities, that we can reuse.
|
|
24
|
+
if (undefined === _decodeTextArea) {
|
|
25
|
+
if (undefined !== document.implementation) {
|
|
26
|
+
_decodeTextArea = document.implementation
|
|
27
|
+
.createHTMLDocument('')
|
|
28
|
+
.createElement('textarea');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
_decodeTextArea = document.createElement('textarea');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
_decodeTextArea.innerHTML = DOMPurify.sanitize(html);
|
|
35
|
+
const decoded = _decodeTextArea.textContent;
|
|
36
|
+
_decodeTextArea.innerHTML = '';
|
|
37
|
+
return (decoded);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=escaping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escaping.js","sourceRoot":"","sources":["../../src/escaping/escaping.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,IAAI,eAAoC,CAAC;AAEzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAE,IAAY;IAC3C,0CAA0C;IAC1C,IAAK,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAE,GAAG,CAAE,EAAG,CAAC;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,8DAA8D;IAC9D,IAAK,SAAS,KAAK,eAAe,EAAG,CAAC;QACrC,IAAK,SAAS,KAAK,QAAQ,CAAC,cAAc,EAAG,CAAC;YAC7C,eAAe,GAAG,QAAQ,CAAC,cAAc;iBACvC,kBAAkB,CAAE,EAAE,CAAE;iBACxB,aAAa,CAAE,UAAU,CAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACP,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAE,UAAU,CAAE,CAAC;QACxD,CAAC;IACF,CAAC;IAED,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAE,IAAI,CAAE,CAAC;IACvD,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC;IAC5C,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,OAAO,CAAE,OAAO,CAAE,CAAC;AACpB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public entry point for `@lipemat/js-helpers`.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the public API of every helper so consumers can use
|
|
5
|
+
* `import {<helper>} from '@lipemat/js-helpers'`.
|
|
6
|
+
*/
|
|
7
|
+
export * from './classes/classes.js';
|
|
8
|
+
export * from './colors/colors.js';
|
|
9
|
+
export * from './csvExport/csvExport.js';
|
|
10
|
+
export * from './date/date.js';
|
|
11
|
+
export * from './debounce/debounce.js';
|
|
12
|
+
export * from './delay/delay.js';
|
|
13
|
+
export * from './device/device.js';
|
|
14
|
+
export * from './dom-ready/dom-ready.js';
|
|
15
|
+
export * from './error/error.js';
|
|
16
|
+
export * from './escaping/escaping.js';
|
|
17
|
+
export * from './injectScript/injectScript.js';
|
|
18
|
+
export * from './memoize/memoize.js';
|
|
19
|
+
export * from './noop/noop.js';
|
|
20
|
+
export * from './objects/objects.js';
|
|
21
|
+
export * from './once/once.js';
|
|
22
|
+
export * from './string/string.js';
|
|
23
|
+
export * from './throttle/throttle.js';
|
|
24
|
+
export * from './url/url.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public entry point for `@lipemat/js-helpers`.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the public API of every helper so consumers can use
|
|
5
|
+
* `import {<helper>} from '@lipemat/js-helpers'`.
|
|
6
|
+
*/
|
|
7
|
+
export * from './classes/classes.js';
|
|
8
|
+
export * from './colors/colors.js';
|
|
9
|
+
export * from './csvExport/csvExport.js';
|
|
10
|
+
export * from './date/date.js';
|
|
11
|
+
export * from './debounce/debounce.js';
|
|
12
|
+
export * from './delay/delay.js';
|
|
13
|
+
export * from './device/device.js';
|
|
14
|
+
export * from './dom-ready/dom-ready.js';
|
|
15
|
+
export * from './error/error.js';
|
|
16
|
+
export * from './escaping/escaping.js';
|
|
17
|
+
export * from './injectScript/injectScript.js';
|
|
18
|
+
export * from './memoize/memoize.js';
|
|
19
|
+
export * from './noop/noop.js';
|
|
20
|
+
export * from './objects/objects.js';
|
|
21
|
+
export * from './once/once.js';
|
|
22
|
+
export * from './string/string.js';
|
|
23
|
+
export * from './throttle/throttle.js';
|
|
24
|
+
export * from './url/url.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inject a script into the DOM.
|
|
3
|
+
*
|
|
4
|
+
* May be called multiple times and will ony inject the script once.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} $src - URL of the script.
|
|
7
|
+
* @param {boolean} $inBody - Put in body tag instead of head
|
|
8
|
+
*
|
|
9
|
+
* @version 1.2.1
|
|
10
|
+
*
|
|
11
|
+
* @return {Promise}
|
|
12
|
+
*/
|
|
13
|
+
export declare const injectScript: import("../memoize/memoize.js").MemoizedFunction<(src: any, inBody?: boolean) => Promise<unknown>>;
|
|
14
|
+
//# sourceMappingURL=injectScript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectScript.d.ts","sourceRoot":"","sources":["../../src/injectScript/injectScript.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,uEAA2B,OAAO,sBAgBxD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { memoize } from '../memoize/memoize.js';
|
|
2
|
+
/**
|
|
3
|
+
* Inject a script into the DOM.
|
|
4
|
+
*
|
|
5
|
+
* May be called multiple times and will ony inject the script once.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} $src - URL of the script.
|
|
8
|
+
* @param {boolean} $inBody - Put in body tag instead of head
|
|
9
|
+
*
|
|
10
|
+
* @version 1.2.1
|
|
11
|
+
*
|
|
12
|
+
* @return {Promise}
|
|
13
|
+
*/
|
|
14
|
+
export const injectScript = memoize((src, inBody = false) => {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
const script = document.createElement('script');
|
|
17
|
+
script.async = false;
|
|
18
|
+
script.src = src;
|
|
19
|
+
script.addEventListener('load', () => resolve('Loaded: ' + src));
|
|
20
|
+
script.addEventListener('error', () => reject('Error loading script.'));
|
|
21
|
+
script.addEventListener('abort', () => reject('Script loading aborted.'));
|
|
22
|
+
if (inBody) {
|
|
23
|
+
document.body.appendChild(script);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
document.head.appendChild(script);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=injectScript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectScript.js","sourceRoot":"","sources":["../../src/injectScript/injectScript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAE,CAAE,GAAG,EAAE,SAAkB,KAAK,EAAG,EAAE;IACvE,OAAO,IAAI,OAAO,CAAE,CAAE,OAAO,EAAE,MAAM,EAAG,EAAE;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAE,QAAQ,CAAE,CAAC;QAClD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,gBAAgB,CAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAE,UAAU,GAAG,GAAG,CAAE,CAAE,CAAC;QACrE,MAAM,CAAC,gBAAgB,CAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAE,uBAAuB,CAAE,CAAE,CAAC;QAC5E,MAAM,CAAC,gBAAgB,CAAE,OAAO,EAAE,GAAG,EAAE,CACtC,MAAM,CAAE,yBAAyB,CAAE,CACnC,CAAC;QACF,IAAK,MAAM,EAAG,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAE,MAAM,CAAE,CAAC;QACrC,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAE,MAAM,CAAE,CAAC;QACrC,CAAC;IACF,CAAC,CAAE,CAAC;AACL,CAAC,CAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Callback, Return } from '../once/once.js';
|
|
2
|
+
type Resolver<T extends Callback> = (...args: Parameters<T>) => string;
|
|
3
|
+
export type MemoizedFunction<T extends Callback> = Return<T> & {
|
|
4
|
+
cache: Map<string, ReturnType<T>>;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Similar to lodash memoize but without requiring lodash.
|
|
8
|
+
*
|
|
9
|
+
* @version 1.1.3
|
|
10
|
+
*/
|
|
11
|
+
export declare function memoize<T extends Callback>(fn: T, resolver?: Resolver<T>): MemoizedFunction<T>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=memoize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/memoize/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEtD,KAAK,QAAQ,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAM,MAAM,CAAC;AAEzE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAC9D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAI,gBAAgB,CAAC,CAAC,CAAC,CAahG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Similar to lodash memoize but without requiring lodash.
|
|
3
|
+
*
|
|
4
|
+
* @version 1.1.3
|
|
5
|
+
*/
|
|
6
|
+
export function memoize(fn, resolver) {
|
|
7
|
+
const memoized = function (...args) {
|
|
8
|
+
const key = resolver ? resolver(...args) : args[0];
|
|
9
|
+
if (memoized.cache.has(key)) {
|
|
10
|
+
return memoized.cache.get(key);
|
|
11
|
+
}
|
|
12
|
+
const result = fn(...args);
|
|
13
|
+
memoized.cache = memoized.cache.set(key, result);
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
memoized.cache = new Map();
|
|
17
|
+
return memoized;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=memoize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memoize/memoize.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAsB,EAAK,EAAE,QAAsB;IACzE,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAmB;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAE,GAAG,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC;QACvD,IAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,CAAE,EAAG,CAAC;YACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAE,GAAG,IAAI,CAAE,CAAC;QAC7B,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,EAAE,MAAM,CAAE,CAAC;QACnD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IACF,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../src/noop/noop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,YAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.js","sourceRoot":"","sources":["../../src/noop/noop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Object.keys() with type inference.
|
|
6
|
+
*
|
|
7
|
+
* Instead of getting `string[]` we get `keyof T[]`.
|
|
8
|
+
*
|
|
9
|
+
* @since 4.3.0
|
|
10
|
+
*/
|
|
11
|
+
export declare function keysOf<T extends object>(obj: T): Array<keyof T>;
|
|
12
|
+
/**
|
|
13
|
+
* Object.entries() with type inference.
|
|
14
|
+
*
|
|
15
|
+
* Instead of getting `Array<[string, any]>` we get `Array<[keyof T, T[keyof T]]>`.
|
|
16
|
+
*
|
|
17
|
+
* @since 4.3.0
|
|
18
|
+
*/
|
|
19
|
+
export declare function entriesOf<T extends object>(obj: T): Array<[keyof T, T[keyof T]]>;
|
|
20
|
+
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/objects/objects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAG,GAAG,EAAE,CAAC,GAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAEjE;AAGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAG,GAAG,EAAE,CAAC,GAAI,KAAK,CAAC,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAEpF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Object.keys() with type inference.
|
|
6
|
+
*
|
|
7
|
+
* Instead of getting `string[]` we get `keyof T[]`.
|
|
8
|
+
*
|
|
9
|
+
* @since 4.3.0
|
|
10
|
+
*/
|
|
11
|
+
export function keysOf(obj) {
|
|
12
|
+
return Object.keys(obj);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Object.entries() with type inference.
|
|
16
|
+
*
|
|
17
|
+
* Instead of getting `Array<[string, any]>` we get `Array<[keyof T, T[keyof T]]>`.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.3.0
|
|
20
|
+
*/
|
|
21
|
+
export function entriesOf(obj) {
|
|
22
|
+
return Object.entries(obj);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/objects/objects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAoB,GAAM;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAE,GAAG,CAAoB,CAAC;AAC7C,CAAC;AAGD;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAoB,GAAM;IAClD,OAAO,MAAM,CAAC,OAAO,CAAE,GAAG,CAAoC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Callback = (...args: Array<any>) => any;
|
|
2
|
+
export type Return<T extends Callback> = (...args: Parameters<T>) => ReturnType<T>;
|
|
3
|
+
/**
|
|
4
|
+
* Similar to lodash once but without requiring lodash.
|
|
5
|
+
*
|
|
6
|
+
* @version 1.0.2
|
|
7
|
+
*/
|
|
8
|
+
export declare function once<T extends Callback>(fn: T): Return<T>;
|
|
9
|
+
//# sourceMappingURL=once.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../src/once/once.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,CAAE,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAM,GAAG,CAAC;AACtD,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAM,UAAU,CAAC,CAAC,CAAC,CAAA;AAEpF;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAG,EAAE,EAAE,CAAC,GAAI,MAAM,CAAC,CAAC,CAAC,CAY3D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Similar to lodash once but without requiring lodash.
|
|
3
|
+
*
|
|
4
|
+
* @version 1.0.2
|
|
5
|
+
*/
|
|
6
|
+
export function once(fn) {
|
|
7
|
+
let result;
|
|
8
|
+
let called = false;
|
|
9
|
+
return (...args) => {
|
|
10
|
+
if (!called) {
|
|
11
|
+
called = true;
|
|
12
|
+
result = fn(...args);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=once.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.js","sourceRoot":"","sources":["../../src/once/once.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAsB,EAAK;IAC9C,IAAI,MAAqB,CAAC;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,CAAE,GAAG,IAAmB,EAAG,EAAE;QACnC,IAAK,CAAE,MAAM,EAAG,CAAC;YAChB,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,GAAG,EAAE,CAAE,GAAG,IAAI,CAAE,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate a random key of a given length.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateRandomKey(length?: number): string;
|
|
10
|
+
/**
|
|
11
|
+
* Adds a leading slash to a URL if it doesn't already have one.
|
|
12
|
+
*
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export declare function addLeadingSlash(url: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Adds a trailing slash to a URL if it doesn't already have one.
|
|
18
|
+
*
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export declare function addTrailingSlash(url: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Removes a leading slash from a URL if it has one.
|
|
24
|
+
*
|
|
25
|
+
* @version 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export declare function removeLeadingSlash(url: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Removes a trailing slash from a URL if it has one.
|
|
30
|
+
*
|
|
31
|
+
* @version 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
export declare function removeTrailingSlash(url: string): string;
|
|
34
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string/string.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAE,MAAM,GAAE,MAAW,UAOrD;AAGD;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,MAAM,GAAI,MAAM,CAMrD;AAGD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,MAAM,GAAI,MAAM,CAMtD;AAGD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,MAAM,GAAI,MAAM,CAMxD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,MAAM,GAAI,MAAM,CAMzD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate a random key of a given length.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
export function generateRandomKey(length = 10) {
|
|
10
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
11
|
+
let result = '';
|
|
12
|
+
for (let i = 0; i < length; i++) {
|
|
13
|
+
result += characters.charAt(Math.floor(Math.random() * characters.length));
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Adds a leading slash to a URL if it doesn't already have one.
|
|
19
|
+
*
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export function addLeadingSlash(url) {
|
|
23
|
+
const trimmedURL = url.trim();
|
|
24
|
+
if ('' === trimmedURL) {
|
|
25
|
+
return url;
|
|
26
|
+
}
|
|
27
|
+
return url?.replace(/^\/?/, '/');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Adds a trailing slash to a URL if it doesn't already have one.
|
|
31
|
+
*
|
|
32
|
+
* @version 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export function addTrailingSlash(url) {
|
|
35
|
+
const trimmedURL = url.trim();
|
|
36
|
+
if ('' === trimmedURL) {
|
|
37
|
+
return url;
|
|
38
|
+
}
|
|
39
|
+
return url.replace(/\/?$/, '/');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Removes a leading slash from a URL if it has one.
|
|
43
|
+
*
|
|
44
|
+
* @version 1.0.0
|
|
45
|
+
*/
|
|
46
|
+
export function removeLeadingSlash(url) {
|
|
47
|
+
const trimmedURL = url.trim();
|
|
48
|
+
if ('' === trimmedURL) {
|
|
49
|
+
return url;
|
|
50
|
+
}
|
|
51
|
+
return url.replace(/^\//, '');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Removes a trailing slash from a URL if it has one.
|
|
55
|
+
*
|
|
56
|
+
* @version 1.0.0
|
|
57
|
+
*/
|
|
58
|
+
export function removeTrailingSlash(url) {
|
|
59
|
+
const trimmedURL = url.trim();
|
|
60
|
+
if ('' === trimmedURL) {
|
|
61
|
+
return url;
|
|
62
|
+
}
|
|
63
|
+
return url.replace(/\/$/, '');
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string/string.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAE,SAAiB,EAAE;IACrD,MAAM,UAAU,GAAG,gEAAgE,CAAC;IACpF,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAG,CAAC;QACnC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAE,CAAE,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAE,GAAW;IAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAK,EAAE,KAAK,UAAU,EAAG,CAAC;QACzB,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,EAAE,OAAO,CAAE,MAAM,EAAE,GAAG,CAAE,CAAC;AACpC,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAE,GAAW;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAK,EAAE,KAAK,UAAU,EAAG,CAAC;QACzB,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAE,MAAM,EAAE,GAAG,CAAE,CAAC;AACnC,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAE,GAAW;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAK,EAAE,KAAK,UAAU,EAAG,CAAC;QACzB,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAE,KAAK,EAAE,EAAE,CAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAE,GAAW;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAK,EAAE,KAAK,UAAU,EAAG,CAAC;QACzB,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAE,KAAK,EAAE,EAAE,CAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Callback } from '../once/once.js';
|
|
2
|
+
type Result<T extends Callback> = {
|
|
3
|
+
(...args: Parameters<T>): ReturnType<T>;
|
|
4
|
+
immediate: (...args: Parameters<T>) => ReturnType<T>;
|
|
5
|
+
cancel: () => void;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Alternative to lodash throttle.
|
|
9
|
+
*
|
|
10
|
+
* - Additional support for `immediate` execution to bypass the wait time.
|
|
11
|
+
* - Returns a promise to allow waiting for a completion of the throttled function.
|
|
12
|
+
*
|
|
13
|
+
* @version 1.0.1
|
|
14
|
+
*/
|
|
15
|
+
export declare function throttle<T extends Callback>(fn: T, wait?: number): Result<T>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=throttle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/throttle/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAEtD,KAAK,MAAM,CAAC,CAAC,SAAS,QAAQ,IAAI;IACjC,CAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAM,UAAU,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAG,EAAE,EAAE,CAAC,EAAE,IAAI,SAAM,GAAI,MAAM,CAAC,CAAC,CAAC,CAwC3E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alternative to lodash throttle.
|
|
3
|
+
*
|
|
4
|
+
* - Additional support for `immediate` execution to bypass the wait time.
|
|
5
|
+
* - Returns a promise to allow waiting for a completion of the throttled function.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.1
|
|
8
|
+
*/
|
|
9
|
+
export function throttle(fn, wait = 300) {
|
|
10
|
+
let lastTime = 0;
|
|
11
|
+
let timer;
|
|
12
|
+
let result;
|
|
13
|
+
const throttled = function (...args) {
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
const remaining = now - lastTime;
|
|
16
|
+
if (remaining >= wait) {
|
|
17
|
+
clearTimeout(timer);
|
|
18
|
+
timer = undefined;
|
|
19
|
+
lastTime = now;
|
|
20
|
+
return fn(...args);
|
|
21
|
+
}
|
|
22
|
+
if ('undefined' === typeof timer) {
|
|
23
|
+
timer = setTimeout(() => {
|
|
24
|
+
lastTime = Date.now();
|
|
25
|
+
result = fn(...args);
|
|
26
|
+
timer = undefined;
|
|
27
|
+
}, wait - remaining);
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
// Immediate execution method.
|
|
32
|
+
throttled.immediate = function (...args) {
|
|
33
|
+
clearTimeout(timer);
|
|
34
|
+
lastTime = Date.now();
|
|
35
|
+
return fn(...args);
|
|
36
|
+
};
|
|
37
|
+
// Cancel method.
|
|
38
|
+
throttled.cancel = function () {
|
|
39
|
+
clearTimeout(timer);
|
|
40
|
+
};
|
|
41
|
+
return throttled;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/throttle/throttle.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAsB,EAAK,EAAE,IAAI,GAAG,GAAG;IAC9D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAA0C,CAAC;IAC/C,IAAI,MAAqB,CAAC;IAE1B,MAAM,SAAS,GAAG,UAAU,GAAG,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,GAAG,QAAQ,CAAC;QAEjC,IAAK,SAAS,IAAI,IAAI,EAAG,CAAC;YACzB,YAAY,CAAE,KAAK,CAAE,CAAC;YACtB,KAAK,GAAG,SAAS,CAAC;YAClB,QAAQ,GAAG,GAAG,CAAC;YACf,OAAO,EAAE,CAAE,GAAG,IAAI,CAAE,CAAC;QACtB,CAAC;QAED,IAAK,WAAW,KAAK,OAAO,KAAK,EAAG,CAAC;YACpC,KAAK,GAAG,UAAU,CAAE,GAAG,EAAE;gBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtB,MAAM,GAAG,EAAE,CAAE,GAAG,IAAI,CAAE,CAAC;gBACvB,KAAK,GAAG,SAAS,CAAC;YACnB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAE,CAAC;QACvB,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,8BAA8B;IAC9B,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,IAAmB;QACrD,YAAY,CAAE,KAAK,CAAE,CAAC;QACtB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,EAAE,CAAE,GAAG,IAAI,CAAE,CAAC;IACtB,CAAC,CAAC;IAEF,iBAAiB;IACjB,SAAS,CAAC,MAAM,GAAG;QAClB,YAAY,CAAE,KAAK,CAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,SAAsB,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
3
|
+
*
|
|
4
|
+
* @notice More URL helpers are available within `@wordpress/url` package
|
|
5
|
+
* when being used in the admin or when added as a dependency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @see @lipemat/js-boilerplate-gutenberg{getQueryArg} for more robust version.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getUrlParam(parameter: string, defaultValue?: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* @see @lipemat/js-boilerplate-gutenberg{addQueryArgs} for more robust version.
|
|
13
|
+
*/
|
|
14
|
+
export declare function addQueryArgs(url: string | undefined, args: {
|
|
15
|
+
[name: string]: string | number;
|
|
16
|
+
}): string;
|
|
17
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/url/url.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAC1B,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,MAAW,GACvB,MAAM,GAAG,IAAI,CAOf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAE,MAAM,YAAK,EAAE,IAAI,EAAE;IAAE,CAAE,IAAI,EAAE,MAAM,GAAI,MAAM,GAAG,MAAM,CAAA;CAAE,UAO1F"}
|
package/dist/url/url.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import DOMPurify from 'dompurify';
|
|
2
|
+
/**
|
|
3
|
+
* @notice More robust versions are available from the `@lipemat/js-boilerplate-gutenberg` package.
|
|
4
|
+
*
|
|
5
|
+
* @notice More URL helpers are available within `@wordpress/url` package
|
|
6
|
+
* when being used in the admin or when added as a dependency.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @see @lipemat/js-boilerplate-gutenberg{getQueryArg} for more robust version.
|
|
10
|
+
*/
|
|
11
|
+
export function getUrlParam(parameter, defaultValue = '') {
|
|
12
|
+
const urlParams = new URLSearchParams(DOMPurify.sanitize(window.location.search));
|
|
13
|
+
if (urlParams.has(parameter)) {
|
|
14
|
+
return urlParams.get(parameter);
|
|
15
|
+
}
|
|
16
|
+
return defaultValue;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @see @lipemat/js-boilerplate-gutenberg{addQueryArgs} for more robust version.
|
|
20
|
+
*/
|
|
21
|
+
export function addQueryArgs(url = '', args) {
|
|
22
|
+
const path = new URL(url);
|
|
23
|
+
Object.keys(args).forEach(arg => {
|
|
24
|
+
path.searchParams.append(DOMPurify.sanitize(arg), args[arg].toString());
|
|
25
|
+
});
|
|
26
|
+
return path.toString();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/url/url.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,UAAU,WAAW,CAC1B,SAAiB,EACjB,eAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAE,SAAS,CAAC,QAAQ,CAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAE,CAAE,CAAC;IAEtF,IAAK,SAAS,CAAC,GAAG,CAAE,SAAS,CAAE,EAAG,CAAC;QAClC,OAAO,SAAS,CAAC,GAAG,CAAE,SAAS,CAAE,CAAC;IACnC,CAAC;IACD,OAAO,YAAY,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAE,MAAc,EAAE,EAAE,IAA2C;IAC1F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,GAAG,CAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;QAClC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAE,SAAS,CAAC,QAAQ,CAAE,GAAG,CAAE,EAAE,IAAI,CAAE,GAAG,CAAE,CAAC,QAAQ,EAAE,CAAE,CAAC;IAC/E,CAAC,CAAE,CAAC;IAEJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC"}
|