open-index/open-npm huggingface dataset:
npm package: @rcade/plugin-input-classic
Description: Input plugin for RCade's classic arcade controls (joysticks and buttons).
Latest version: 0.2.3

# @rcade/plugin-input-classic

Input plugin for RCade's classic arcade controls (joysticks and buttons).

## Installation

```bash
npm install @rcade/plugin-input-classic
```

## Usage

```javascript
import { PLAYER_1, PLAYER_2, SYSTEM } from "@rcade/plugin-input-classic";

function gameLoop() {
  if (PLAYER_1.DPAD.up) moveUp();
  if (PLAYER_1.A) fire();
  if (SYSTEM.ONE_PLAYER) startGame();

  requestAnimationFrame(gameLoop);
}
```

## API

### PLAYER_1 / PLAYER_2

```typescript
{
  DPAD: { up: boolean, down: boolean, left: boolean, right: boolean },
  A: boolean,
  B: boolean
}
```

### SYSTEM

```typescript
{
  ONE_PLAYER: boolean,
  TWO_PLAYER: boolean
}
```

## Development

```bash
bun install
```
npm package: @rcade/plugin-input-spinners
Description: Input plugin for RCade's spinner controls (rotary encoders).
Latest version: 0.2.2

# @rcade/plugin-input-spinners

Input plugin for RCade's spinner controls (rotary encoders).

## Installation

```bash
npm install @rcade/plugin-input-spinners
```

## Usage

Two patterns are available. Pick one, don't mix them.

### Polling (recommended)

```javascript
import { PLAYER_1, PLAYER_2 } from "@rcade/plugin-input-spinners";

function gameLoop() {
  // Returns accumulated movement since last read, then resets to 0
  const stepDelta = PLAYER_1.SPINNER.consume_step_delta();
  paddleX += stepDelta * speed;

  requestAnimationFrame(gameLoop);
}
```

### Angle Tracking

```javascript
import { PLAYER_1 } from "@rcade/plugin-input-spinners";

function gameLoop() {
  // Get cumulative angle in radians (automatically updated)
  const angle = PLAYER_1.SPINNER.angle;
  knob.rotation = angle;

  requestAnimationFrame(gameLoop);
}

// Reset angle to 0 when needed
PLAYER_1.SPINNER.reset();
```

### Events

```javascript
import { on } from "@rcade/plugin-input-spinners";

on("spin", ({ player, step_delta, step_resolution }) => {
  console.log(`Player ${player} spun ${step_delta} steps`);
});
```

## API

### PLAYER_1 / PLAYER_2

```typescript
{
  SPINNER: {
    consume_step_delta(): number;
    step_resolution: number;
    angle: number;
    reset(): void;
  }
}
```

- `consume_step_delta()`: Returns accumulated movement since last call, then resets to 0.
- `step_resolution`: Encoder resolution (x steps per rotation).
- `angle`: Cumulative angle in radians (automatically updated).
- `reset()`: Resets the angle to 0.

### STATUS

```typescript
{
  connected: boolean
}
```

### Events

#### on(event, callback)

Subscribe to spin events.

```typescript
const unsubscribe = on("spin", (data) => {
  // data: { player: 1 | 2, step_delta: number, step_resolution: number }
});

// Later: unsubscribe()
```

#### off(event, callback)

Unsubscribe from spin events.

#### once(event, [filter], [callback])

Listen for a single spin event. Supports filtering by player and both callback and Promise styles.

```typescript
// Promise style
const data = await once("spin");

// Promise with filter
const p1Data = await once("spin", { player: 1 });

// Callback style
const cancel = once("spin", (data) => { /* ... */ });
```

## Development

```bash
bun install
```
npm package: @rcade/sdk
Description: TypeScript SDK for building RCade games and plugins.
Latest version: 0.2.2

# @rcade/sdk

TypeScript SDK for building RCade games and plugins.

## Installation

```bash
npm install @rcade/sdk
```

## Usage

```typescript
import { PluginChannel } from "@rcade/sdk";

const channel = await PluginChannel.acquire("@rcade/my-plugin", "1.0.0");
```

## Development

```bash
bun install
bun run build
```
npm package: @rcanessa/abstract-dynamodb
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.2.3

# abstract-dynamodb

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build abstract-dynamodb` to build the library.

## Running unit tests

Run `nx test abstract-dynamodb` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @rcanessa/api-gateway-logger
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.2.3

# api-gateway-logger

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build api-gateway-logger` to build the library.

## Running unit tests

Run `nx test api-gateway-logger` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @rcanessa/cognito
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.1.3

# cognito

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build cognito` to build the library.

## Running unit tests

Run `nx test cognito` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @rcanessa/cognito-client
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.1.1

# cognito-client

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build cognito-client` to build the library.

## Running unit tests

Run `nx test cognito-client` to execute the unit tests via [Vitest](https://vitest.dev/).
npm package: @rcanessa/node-logger
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.4.0

# node-logger

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build node-logger` to build the library.

## Running unit tests

Run `nx test node-logger` to execute the unit tests via [Jest](https://jestjs.io).
npm package: @rcanessa/sls-node
Description: This library was generated with [Nx](https://nx.dev).
Latest version: 0.7.8

# sls-node

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build sls-node` to build the library.

## Running unit tests

Run `nx test sls-node` to execute the unit tests via [Jest](https://jestjs.io).