open-index/open-npm huggingface dataset:
npm package: @roudanio/keyboard-masher
Description: Usage:
Latest version: 0.2.9

# Keyboard Masher

Usage:

```js
import KeyboardMasher from "https://unpkg.com/@roudanio/keyboard-masher@latest/dist/keyboard-masher.js";

// fist parameter is the element selector
// second parameter is a config object
KeyboardMasher.init('#keyboard-masher-container', {
  root: 'https://unpkg.com/@roudanio/keyboard-masher@latest/dist/',
});
KeyboardMasher.on('gameOver', (...args) => {
  console.log('game over: ', args);
});
```

The default config object is like this:
```js
{
  root: location.origin,
  i18n: i18nDefault, // default i18n setting is in i18n.json
}
```

The default i18n is put in file [`./src/i18n.json`](./src/i18n.json).
The content is like this:

```json
{
  "name": "Keyboard Masher",
  "keysCombination": "Keys Combination",
  "selectKeysCombination": "Select the keys combination you like",
  "selectAllKeys": "All Keys",
  "selectCustomizeKeys": "Customize keys you like to smash",
  "hitKeys": "Hit the keys you want to smash:",
  "start": "Start",
  "ok": "OK",
  "reset": "Reset",
  "timerDuration": "Timer Duration",
  "chooseTimerDuration": "Choose the timer duration",
  "customizeTimerDuration": "Customize the timer duration",
  "setTimerDuration": "Set the seconds for the timer",
  "second": "second",
  "seconds": "seconds",
  "play": "Play!",
  "score": "Score",
  "back": "Back",
  "gogogo": "Go! Go! Go!",
  "typeBegin": "Type on your keyboard to begin.",
  "time": "Time: ",
  "timesUp": "Times up!",
  "restart": "Restart",
  "tweet": "Tweet",
  "facebook": "Facebook",
  "copyLink": "Copy Link",
  "stat": "Statistics",
  "shareText": "I have smashed %SCORE% keys in %DURATION% seconds! That's %CPS% keys per second! My favorite key is %FAV_KEY%. Can you smash your keyboard like this?"
}
```
npm package: @roudanio/lazy-melody
Description: Lazymelody.com ==============
Latest version: 0.8.5

Lazymelody.com
==============


Development
-----------

### Pre-requisites

* node.js >= 16
* pnpm >= 7


### Setup

1. Git clone this repo
2. Install dependencies: `pnpm i`
3. Start the development server: `pnpm run dev`


How to
------

### Add a new score operator

A score operator is a function that takes a score and returns a new score.
It is built with 3 parts:

1. A score operator function, will do something to `MusicNote`
2. A keyboard shortcut to trigger the operator
3. A UI menu component (not implemented yet)
4. Text to score parser
5. Score to text generator
6. midi-player

#### The Operator Function

For the operator function, it should follow this signature:

```ts
(selectedNots: MusicNote[]) => boolean;
```

It should:

1. validate the input, return `false` if the input is invalid
2. do the transformation, return `true` if the transformation is successful

#### The Keyboard Shortcut

#### The UI Menu Component

(Note: this is not implemented yet)