Compare commits

..

2 Commits

Author SHA1 Message Date
e4229296c1 Added escapeRegex
All checks were successful
Build / Build NPM Project (push) Successful in 59s
Build / Tag Version (push) Successful in 14s
Build / Publish Documentation (push) Successful in 42s
2024-10-12 12:27:45 -04:00
b93ed45521 Renamed sleepUntil to sleepWhile, it was misleading
All checks were successful
Build / Build NPM Project (push) Successful in 1m5s
Build / Tag Version (push) Successful in 14s
Build / Publish Documentation (push) Successful in 39s
2024-10-07 15:40:14 -04:00
4 changed files with 15 additions and 5 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.17.2", "version": "0.18.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.17.2", "version": "0.18.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"var-persist": "^1.0.1" "var-persist": "^1.0.1"

View File

@ -1,6 +1,6 @@
{ {
"name": "@ztimson/utils", "name": "@ztimson/utils",
"version": "0.17.2", "version": "0.18.1",
"description": "Utility library", "description": "Utility library",
"author": "Zak Timson", "author": "Zak Timson",
"license": "MIT", "license": "MIT",

View File

@ -11,3 +11,13 @@ export function gravatar(email: string, def='mp') {
if(!email) return ''; if(!email) return '';
return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`; return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
} }
/**
* Escape any regex special characters to avoid misinterpretation during search
*
* @param {string} value String which should be escaped
* @return {string} New escaped sequence
*/
function escapeRegex(value: string) {
return value.replace(/[.*+?^${}()|\[\]\\]/g, '\\$&');
}

View File

@ -36,14 +36,14 @@ export function sleep(ms: number): Promise<void> {
* ```js * ```js
* let loading = true; * let loading = true;
* setTimeout(() => wait = false, 1000); * setTimeout(() => wait = false, 1000);
* await sleepUntil(() => loading); // Won't continue until loading flag is false * await sleepWhile(() => loading); // Won't continue until loading flag is false
* ``` * ```
* *
* @param {() => boolean | Promise<boolean>} fn Return true to continue * @param {() => boolean | Promise<boolean>} fn Return true to continue
* @param {number} checkInterval Run function ever x milliseconds * @param {number} checkInterval Run function ever x milliseconds
* @return {Promise<void>} Callback when sleep is over * @return {Promise<void>} Callback when sleep is over
*/ */
export async function sleepUntil(fn : () => boolean | Promise<boolean>, checkInterval = 100): Promise<void> { export async function sleepWhile(fn : () => boolean | Promise<boolean>, checkInterval = 100): Promise<void> {
while(await fn()) await sleep(checkInterval); while(await fn()) await sleep(checkInterval);
} }