@roopakv/nuqs
Version:
Type-safe search params state manager for React - Like useState, but stored in the URL query string
51 lines (49 loc) • 1.2 kB
JavaScript
// src/debug.ts
var enabled = isDebugEnabled();
function debug(message, ...args) {
if (!enabled) {
return;
}
const msg = sprintf(message, ...args);
performance.mark(msg);
console.log(message, ...args);
}
function warn(message, ...args) {
if (!enabled) {
return;
}
console.warn(message, ...args);
}
function sprintf(base, ...args) {
return base.replace(/%[sfdO]/g, (match) => {
const arg = args.shift();
if (match === "%O" && arg) {
return JSON.stringify(arg).replace(/"([^"]+)":/g, "$1:");
} else {
return String(arg);
}
});
}
function isDebugEnabled() {
try {
if (typeof localStorage === "undefined") {
return false;
}
const test = "nuqs-localStorage-test";
localStorage.setItem(test, test);
const isStorageAvailable = localStorage.getItem(test) === test;
localStorage.removeItem(test);
if (!isStorageAvailable) {
return false;
}
} catch (error) {
console.error(
"[nuqs]: debug mode is disabled (localStorage unavailable).",
error
);
return false;
}
const debug2 = localStorage.getItem("debug") ?? "";
return debug2.includes("nuqs");
}
export { debug, warn };