UNPKG

@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
// 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 };