eggster

[![NPM](https://img.shields.io/npm/v/eggster)](https://www.npmjs.com/package/eggster) [![Build status](https://img.shields.io/github/workflow/status/alvarocastro/eggster/build)](https://github.com/alvarocastro/eggster/actions?query=workflow%3Abuild) [![Ma

Usage no npm install needed!

<script type="module">
  import eggster from 'https://cdn.skypack.dev/eggster';
</script>

README

Eggster

NPM Build status Maintainability status Coverage status Bundle size Code style: XO Release: Semantic

Simple, fast and lightweight library to create easter eggs triggered by a sequence of keyboard keys pressed.

Since easter eggs are just for fun and not intended to improve an application, the library aims to be as light as possible by having a small file size (zero dependencies) but also by being fast, it only binds a single event listener to the document no matter how many easter eggs are registered while also using raw key codes to avoid extra processing.

Install

npm install eggster

Usage

const eggster = require('eggster');

// Code "eggster"
eggster.add('69,71,71,83,84,69,82', () => {
    console.log('Found it!');
});

eggster.add(code, fn, options = {})

Registers an easter egg that tiggers the fn callback when activated.

code

Type: String

String containing the individual key codes separated by commas.

fn

Type: Function

Callback that fires when the sequence is pressed.

options

Type: Object
Default: {}

Object of options to configure the behaviour of the code.

options.timeout

Type: Number
Default: 2000

Maximum time to wait between each key pressed before restarting the progress. Use 0 for no timeout.

options.once

Type: Boolean
Default: false

Flag to indicate if the code should run only the first time is completed, subsequent times will be ignored.

eggster.remove(code)

Removes a code previously registered.

eggster.teardown()

Removes all the codes and unbinds the keyboard event.

Contributing

Contributions are always welcome! Please run npm test beforehand to ensure everything is ok.

Support

If you use this package please consider starring it :)