@virtualstate/navigation
Version:
Native JavaScript [navigation](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API) implementation
34 lines (28 loc) • 1.1 kB
text/typescript
const THIS_WILL_BE_REMOVED = "This will be removed when the first major release of @virtualstate/navigation is published"
const WARNINGS = {
EVENT_INTERCEPT_HANDLER: `You are using a non standard interface, please update your code to use event.intercept({ async handler() {} })\n${THIS_WILL_BE_REMOVED}`
} as const;
type WarningKey = keyof typeof WARNINGS;
let GLOBAL_IS_WARNINGS_IGNORED: boolean = false;
let GLOBAL_IS_WARNINGS_TRACED: boolean = true;
export function setIgnoreWarnings(ignore: boolean) {
GLOBAL_IS_WARNINGS_IGNORED = ignore;
}
export function setTraceWarnings(ignore: boolean) {
GLOBAL_IS_WARNINGS_TRACED = ignore;
}
export function logWarning(warning: WarningKey,...message: unknown[]) {
if (GLOBAL_IS_WARNINGS_IGNORED) {
return;
}
try {
if (GLOBAL_IS_WARNINGS_TRACED) {
console.trace(WARNINGS[warning], ...message);
} else {
console.warn(WARNINGS[warning], ...message);
}
} catch {
// We don't want attempts to log causing issues
// maybe we don't have a console
}
}