UNPKG

camoufox

Version:

JavaScript port of Camoufox - a tool for Firefox anti-fingerprinting and browser automation.

33 lines (32 loc) 1.23 kB
import { join } from 'path'; import { loadYaml, LOCAL_DATA } from './pkgman.js'; const WARNINGS_DATA = loadYaml(join(LOCAL_DATA.toString(), 'warnings.yml')); export class LeakWarning extends Error { constructor(message) { super(message); this.name = 'LeakWarning'; } static warn(warningKey, iKnowWhatImDoing) { let warning = WARNINGS_DATA[warningKey]; if (iKnowWhatImDoing) { return; } if (iKnowWhatImDoing !== undefined) { warning += '\nIf this is intentional, pass `iKnowWhatImDoing=true`.'; } const currentModule = import.meta?.dirname ?? __dirname; const originalStackTrace = Error.prepareStackTrace; Error.prepareStackTrace = (_, stack) => stack; const err = new Error(); const stack = err.stack; Error.prepareStackTrace = originalStackTrace; for (const frame of stack) { const frameFileName = frame.getFileName(); if (frameFileName && !frameFileName.startsWith(currentModule)) { console.warn(`${warning} at ${frameFileName}:${frame.getLineNumber()}`); return; } } console.warn(warning); } }