@uiwwsw/easter-egg
Version:
[](https://www.npmjs.com/package/@uiwwsw/easter-egg) [](https://github.com/uiwwsw/easter-egg/actions
43 lines (42 loc) • 1.15 kB
JavaScript
// 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
};