Comparing version 0.0.9 to 0.0.10
@@ -8,4 +8,4 @@ export { isBrowser, ensureBrowser } from './dom.js'; | ||
export { capitalize, uncapitalize, base64ToURI, uriToBase64, isoBtoa, isoAtob, normalizeVietnamese } from './str.js'; | ||
export { sleep, cancellableSleep, setTimeoutUntil, setTimeoutUnlimited, timeoutWait } from './time.js'; | ||
export { sleep, setTimeoutUntil } from './time.js'; | ||
export { as } from './type.js'; | ||
export type { IgnoreLastIfVoid, UndefinedToNull, Nullable, UnionToIntersection, AllOrNone, Promisable } from './type.js'; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.as = exports.timeoutWait = exports.setTimeoutUnlimited = exports.setTimeoutUntil = exports.cancellableSleep = exports.sleep = exports.normalizeVietnamese = exports.isoAtob = exports.isoBtoa = exports.uriToBase64 = exports.base64ToURI = exports.uncapitalize = exports.capitalize = exports.zip = exports.isObject = exports.emptyArray = exports.emptyObject = exports.objectMap = exports.pluck = exports.omit = exports.pick = exports.deepPick = exports.set = exports.get = exports.deepHas = exports.recursiveSet = exports.floatToStr = exports.isInteger = exports.isValidNumber = exports.makeLazySync = exports.makeMemoize = exports.makeLazy = exports.concatBuffers = exports.readableStreamToAsyncIterator = exports.asyncIteratorToArray = exports.not = exports.noop = exports.identity = exports.negate = exports.ensureBrowser = exports.isBrowser = void 0; | ||
exports.as = exports.setTimeoutUntil = exports.sleep = exports.normalizeVietnamese = exports.isoAtob = exports.isoBtoa = exports.uriToBase64 = exports.base64ToURI = exports.uncapitalize = exports.capitalize = exports.zip = exports.isObject = exports.emptyArray = exports.emptyObject = exports.objectMap = exports.pluck = exports.omit = exports.pick = exports.deepPick = exports.set = exports.get = exports.deepHas = exports.recursiveSet = exports.floatToStr = exports.isInteger = exports.isValidNumber = exports.makeLazySync = exports.makeMemoize = exports.makeLazy = exports.concatBuffers = exports.readableStreamToAsyncIterator = exports.asyncIteratorToArray = exports.not = exports.noop = exports.identity = exports.negate = exports.ensureBrowser = exports.isBrowser = void 0; | ||
var dom_js_1 = require("./dom.js"); | ||
@@ -48,8 +48,5 @@ Object.defineProperty(exports, "isBrowser", { enumerable: true, get: function () { return dom_js_1.isBrowser; } }); | ||
Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return time_js_1.sleep; } }); | ||
Object.defineProperty(exports, "cancellableSleep", { enumerable: true, get: function () { return time_js_1.cancellableSleep; } }); | ||
Object.defineProperty(exports, "setTimeoutUntil", { enumerable: true, get: function () { return time_js_1.setTimeoutUntil; } }); | ||
Object.defineProperty(exports, "setTimeoutUnlimited", { enumerable: true, get: function () { return time_js_1.setTimeoutUnlimited; } }); | ||
Object.defineProperty(exports, "timeoutWait", { enumerable: true, get: function () { return time_js_1.timeoutWait; } }); | ||
var type_js_1 = require("./type.js"); | ||
Object.defineProperty(exports, "as", { enumerable: true, get: function () { return type_js_1.as; } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlEO0FBQXpDLG1HQUFBLFNBQVMsT0FBQTtBQUFFLHVHQUFBLGFBQWEsT0FBQTtBQUNoQyxxQ0FBcUQ7QUFBN0MsaUdBQUEsTUFBTSxPQUFBO0FBQUUsbUdBQUEsUUFBUSxPQUFBO0FBQUUsK0ZBQUEsSUFBSSxPQUFBO0FBQUUsOEZBQUEsR0FBRyxPQUFBO0FBQ25DLG1EQUFtRztBQUEzRixzSEFBQSxvQkFBb0IsT0FBQTtBQUFFLCtIQUFBLDZCQUE2QixPQUFBO0FBQUUsK0dBQUEsYUFBYSxPQUFBO0FBQzFFLHFDQUE2RDtBQUFyRCxtR0FBQSxRQUFRLE9BQUE7QUFBRSxzR0FBQSxXQUFXLE9BQUE7QUFBRSx1R0FBQSxZQUFZLE9BQUE7QUFDM0MsbUNBQTZEO0FBQXJELHVHQUFBLGFBQWEsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLG9HQUFBLFVBQVUsT0FBQTtBQUM1QyxtQ0FBd0k7QUFBaEksc0dBQUEsWUFBWSxPQUFBO0FBQUUsaUdBQUEsT0FBTyxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQUUsa0dBQUEsUUFBUSxPQUFBO0FBQUUsOEZBQUEsSUFBSSxPQUFBO0FBQUUsOEZBQUEsSUFBSSxPQUFBO0FBQUUsK0ZBQUEsS0FBSyxPQUFBO0FBQUUsbUdBQUEsU0FBUyxPQUFBO0FBQUUscUdBQUEsV0FBVyxPQUFBO0FBQUUsb0dBQUEsVUFBVSxPQUFBO0FBQUUsa0dBQUEsUUFBUSxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQ3ZILG1DQUFrSDtBQUExRyxvR0FBQSxVQUFVLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSxxR0FBQSxXQUFXLE9BQUE7QUFBRSxxR0FBQSxXQUFXLE9BQUE7QUFBRSxpR0FBQSxPQUFPLE9BQUE7QUFBRSxpR0FBQSxPQUFPLE9BQUE7QUFBRSw2R0FBQSxtQkFBbUIsT0FBQTtBQUNqRyxxQ0FBb0c7QUFBNUYsZ0dBQUEsS0FBSyxPQUFBO0FBQUUsMkdBQUEsZ0JBQWdCLE9BQUE7QUFBRSwwR0FBQSxlQUFlLE9BQUE7QUFBRSw4R0FBQSxtQkFBbUIsT0FBQTtBQUFFLHNHQUFBLFdBQVcsT0FBQTtBQUNsRixxQ0FBNEI7QUFBcEIsNkZBQUEsRUFBRSxPQUFBIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlEO0FBQXpDLG1HQUFBLFNBQVMsT0FBQTtBQUFFLHVHQUFBLGFBQWEsT0FBQTtBQUNoQyxxQ0FBcUQ7QUFBN0MsaUdBQUEsTUFBTSxPQUFBO0FBQUUsbUdBQUEsUUFBUSxPQUFBO0FBQUUsK0ZBQUEsSUFBSSxPQUFBO0FBQUUsOEZBQUEsR0FBRyxPQUFBO0FBQ25DLG1EQUFtRztBQUEzRixzSEFBQSxvQkFBb0IsT0FBQTtBQUFFLCtIQUFBLDZCQUE2QixPQUFBO0FBQUUsK0dBQUEsYUFBYSxPQUFBO0FBQzFFLHFDQUE2RDtBQUFyRCxtR0FBQSxRQUFRLE9BQUE7QUFBRSxzR0FBQSxXQUFXLE9BQUE7QUFBRSx1R0FBQSxZQUFZLE9BQUE7QUFDM0MsbUNBQTZEO0FBQXJELHVHQUFBLGFBQWEsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLG9HQUFBLFVBQVUsT0FBQTtBQUM1QyxtQ0FBd0k7QUFBaEksc0dBQUEsWUFBWSxPQUFBO0FBQUUsaUdBQUEsT0FBTyxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQUUsa0dBQUEsUUFBUSxPQUFBO0FBQUUsOEZBQUEsSUFBSSxPQUFBO0FBQUUsOEZBQUEsSUFBSSxPQUFBO0FBQUUsK0ZBQUEsS0FBSyxPQUFBO0FBQUUsbUdBQUEsU0FBUyxPQUFBO0FBQUUscUdBQUEsV0FBVyxPQUFBO0FBQUUsb0dBQUEsVUFBVSxPQUFBO0FBQUUsa0dBQUEsUUFBUSxPQUFBO0FBQUUsNkZBQUEsR0FBRyxPQUFBO0FBQ3ZILG1DQUFrSDtBQUExRyxvR0FBQSxVQUFVLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSxxR0FBQSxXQUFXLE9BQUE7QUFBRSxxR0FBQSxXQUFXLE9BQUE7QUFBRSxpR0FBQSxPQUFPLE9BQUE7QUFBRSxpR0FBQSxPQUFPLE9BQUE7QUFBRSw2R0FBQSxtQkFBbUIsT0FBQTtBQUNqRyxxQ0FBZ0Q7QUFBeEMsZ0dBQUEsS0FBSyxPQUFBO0FBQUUsMEdBQUEsZUFBZSxPQUFBO0FBQzlCLHFDQUE0QjtBQUFwQiw2RkFBQSxFQUFFLE9BQUEifQ== |
@@ -1,11 +0,2 @@ | ||
/// <reference types="node" /> | ||
import type { MutableRefObject } from 'react'; | ||
export declare function sleep(millisecond: number): Promise<unknown>; | ||
export declare function cancellableSleep(millisecond: number): { | ||
promise: Promise<void>; | ||
cancel(): void; | ||
}; | ||
export declare function setTimeoutUntil(cb: () => any, end: number): MutableRefObject<ReturnType<typeof setTimeout>>; | ||
export declare function setTimeoutUnlimited(cb: () => any, timeout: number): MutableRefObject<NodeJS.Timeout>; | ||
export declare function timeoutWait<T, V>(promise: Promise<T>, time: number, fallback: V): Promise<T | V>; | ||
export declare function timeoutWait<T>(promise: Promise<T>, time: number): Promise<T | undefined>; | ||
export declare function setTimeoutUntil(cb: () => any, until: number): () => void; |
"use strict"; | ||
// eslint-disable-next-line no-promise-executor-return | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.timeoutWait = exports.setTimeoutUnlimited = exports.setTimeoutUntil = exports.cancellableSleep = exports.sleep = void 0; | ||
exports.setTimeoutUntil = exports.sleep = void 0; | ||
// hint: in node enviroent, use 'timers/promises/setTimeout' | ||
function sleep(millisecond) { | ||
@@ -8,20 +10,2 @@ return new Promise(resolve => void setTimeout(resolve, millisecond)); | ||
exports.sleep = sleep; | ||
function cancellableSleep(millisecond) { | ||
let timeout; | ||
// eslint-disable-next-line no-promise-executor-return | ||
const promise = new Promise(resolve => void (timeout = setTimeout(() => { | ||
timeout = undefined; | ||
resolve(); | ||
}, millisecond))); | ||
return { | ||
promise, | ||
cancel() { | ||
if (timeout) { | ||
clearTimeout(timeout); | ||
timeout = undefined; | ||
} | ||
}, | ||
}; | ||
} | ||
exports.cancellableSleep = cancellableSleep; | ||
// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value | ||
@@ -33,36 +17,24 @@ const MAX_TIMEOUT = 2_147_483_647; | ||
// Passing an invalid ID to clearTimeout() silently does nothing; no exception is thrown. | ||
const setTimeoutUntilRef = (cb, end, ref) => { | ||
const diff = end - Date.now(); | ||
ref.current = diff <= MAX_TIMEOUT | ||
? setTimeout(cb, Math.max(diff, 0)) | ||
: setTimeout(() => { | ||
setTimeoutUntilRef(cb, end, ref); | ||
}, MAX_TIMEOUT); | ||
}; | ||
// timeout has limit of 2147483647 | ||
function setTimeoutUntil(cb, end) { | ||
const ref = { current: undefined }; | ||
setTimeoutUntilRef(cb, end, ref); | ||
return ref; | ||
function setTimeoutUntil(cb, until) { | ||
let timeout; | ||
const sub = (cb, until) => { | ||
const diff = until - Date.now(); | ||
if (diff <= MAX_TIMEOUT) { | ||
timeout = setTimeout(cb, Math.max(diff, 0)); | ||
} | ||
else { | ||
timeout = setTimeout(() => { | ||
sub(cb, until); | ||
}, MAX_TIMEOUT); | ||
} | ||
}; | ||
sub(cb, until); | ||
return () => { | ||
if (timeout) | ||
clearTimeout(timeout); | ||
timeout = undefined; | ||
}; | ||
} | ||
exports.setTimeoutUntil = setTimeoutUntil; | ||
function setTimeoutUnlimited(cb, timeout) { | ||
return setTimeoutUntil(cb, Date.now() + timeout); | ||
} | ||
exports.setTimeoutUnlimited = setTimeoutUnlimited; | ||
async function timeoutWait(promise, time, fallback = undefined) { | ||
if (time <= 0) | ||
return fallback; | ||
const { promise: timeoutPromise, cancel } = cancellableSleep(time); | ||
try { | ||
return await Promise.race([ | ||
promise, | ||
timeoutPromise.then(() => fallback), | ||
]); | ||
} | ||
finally { | ||
cancel(); | ||
} | ||
} | ||
exports.timeoutWait = timeoutWait; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLFNBQWdCLEtBQUssQ0FBQyxXQUFtQjtJQUN4QyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7QUFDckUsQ0FBQztBQUZELHNCQUVDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsV0FBbUI7SUFDbkQsSUFBSSxPQUFrRCxDQUFBO0lBQ3RELHNEQUFzRDtJQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUM1RSxPQUFPLEdBQUcsU0FBUyxDQUFBO1FBQ25CLE9BQU8sRUFBRSxDQUFBO0lBQ1YsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixPQUFPO1FBQ04sT0FBTztRQUNQLE1BQU07WUFDTCxJQUFJLE9BQU8sRUFBRTtnQkFDWixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ3JCLE9BQU8sR0FBRyxTQUFTLENBQUE7YUFDbkI7UUFDRixDQUFDO0tBQ0QsQ0FBQTtBQUNGLENBQUM7QUFoQkQsNENBZ0JDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQTtBQUNqQyw0RUFBNEU7QUFDNUUsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFBO0FBQ2hDLHNFQUFzRTtBQUN0RSx5RkFBeUY7QUFDekYsTUFBTSxrQkFBa0IsR0FBRyxDQUMxQixFQUFhLEVBQ2IsR0FBVyxFQUNYLEdBQW9ELEVBQ25ELEVBQUU7SUFDSCxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQzdCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLFdBQVc7UUFDaEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDakIsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNqQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUE7QUFDakIsQ0FBQyxDQUFBO0FBRUQsa0NBQWtDO0FBQ2xDLFNBQWdCLGVBQWUsQ0FDOUIsRUFBYSxFQUNiLEdBQVc7SUFFWCxNQUFNLEdBQUcsR0FBRyxFQUFDLE9BQU8sRUFBRSxTQUFnQixFQUFDLENBQUE7SUFDdkMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNoQyxPQUFPLEdBQUcsQ0FBQTtBQUNYLENBQUM7QUFQRCwwQ0FPQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLEVBQWEsRUFBRSxPQUFlO0lBQ2pFLE9BQU8sZUFBZSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7QUFDakQsQ0FBQztBQUZELGtEQUVDO0FBWU0sS0FBSyxVQUFVLFdBQVcsQ0FDaEMsT0FBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQVEsR0FBRyxTQUFTO0lBRXBCLElBQUksSUFBSSxJQUFJLENBQUM7UUFBRSxPQUFPLFFBQVEsQ0FBQTtJQUM5QixNQUFNLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoRSxJQUFJO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDekIsT0FBTztZQUNQLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQ25DLENBQUMsQ0FBQTtLQUNGO1lBQVM7UUFDVCxNQUFNLEVBQUUsQ0FBQTtLQUNSO0FBQ0YsQ0FBQztBQWZELGtDQWVDIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzREFBc0Q7OztBQUV0RCw0REFBNEQ7QUFDNUQsU0FBZ0IsS0FBSyxDQUFDLFdBQW1CO0lBQ3hDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNyRSxDQUFDO0FBRkQsc0JBRUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFBO0FBQ2pDLDRFQUE0RTtBQUM1RSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUE7QUFDaEMsc0VBQXNFO0FBQ3RFLHlGQUF5RjtBQUN6RixrQ0FBa0M7QUFDbEMsU0FBZ0IsZUFBZSxDQUM5QixFQUFhLEVBQ2IsS0FBYTtJQUViLElBQUksT0FBa0QsQ0FBQTtJQUV0RCxNQUFNLEdBQUcsR0FBRyxDQUNYLEVBQWEsRUFDYixLQUFhLEVBQ1osRUFBRTtRQUNILE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDL0IsSUFBSSxJQUFJLElBQUksV0FBVyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDM0M7YUFBTTtZQUNOLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QixHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2YsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1NBQ2Y7SUFDRixDQUFDLENBQUE7SUFDRCxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2QsT0FBTyxHQUFHLEVBQUU7UUFDWCxJQUFJLE9BQU87WUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsT0FBTyxHQUFHLFNBQVMsQ0FBQTtJQUNwQixDQUFDLENBQUE7QUFDRixDQUFDO0FBeEJELDBDQXdCQyJ9 |
@@ -8,4 +8,4 @@ export { isBrowser, ensureBrowser } from './dom.js'; | ||
export { capitalize, uncapitalize, base64ToURI, uriToBase64, isoBtoa, isoAtob, normalizeVietnamese } from './str.js'; | ||
export { sleep, cancellableSleep, setTimeoutUntil, setTimeoutUnlimited, timeoutWait } from './time.js'; | ||
export { sleep, setTimeoutUntil } from './time.js'; | ||
export { as } from './type.js'; | ||
export type { IgnoreLastIfVoid, UndefinedToNull, Nullable, UnionToIntersection, AllOrNone, Promisable } from './type.js'; |
@@ -8,4 +8,4 @@ export { isBrowser, ensureBrowser } from './dom.js'; | ||
export { capitalize, uncapitalize, base64ToURI, uriToBase64, isoBtoa, isoAtob, normalizeVietnamese } from './str.js'; | ||
export { sleep, cancellableSleep, setTimeoutUntil, setTimeoutUnlimited, timeoutWait } from './time.js'; | ||
export { sleep, setTimeoutUntil } from './time.js'; | ||
export { as } from './type.js'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDbkcsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzdELE9BQU8sRUFBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQTtBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sVUFBVSxDQUFBO0FBQ3hJLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLFVBQVUsQ0FBQTtBQUNsSCxPQUFPLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDcEcsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLFdBQVcsQ0FBQSJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsNkJBQTZCLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDbkcsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzdELE9BQU8sRUFBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQTtBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sVUFBVSxDQUFBO0FBQ3hJLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLFVBQVUsQ0FBQTtBQUNsSCxPQUFPLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUNoRCxPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sV0FBVyxDQUFBIn0= |
@@ -1,11 +0,2 @@ | ||
/// <reference types="node" /> | ||
import type { MutableRefObject } from 'react'; | ||
export declare function sleep(millisecond: number): Promise<unknown>; | ||
export declare function cancellableSleep(millisecond: number): { | ||
promise: Promise<void>; | ||
cancel(): void; | ||
}; | ||
export declare function setTimeoutUntil(cb: () => any, end: number): MutableRefObject<ReturnType<typeof setTimeout>>; | ||
export declare function setTimeoutUnlimited(cb: () => any, timeout: number): MutableRefObject<NodeJS.Timeout>; | ||
export declare function timeoutWait<T, V>(promise: Promise<T>, time: number, fallback: V): Promise<T | V>; | ||
export declare function timeoutWait<T>(promise: Promise<T>, time: number): Promise<T | undefined>; | ||
export declare function setTimeoutUntil(cb: () => any, until: number): () => void; |
@@ -0,21 +1,6 @@ | ||
// eslint-disable-next-line no-promise-executor-return | ||
// hint: in node enviroent, use 'timers/promises/setTimeout' | ||
export function sleep(millisecond) { | ||
return new Promise(resolve => void setTimeout(resolve, millisecond)); | ||
} | ||
export function cancellableSleep(millisecond) { | ||
let timeout; | ||
// eslint-disable-next-line no-promise-executor-return | ||
const promise = new Promise(resolve => void (timeout = setTimeout(() => { | ||
timeout = undefined; | ||
resolve(); | ||
}, millisecond))); | ||
return { | ||
promise, | ||
cancel() { | ||
if (timeout) { | ||
clearTimeout(timeout); | ||
timeout = undefined; | ||
} | ||
}, | ||
}; | ||
} | ||
// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value | ||
@@ -27,33 +12,23 @@ const MAX_TIMEOUT = 2_147_483_647; | ||
// Passing an invalid ID to clearTimeout() silently does nothing; no exception is thrown. | ||
const setTimeoutUntilRef = (cb, end, ref) => { | ||
const diff = end - Date.now(); | ||
ref.current = diff <= MAX_TIMEOUT | ||
? setTimeout(cb, Math.max(diff, 0)) | ||
: setTimeout(() => { | ||
setTimeoutUntilRef(cb, end, ref); | ||
}, MAX_TIMEOUT); | ||
}; | ||
// timeout has limit of 2147483647 | ||
export function setTimeoutUntil(cb, end) { | ||
const ref = { current: undefined }; | ||
setTimeoutUntilRef(cb, end, ref); | ||
return ref; | ||
export function setTimeoutUntil(cb, until) { | ||
let timeout; | ||
const sub = (cb, until) => { | ||
const diff = until - Date.now(); | ||
if (diff <= MAX_TIMEOUT) { | ||
timeout = setTimeout(cb, Math.max(diff, 0)); | ||
} | ||
else { | ||
timeout = setTimeout(() => { | ||
sub(cb, until); | ||
}, MAX_TIMEOUT); | ||
} | ||
}; | ||
sub(cb, until); | ||
return () => { | ||
if (timeout) | ||
clearTimeout(timeout); | ||
timeout = undefined; | ||
}; | ||
} | ||
export function setTimeoutUnlimited(cb, timeout) { | ||
return setTimeoutUntil(cb, Date.now() + timeout); | ||
} | ||
export async function timeoutWait(promise, time, fallback = undefined) { | ||
if (time <= 0) | ||
return fallback; | ||
const { promise: timeoutPromise, cancel } = cancellableSleep(time); | ||
try { | ||
return await Promise.race([ | ||
promise, | ||
timeoutPromise.then(() => fallback), | ||
]); | ||
} | ||
finally { | ||
cancel(); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxLQUFLLENBQUMsV0FBbUI7SUFDeEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsV0FBbUI7SUFDbkQsSUFBSSxPQUFrRCxDQUFBO0lBQ3RELHNEQUFzRDtJQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUM1RSxPQUFPLEdBQUcsU0FBUyxDQUFBO1FBQ25CLE9BQU8sRUFBRSxDQUFBO0lBQ1YsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixPQUFPO1FBQ04sT0FBTztRQUNQLE1BQU07WUFDTCxJQUFJLE9BQU8sRUFBRTtnQkFDWixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ3JCLE9BQU8sR0FBRyxTQUFTLENBQUE7YUFDbkI7UUFDRixDQUFDO0tBQ0QsQ0FBQTtBQUNGLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFBO0FBQ2pDLDRFQUE0RTtBQUM1RSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUE7QUFDaEMsc0VBQXNFO0FBQ3RFLHlGQUF5RjtBQUN6RixNQUFNLGtCQUFrQixHQUFHLENBQzFCLEVBQWEsRUFDYixHQUFXLEVBQ1gsR0FBb0QsRUFDbkQsRUFBRTtJQUNILE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDN0IsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksV0FBVztRQUNoQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNqQixrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2pDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQTtBQUNqQixDQUFDLENBQUE7QUFFRCxrQ0FBa0M7QUFDbEMsTUFBTSxVQUFVLGVBQWUsQ0FDOUIsRUFBYSxFQUNiLEdBQVc7SUFFWCxNQUFNLEdBQUcsR0FBRyxFQUFDLE9BQU8sRUFBRSxTQUFnQixFQUFDLENBQUE7SUFDdkMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNoQyxPQUFPLEdBQUcsQ0FBQTtBQUNYLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBYSxFQUFFLE9BQWU7SUFDakUsT0FBTyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBWUQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQ2hDLE9BQW1CLEVBQ25CLElBQVksRUFDWixRQUFRLEdBQUcsU0FBUztJQUVwQixJQUFJLElBQUksSUFBSSxDQUFDO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFDOUIsTUFBTSxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEUsSUFBSTtRQUNILE9BQU8sTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pCLE9BQU87WUFDUCxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNuQyxDQUFDLENBQUE7S0FDRjtZQUFTO1FBQ1QsTUFBTSxFQUFFLENBQUE7S0FDUjtBQUNGLENBQUMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUV0RCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxXQUFtQjtJQUN4QyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7QUFDckUsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUE7QUFDakMsNEVBQTRFO0FBQzVFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQTtBQUNoQyxzRUFBc0U7QUFDdEUseUZBQXlGO0FBQ3pGLGtDQUFrQztBQUNsQyxNQUFNLFVBQVUsZUFBZSxDQUM5QixFQUFhLEVBQ2IsS0FBYTtJQUViLElBQUksT0FBa0QsQ0FBQTtJQUV0RCxNQUFNLEdBQUcsR0FBRyxDQUNYLEVBQWEsRUFDYixLQUFhLEVBQ1osRUFBRTtRQUNILE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDL0IsSUFBSSxJQUFJLElBQUksV0FBVyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDM0M7YUFBTTtZQUNOLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QixHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2YsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1NBQ2Y7SUFDRixDQUFDLENBQUE7SUFDRCxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2QsT0FBTyxHQUFHLEVBQUU7UUFDWCxJQUFJLE9BQU87WUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsT0FBTyxHQUFHLFNBQVMsQ0FBQTtJQUNwQixDQUFDLENBQUE7QUFDRixDQUFDIn0= |
{ | ||
"name": "jmisc", | ||
"version": "0.0.9", | ||
"version": "0.0.10", | ||
"main": "cjs/index.js", | ||
@@ -5,0 +5,0 @@ "exports": { |
@@ -13,5 +13,5 @@ # jmisc - Javascript utilities tool | ||
export {capitalize, uncapitalize, base64ToURI, uriToBase64, isoBtoa, isoAtob, normalizeVietnamese} from './str' | ||
export {sleep, cancellableSleep, setTimeoutUntil, setTimeoutUnlimited, timeoutWait} from './time' | ||
export {sleep, setTimeoutUntil} from './time' | ||
export {as} from './type' | ||
export type {IgnoreLastIfVoid, UndefinedToNull, Nullable, UnionToIntersection, AllOrNone, Promisable} from './type' | ||
``` |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
73652
935