UNPKG

@uiwwsw/easter-egg

Version:

[![npm version](https://img.shields.io/npm/v/@uiwwsw/easter-egg.svg)](https://www.npmjs.com/package/@uiwwsw/easter-egg) [![Publish](https://github.com/uiwwsw/easter-egg/actions/workflows/publish.yml/badge.svg)](https://github.com/uiwwsw/easter-egg/actions

43 lines (42 loc) 1.15 kB
// index.ts function createEasterEgg(targetElement, callback, keySequence) { let currentSequence = []; const obfuscatedSequence = btoa(JSON.stringify(keySequence)); targetElement.addEventListener("keydown", (event) => { if (detectDebuggerByBlocking()) { currentSequence = []; return; } const decodedSequence = JSON.parse(atob(obfuscatedSequence)); const requiredKey = decodedSequence[currentSequence.length]; if (event.key === requiredKey) { currentSequence.push(event.key); if (currentSequence.length === decodedSequence.length) { setTimeout(() => { callback(); }, 0); currentSequence = []; } } else { if (event.key === decodedSequence[0]) { currentSequence = [event.key]; } else { currentSequence = []; } } }); } var detectDebuggerByBlocking = () => { let detected = false; const start = performance.now(); debugger; const end = performance.now(); if (end - start > 100) { detected = true; console.warn("\uD83D\uDED1 Debugger Detected!"); } return detected; }; export { createEasterEgg };