@rb2bv/cache-handler
Version:
Next.js self-hosting simplified.
40 lines (36 loc) • 1.13 kB
JavaScript
// src/constants.ts
var MAX_INT32 = 2 ** 31 - 1;
// src/helpers/promise-with-timeout.ts
function promiseWithTimeout(operation, timeoutMs) {
if (typeof timeoutMs !== "number" || Number.isNaN(timeoutMs) || timeoutMs <= 0 || timeoutMs > MAX_INT32) {
return operation;
}
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(reject, timeoutMs, new Error(`Operation timed out after ${timeoutMs} ms`));
operation.then((result) => {
clearTimeout(timeoutId);
resolve(result);
}).catch((error) => {
clearTimeout(timeoutId);
reject(error);
});
});
}
// src/helpers/is-implicit-tag.ts
var NEXT_CACHE_IMPLICIT_TAG_ID = "_N_T_";
function isImplicitTag(tag) {
return tag.startsWith(NEXT_CACHE_IMPLICIT_TAG_ID);
}
// src/helpers/get-timeout-redis-command-options.ts
import { commandOptions } from "redis";
function getTimeoutRedisCommandOptions(timeoutMs) {
if (timeoutMs === 0) {
return commandOptions({});
}
return commandOptions({ signal: AbortSignal.timeout(timeoutMs) });
}
export {
getTimeoutRedisCommandOptions,
isImplicitTag,
promiseWithTimeout
};