open-index/open-npm huggingface dataset:
npm package: @motion-12/cli
Description: This is a command line interface for Motion 12 (https://motion12.digital).
Latest version: 0.6.2

# Motion 12 CLI

This is a command line interface for Motion 12 (https://motion12.digital).

## Features

- [x] Creates a Certificate Authority (CA) and a server certificate for \*.m12.app.
- [x] Trusts the CA on the host machine.
- [x] Creates a reverse proxy (traefik container) for use with docker containers.
- [x] Creates docker volumes for use with devcontainers.
- [x] Plugin system for adding additional functionality.
- [ ] Scaffolding system for creating new projects.

### Plugins

- [x] NodeJS plugin for creating a NodeJS devcontainer.
- [ ] PHP plugin for creating a PHP devcontainer.

## Installation

### Install the CLI

```bash
pnpm add -g @motion-12/cli
```

## Usage

### Install

```bash
m12 install
```

### Uninstall

```bash
m12 uninstall
```

### Start

```bash
m12 start
```

### Stop

```bash
m12 stop
```

### Restart

```bash
m12 restart
```

### Help

```bash
m12 --help # or m12 -h
```

## Building

```bash
pnpm install
pnpm nx build
```

## Development

### Running

```bash
node dist/motion-12-cli/main.js
```

## Additional Information

### CA

#### Windows (WSL2)

If you are using WSL2 and you need to trust the CA on the host (windows) machine. This is done by copying the CA certificate to the Windows certificate store.

```bash
certutil -addstore -f "Root" ~/.m12/certs/ca.crt
```
npm package: @motion-bank/metapak-motionbank
Description: A generator to streamline the development and maintenance of Motion Bank's NPM modules.
Author: Motion Bank / Mainz University of Applied Sciences
Latest version: 1.1.1

# Motion Bank Metapak Module #

> Internal tool providing configurable templates for NPM modules, streamlining the development and maintance of our various JavaScript modules in order to keep Motion Bank ahead in the :rocket: game.

[![npm version](https://badge.fury.io/js/%40motion-bank%2Fmetapak-motionbank.svg)](https://badge.fury.io/js/%40motion-bank%2Fmetapak-motionbank)

## How to use

You don't. Head over to the [metapak](https://github.com/nfroidure/metapak) repo and build your own.

## License

:copyright: 2017 [Motion Bank](http://motionbank.org/) / [Mainz University of Applied Sciences](https://www.hs-mainz.de/)

Distributed under the [MIT license](LICENSE)
npm package: @motionbank/acl
Description: Manage ACL records
Author: Mainz University of Applied Sciences
Latest version: 2.1.0

[comment]: # (ACHTUNG! This is an autogenerated file and will be automatically overwritten)
[comment]: # (To edit its contents please refer to the project dir '.readme')

# acl

> Manage ACL records



[![motion-bank-docker](https://circleci.com/gh/motion-bank-docker/ms-acl.svg?style=svg)](https://app.circleci.com/pipelines/github/motion-bank-docker/ms-acl)

## About

A [cote](https://cote.js.org) responder to manage ACL records.

## Run

Execute ``bin/run.js`` from the root of the repo.

### Get ACL record

```javascript
socket.emit('acl:get', {
  id: '<RESOURCE ID>'
}, acl => console.log(acl))
```

## Configure

You can set the following environment variables:

```shell
NAME=ACL                 # Name of the cote responder
KEY=null                 # Cote key
NAMESPACE=null           # Cote namespace
```

## Docker

Available docker image: `motionbank/ms-acl:latest`


## License

:copyright: 2020 Mainz University of Applied Sciences (Motion Bank Project) – 
Released under the [MIT](https://github.com/motionbank-js/acl/blob/master/LICENSE) license
npm package: @motionbank/api
Description: API for Motion Bank Systems
Author: Mainz University of Applied Sciences
Latest version: 3.0.0-alpha-0

[comment]: # (ACHTUNG! This is an autogenerated file and will be automatically overwritten)
[comment]: # (To edit its contents please refer to the project dir '.readme')

# @motionbank/api

> API for Motion Bank Systems



## Docker

[![](https://images.microbadger.com/badges/image/motionbank/api.svg)](https://microbadger.com/images/motionbank/api "Get your own image badge on microbadger.com")

The docker image can be pulled with the tag `motionbank/api:latest`.


## License

:copyright: 2020 Mainz University of Applied Sciences (Motion Bank Project) – 
Released under the [MIT](https://github.com/motionbank-js/@motionbank/api/blob/master/LICENSE) license
npm package: @motioneffector/cards
Description: Character Card V3 and Lorebook parser for AI character/world data
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/cards

A TypeScript library for parsing and writing Character Card V3 and Lorebook data.

[![npm version](https://img.shields.io/npm/v/@motioneffector/cards.svg)](https://www.npmjs.com/package/@motioneffector/cards)
[![license](https://img.shields.io/npm/l/@motioneffector/cards.svg)](https://github.com/motioneffector/cards/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Multi-format Support** - PNG, JSON, and CHARX container formats
- **Version Compatibility** - Read V1/V2/V3 cards, write V3 format
- **Decorator Parsing** - Parse and serialize V3 lorebook decorators
- **Lorebook Handling** - Embedded and standalone lorebook support
- **Repair & Recovery** - Best-effort recovery of malformed cards
- **Validation** - Permissive and strict validation modes
- **Zero Dependencies** - No external libraries, no supply chain risk

[Read the full manual →](https://motioneffector.github.io/cards/manual/)

## Quick Start

```typescript
import { readCard, writeCardToPng } from '@motioneffector/cards'

// Read from any format (PNG, JSON, or CHARX)
const card = readCard(fileBytes)

// Access card data
console.log(card.data.name)
console.log(card.data.description)

// Write to PNG format
const pngBytes = writeCardToPng(card, imagePngBytes)

// Parse lorebook decorators
import { parseDecorators } from '@motioneffector/cards'
const { decorators, content } = parseDecorators(entry.content)
```

## Testing & Validation

- **Comprehensive test suite** - 312 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/dialogue
Description: Branching dialogue and interaction tree runner
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/dialogue

A lightweight, type-safe branching dialogue system for games and interactive fiction.

[![npm version](https://img.shields.io/npm/v/@motioneffector/dialogue.svg)](https://www.npmjs.com/package/@motioneffector/dialogue)
[![license](https://img.shields.io/npm/l/@motioneffector/dialogue.svg)](https://github.com/motioneffector/dialogue/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Branching Dialogue Trees** - Complex conversation flows with multiple paths
- **Conditional Logic** - Show or hide choices based on flags
- **Flag System** - Game-wide and conversation-specific state tracking
- **Action System** - Execute callbacks and modify flags on events
- **Text Interpolation** - Dynamic text replacement from flags or functions
- **State Management** - History tracking, undo, save and restore
- **Event Hooks** - React to node transitions and choice selection
- **I18n Support** - Built-in internationalization adapter interface
- **Validation** - Comprehensive dialogue structure checking

[Read the full manual →](https://motioneffector.github.io/dialogue/manual/)

## Quick Start

```typescript
import { createDialogueRunner } from '@motioneffector/dialogue'

const dialogue = {
  id: 'greeting',
  startNode: 'start',
  nodes: {
    start: {
      text: 'Hello! How can I help you?',
      choices: [
        { text: 'Tell me more', next: 'about' },
        { text: 'Goodbye', next: 'end' }
      ]
    },
    about: { text: 'I am a dialogue system.', next: 'start' },
    end: { text: 'Farewell!', isEnd: true }
  }
}

const runner = createDialogueRunner()
runner.start(dialogue)
runner.choose(0) // Select first choice
```

## Testing & Validation

- **Comprehensive test suite** - 255 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/ecs
Description: SQL-backed Entity Component System for persistent, queryable game entities
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/ecs

A SQL-backed Entity Component System that brings database persistence, ACID guarantees, and powerful querying to game state management.

[![npm version](https://img.shields.io/npm/v/@motioneffector/ecs.svg)](https://www.npmjs.com/package/@motioneffector/ecs)
[![license](https://img.shields.io/npm/l/@motioneffector/ecs.svg)](https://github.com/motioneffector/ecs/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **SQL-Backed Persistence** - Entities and components stored in SQLite tables
- **ACID Transactions** - Full transaction support with automatic rollback
- **Type-Safe Components** - Complete TypeScript inference for component data
- **Powerful Queries** - Filter entities by components with predicates
- **Event System** - Subscribe to entity and component lifecycle events
- **Automatic Indexing** - Optimize queries with field-level indexes
- **Archetype Support** - Pre-define entity templates for common patterns
- **Bulk Operations** - Efficient batch add/remove for multiple entities

[Read the full manual →](https://motioneffector.github.io/ecs/manual/)

## Quick Start

```typescript
import { createECS, defineComponent } from '@motioneffector/ecs'
import { createDatabase } from '@motioneffector/sql'

// Define component schemas
const Position = defineComponent('Position', { x: 'number', y: 'number' })
const Health = defineComponent('Health', { current: 'number', max: 'number' })

// Initialize ECS with your database
const db = createDatabase(':memory:')
const ecs = createECS(db, [Position, Health])
await ecs.initialize()

// Create entities and add components
const player = ecs.createEntity('player-1')
ecs.addComponent(player, Position, { x: 100, y: 200 })
ecs.addComponent(player, Health, { current: 80, max: 100 })

// Query entities by components
const entities = ecs.query([Position, Health])
```

## Testing & Validation

- **Comprehensive test suite** - 325 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **ACID guarantees** - Full transaction support with rollback
- **Minimal dependencies** - Only @motioneffector/sql as peer dependency

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/flags
Description: TypeScript library for managing application state flags with powerful condition evaluation
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/flags

A TypeScript library for managing application state with powerful condition evaluation and reactive subscriptions.

[![npm version](https://img.shields.io/npm/v/@motioneffector/flags.svg)](https://www.npmjs.com/package/@motioneffector/flags)
[![license](https://img.shields.io/npm/l/@motioneffector/flags.svg)](https://github.com/motioneffector/flags/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Multiple Value Types** - Boolean flags, numeric counters, and string values
- **Powerful Conditions** - Complex expressions with AND, OR, NOT, comparisons
- **Reactive Subscriptions** - Watch all changes or specific keys
- **Persistent Storage** - Save/load to localStorage or custom backends
- **Undo/Redo History** - Built-in time-travel debugging support
- **Computed Values** - Derived flags that auto-update on dependency changes
- **Namespacing** - Organize flags into logical scoped groups
- **Batch Operations** - Atomic updates with automatic rollback

[Read the full manual →](https://motioneffector.github.io/flags/manual/)

## Quick Start

```typescript
import { createFlagStore } from '@motioneffector/flags'

const store = createFlagStore({
  initial: { gold: 0, has_key: false, reputation: 50 }
})

// Simple operations
store.set('has_key', true)
store.increment('gold', 25)

// Powerful condition evaluation
if (store.check('gold >= 20 AND !has_key')) {
  store.decrement('gold', 20)
  store.set('has_key', true)
}

// Subscribe to changes
store.subscribe((key, newValue, oldValue) => {
  console.log(`${key}: ${oldValue} → ${newValue}`)
})
```

## Testing & Validation

- **Comprehensive test suite** - 569 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/i18n
Description: Lightweight, type-safe internationalization library with zero dependencies for modern web applications
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/i18n

A lightweight, type-safe internationalization library with zero dependencies for modern web applications.

[![npm version](https://img.shields.io/npm/v/@motioneffector/i18n.svg)](https://www.npmjs.com/package/@motioneffector/i18n)
[![license](https://img.shields.io/npm/l/@motioneffector/i18n.svg)](https://github.com/motioneffector/i18n/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Simple Translation API** - Clean `t()` function with dot notation
- **Pluralization Support** - Intl-based plural rules for all languages
- **Nested Namespaces** - Organize translations hierarchically with dot notation
- **Dynamic Loading** - Lazy-load translations on demand with async support
- **Interpolation** - Template placeholders for dynamic values
- **Fallback Handling** - Graceful fallback to default locale when missing
- **Format Utilities** - Built-in number, date, and relative time formatting
- **Change Callbacks** - React to locale changes and missing translations

[Read the full manual →](https://motioneffector.github.io/i18n/manual/)

## Quick Start

```typescript
import { createI18n } from '@motioneffector/i18n'

// Create i18n instance with translations
const i18n = createI18n({
  defaultLocale: 'en',
  translations: {
    en: {
      greeting: 'Hello, {{name}}!',
      items: {
        one: '{{count}} item',
        other: '{{count}} items'
      }
    }
  }
})

// Interpolation
i18n.t('greeting', { name: 'World' })  // "Hello, World!"

// Pluralization
i18n.t('items', { count: 1 })  // "1 item"
i18n.t('items', { count: 5 })  // "5 items"
```

## Testing & Validation

- **Comprehensive test suite** - 200 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/inventory
Description: Flexible inventory system supporting multiple storage paradigms
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/inventory

A flexible, type-safe inventory system supporting multiple storage paradigms for games and interactive applications.

[![npm version](https://img.shields.io/npm/v/@motioneffector/inventory.svg)](https://www.npmjs.com/package/@motioneffector/inventory)
[![license](https://img.shields.io/npm/l/@motioneffector/inventory.svg)](https://github.com/motioneffector/inventory/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Multiple Storage Modes** - Unlimited, count-based, weight-based, grid-based, and slot-based inventories
- **Grid Placement** - Tetris-style item placement with rotation support
- **Smart Stacking** - Configurable stack limits per item type
- **Equipment Slots** - Named slots with custom filter functions
- **Nested Containers** - Items can be containers themselves
- **Transaction Support** - Atomic operations with automatic rollback
- **Event System** - React to inventory changes in real-time
- **Deep Queries** - Search across nested container hierarchies
- **Item Locking** - Prevent removal of quest or equipped items
- **Serialization** - Full save/load support for persistence

[Read the full manual →](https://motioneffector.github.io/inventory/manual/)

## Quick Start

```typescript
import { createInventoryManager } from '@motioneffector/inventory'

// Create manager with item metadata
const inventory = createInventoryManager({
  getItemWeight: (id) => ({ sword: 5, potion: 1 }[id] ?? 1),
  getItemSize: (id) => ({ sword: { width: 1, height: 3 } }[id] ?? { width: 1, height: 1 }),
  defaultStackSize: 99
})

// Create a grid-based backpack (4x4 Tetris-style)
inventory.createContainer('backpack', {
  mode: 'grid',
  width: 4,
  height: 4,
  allowRotation: true
})

// Add items
inventory.addItem('backpack', 'sword', 1)
inventory.addItem('backpack', 'potion', 5)

// Query inventory
const contents = inventory.getContents('backpack')
const canFit = inventory.canAdd('backpack', 'shield', 1)
```

## Testing & Validation

- **Comprehensive test suite** - 375 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/llm
Description: TypeScript client for LLM APIs with OpenRouter support, streaming, conversation management, and automatic retries
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/llm

A TypeScript client for LLM APIs with OpenRouter support, streaming responses, conversation management, and automatic retries.

[![npm version](https://img.shields.io/npm/v/@motioneffector/llm.svg)](https://www.npmjs.com/package/@motioneffector/llm)
[![license](https://img.shields.io/npm/l/@motioneffector/llm.svg)](https://github.com/motioneffector/llm/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **OpenRouter Integration** - Access 200+ models through a unified API
- **Streaming Support** - Real-time response streaming with async iterators
- **Conversation Management** - Stateful conversations with automatic history tracking
- **Automatic Retries** - Smart retry logic with exponential backoff
- **Token Estimation** - Estimate prompt tokens before sending requests
- **Type Safety** - Full TypeScript definitions with no any types
- **Model Information** - Built-in pricing and context length data
- **Abort Support** - Cancel requests using AbortController signals

[Read the full manual →](https://motioneffector.github.io/llm/manual/)

## Quick Start

```typescript
import { createLLMClient } from '@motioneffector/llm'

// Create a client
const client = createLLMClient({
  apiKey: process.env.OPENROUTER_KEY,
  model: 'anthropic/claude-sonnet-4'
})

// Send a chat completion request
const response = await client.chat([
  { role: 'user', content: 'Explain quantum computing in simple terms' }
])

console.log(response.content)
console.log(`Used ${response.usage.totalTokens} tokens in ${response.latency}ms`)
```

## Testing & Validation

- **Comprehensive test suite** - 265 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/markdown
Description: CommonMark + GFM compliant markdown parser
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/markdown

A lightweight, standards-compliant markdown parser for rendering user content safely.

[![npm version](https://img.shields.io/npm/v/@motioneffector/markdown.svg)](https://www.npmjs.com/package/@motioneffector/markdown)
[![license](https://img.shields.io/npm/l/@motioneffector/markdown.svg)](https://github.com/motioneffector/markdown/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **CommonMark Compliant** - Full support for the CommonMark specification
- **GitHub Flavored Markdown** - Tables, strikethrough, task lists, and autolinks
- **XSS Protection** - Automatic sanitization of dangerous HTML elements
- **Flexible HTML Stripping** - Four presets for converting HTML to text
- **Zero Dependencies** - No supply chain risk or bloated bundles
- **Tree-Shakeable ESM** - Import only what you need

[Read the full manual →](https://motioneffector.github.io/markdown/manual/)

## Quick Start

```typescript
import { markdown, markdownStrip } from '@motioneffector/markdown'

// Convert markdown to HTML
const html = markdown('# Hello **world**!')
// => '<h1>Hello <strong>world</strong>!</h1>'

// Strip HTML to plain text
const plain = markdownStrip(html, 'plaintext')
// => 'Hello world!'

// GitHub Flavored Markdown table
const table = markdown(`
| Feature | Status |
|---------|--------|
| Tables  | ✓      |
`)
```

## Testing & Validation

- **Comprehensive test suite** - 255 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/parser
Description: Text adventure command parser for natural language game input
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/parser

A natural language command parser for text adventures and interactive fiction.

[![npm version](https://img.shields.io/npm/v/@motioneffector/parser.svg)](https://www.npmjs.com/package/@motioneffector/parser)
[![license](https://img.shields.io/npm/l/@motioneffector/parser.svg)](https://github.com/motioneffector/parser/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Natural Language Parsing** - Understands common text adventure commands
- **Default Vocabulary** - Ships with 30+ verbs and directions
- **Custom Vocabulary** - Extend or replace with game-specific commands
- **Smart Resolution** - Pluggable resolver connects to your game state
- **Disambiguation** - Handles multiple matching objects gracefully
- **Pronoun Tracking** - Automatic "it" reference management
- **Partial Matching** - "exa lamp" matches "examine lamp"
- **Position Tracking** - Token positions for error reporting

[Read the full manual →](https://motioneffector.github.io/parser/manual/)

## Quick Start

```typescript
import { createParser } from '@motioneffector/parser'

// Create parser with entity resolver
const parser = createParser({
  resolver: (noun, adjectives, scope) => {
    // Look up entities from your game state
    return [{ id: 'lamp-1', name: 'brass lamp' }]
  }
})

// Parse player input
const result = parser.parse('get lamp')

if (result.type === 'command') {
  console.log(`Verb: ${result.command.verb}`) // "GET"
  console.log(`Subject: ${result.command.subject?.id}`) // "lamp-1"
}
```

## Testing & Validation

- **Comprehensive test suite** - 371 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/spatial
Description: Directional graph for room-based spatial navigation
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/spatial

A directional graph system for room-based spatial navigation in games and interactive fiction.

[![npm version](https://img.shields.io/npm/v/@motioneffector/spatial.svg)](https://www.npmjs.com/package/@motioneffector/spatial)
[![license](https://img.shields.io/npm/l/@motioneffector/spatial.svg)](https://github.com/motioneffector/spatial/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Directional Connections** - Link nodes via compass directions, vertical, and custom
- **Conditional Gates** - Lock paths with keys, flags, or custom logic
- **Weighted Pathfinding** - Find optimal routes with Dijkstra's algorithm
- **Multi-tile Nodes** - Rooms spanning multiple grid positions with layers
- **Zone Management** - Group and query nodes by zones
- **Graph Analysis** - Detect orphans, dead ends, and disconnected subgraphs
- **Event System** - React to graph changes in real-time
- **Serialization** - Save and restore entire graph state

[Read the full manual →](https://motioneffector.github.io/spatial/manual/)

## Quick Start

```typescript
import { createSpatialGraph, Direction } from '@motioneffector/spatial'

// Create a graph and add rooms
const graph = createSpatialGraph()
graph.createNode('entrance', { name: 'Entrance Hall' })
graph.createNode('library', { name: 'Library' })

// Connect rooms with directions
graph.connect('entrance', Direction.NORTH, 'library')

// Add a locked gate
graph.setGate('entrance', Direction.NORTH, {
  id: 'door-1',
  locked: true,
  keyId: 'brass-key'
})

// Check if player can traverse
const result = graph.canTraverse('entrance', Direction.NORTH, {
  inventory: ['brass-key']
})
console.log(result.allowed) // true

// Find shortest path
const path = graph.findPath('entrance', 'library')
```

## Testing & Validation

- **Comprehensive test suite** - 392 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/sql
Description: TypeScript wrapper around SQL.js for browser-based SQLite databases with migrations, persistence, and type safety
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/sql

A lightweight TypeScript wrapper for SQL.js with migrations, persistence, and full type safety.

[![npm version](https://img.shields.io/npm/v/@motioneffector/sql.svg)](https://www.npmjs.com/package/@motioneffector/sql)
[![license](https://img.shields.io/npm/l/@motioneffector/sql.svg)](https://github.com/motioneffector/sql/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Browser SQLite** - Full SQLite database in the browser via WebAssembly
- **Schema Migrations** - Versioned migrations with automatic tracking
- **Type-Safe Queries** - Generic query methods with TypeScript inference
- **Auto-Persistence** - Automatic saves to IndexedDB or localStorage
- **Transaction Queue** - Concurrent transactions without savepoint conflicts
- **ACID Guarantees** - Full transaction support with automatic rollback
- **Import/Export** - Save and load database files
- **Table Helpers** - Convenient CRUD operations for common patterns

[Read the full manual →](https://motioneffector.github.io/sql/manual/)

## Quick Start

```typescript
import { createDatabase } from '@motioneffector/sql'

// Create a database with auto-persistence
const db = await createDatabase({
  persist: { key: 'my-app', storage: 'indexeddb' }
})

// Create a table
db.exec(`
  CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE
  )
`)

// Insert and query data
db.run('INSERT INTO users (name, email) VALUES (?, ?)', ['Alice', 'alice@example.com'])

const user = db.get<{ id: number; name: string; email: string }>(
  'SELECT * FROM users WHERE id = ?',
  [1]
)
```

## Testing & Validation

- **Comprehensive test suite** - 554 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Minimal dependencies** - Only sql.js as peer dependency

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/stats
Description: TypeScript library for RPG stats, dice rolling, and stat checks with full D&D 5e-style mechanics
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/stats

A TypeScript library for RPG stat management with D&D 5e-style mechanics, dice rolling, and stat checks.

[![npm version](https://img.shields.io/npm/v/@motioneffector/stats.svg)](https://www.npmjs.com/package/@motioneffector/stats)
[![license](https://img.shields.io/npm/l/@motioneffector/stats.svg)](https://github.com/motioneffector/stats/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Flexible Dice Rolling** - Full notation parser with advantage, keep/drop, exploding, and rerolls
- **Stat Management** - Define stats with bounds, modifiers, and automatic calculations
- **D&D 5e-Style Checks** - Advantage/disadvantage, custom dice, and bonuses
- **Derived Stats** - Auto-updating computed stats based on dependencies
- **Duration System** - Temporary and permanent modifiers with expiration
- **Roll History** - Track all rolls for audit trails
- **Stat Templates** - Create reusable stat block configurations
- **Serialization** - Save and restore complete stat block state

[Read the full manual →](https://motioneffector.github.io/stats/manual/)

## Quick Start

```typescript
import { createStatBlock, roll, check } from '@motioneffector/stats'

// Create a character with stats
const hero = createStatBlock({
  strength: { base: 16, min: 1, max: 20 },
  dexterity: { base: 14, min: 1, max: 20 },
  health: { base: 45, min: 0, max: 100 }
})

// Roll dice with full notation support
const damage = roll('2d6+3')  // { total: 11, rolls: [4, 4], modifier: 3 }

// Make a strength check with D&D 5e mechanics
const result = check(hero, 'strength', { difficulty: 15 })
// { success: true, roll: 14, modifier: 3, total: 17 }
```

## Testing & Validation

- **Comprehensive test suite** - 367 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/theme
Description: Type-safe theme management with CSS variables, runtime switching, and persistence support
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/theme

Type-safe theme management with CSS variables, runtime switching, and automatic persistence.

[![npm version](https://img.shields.io/npm/v/@motioneffector/theme.svg)](https://www.npmjs.com/package/@motioneffector/theme)
[![license](https://img.shields.io/npm/l/@motioneffector/theme.svg)](https://github.com/motioneffector/theme/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Theme Switching** - Apply themes instantly with CSS variable updates
- **Type Safety** - Full TypeScript support with validated theme definitions
- **System Preferences** - Auto-detect and respond to OS dark mode
- **Persistence** - Remember user preferences across sessions with localStorage
- **Token Management** - Runtime access to theme tokens and CSS variable names
- **Custom Prefixes** - Configure CSS variable naming conventions
- **Zero Dependencies** - No supply chain risk

[Read the full manual →](https://motioneffector.github.io/theme/manual/)

## Quick Start

```typescript
import { createThemeManager, createTheme } from '@motioneffector/theme'

// Define your themes
const light = createTheme({
  name: 'light',
  tokens: { primary: '#007bff', background: '#ffffff', text: '#000000' }
})

const dark = createTheme({
  name: 'dark',
  tokens: { primary: '#0d6efd', background: '#1a1a1a', text: '#ffffff' }
})

// Create manager and switch themes
const manager = createThemeManager({
  themes: [light, dark],
  defaultTheme: 'light',
  storageKey: 'app-theme'
})

manager.apply('dark')
```

## Testing & Validation

- **Comprehensive test suite** - 361 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motioneffector/wiki
Description: A TypeScript library for creating and managing interconnected knowledge bases with bidirectional linking
Author: motioneffector
Latest version: 1.0.1

# @motioneffector/wiki

A TypeScript library for creating interconnected knowledge bases with bidirectional linking and graph analysis.

[![npm version](https://img.shields.io/npm/v/@motioneffector/wiki.svg)](https://www.npmjs.com/package/@motioneffector/wiki)
[![license](https://img.shields.io/npm/l/@motioneffector/wiki.svg)](https://github.com/motioneffector/wiki/blob/main/LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)


## Features

- **Bidirectional Linking** - Links tracked automatically in both directions
- **Dead Link Detection** - Find and manage broken links across pages
- **Graph Analysis** - Explore connection depth and page relationships
- **Flexible Storage** - Custom storage adapters for any backend
- **Search & Filtering** - Query by title, content, tags, and types
- **Event System** - React to page creation, updates, and deletions
- **Import/Export** - Portable JSON format for data management
- **Zero Dependencies** - Lightweight with no external runtime dependencies

[Read the full manual →](https://motioneffector.github.io/wiki/manual/)

## Quick Start

```typescript
import { createWiki } from '@motioneffector/wiki'

// Create a wiki instance
const wiki = createWiki()

// Create pages with [[wikilinks]]
await wiki.createPage({
  title: 'Home',
  content: 'Welcome! Check out [[Getting Started]] and [[Features]].'
})

await wiki.createPage({
  title: 'Getting Started',
  content: 'Link back to [[Home]] anytime.'
})

// Get backlinks automatically
const homePage = wiki.getPageByTitle('Home')
const backlinks = wiki.getBacklinks(homePage.id) // ['getting-started']

// Find dead links
const deadLinks = wiki.getDeadLinks() // [{ source: 'home', target: 'features' }]
```

## Testing & Validation

- **Comprehensive test suite** - 379 unit tests covering core functionality
- **Fuzz tested** - Randomized input testing to catch edge cases
- **Strict TypeScript** - Full type coverage with no `any` types
- **Zero dependencies** - No supply chain risk

## License

MIT © [motioneffector](https://github.com/motioneffector)
npm package: @motiongis/heatmap-parse
Description: A robust GPS track processor for creating frequency-based route heatmaps from GPX, FIT, and polyline data
Latest version: 0.1.3

# heatmap-parse

GPS track processor for frequency-based route heatmaps from GPX, FIT, and polyline data.

## Features

- GPX file parsing
- FIT file parsing  
- Polyline decoding
- Route frequency analysis
- WebAssembly bindings

## Usage

### Rust

```rust
use heatmap_parse::{process_gpx_files, decode_polyline, process_polylines};

let files = vec![/* Vec<u8> file data */];
let result = process_gpx_files(files);

let coords = decode_polyline("_p~iF~ps|U_ulLnnqC_mqNvxq`@");

let polylines = vec!["polyline1".to_string(), "polyline2".to_string()];
let tracks = process_polylines(polylines);
```

### WebAssembly

```javascript
import init, { process_gpx_files, decode_polyline_string } from 'heatmap-parse';

await init();

const files = [/* Uint8Array buffers */];
const result = process_gpx_files(files);

const coords = decode_polyline_string("_p~iF~ps|U_ulLnnqC_mqNvxq`@");
## Building

```bash
# Native Rust
cargo build --release

# WebAssembly
wasm-pack build --target web
```

## License

MIT
npm package: @motionhungry/generators
Description: Generators is a CLI tool created to streamline the initialization of projects by applying common templates that adhere to Motion Hungry's established best practices. The templates are designed to support both internal development and client project workfl
Latest version: 0.1.1

# Motion Hungry Generators

Generators is a CLI tool created to streamline the initialization of projects by applying common templates that adhere to Motion Hungry's established best practices. The templates are designed to support both internal development and client project workflows, ensuring a consistent and optimized setup from the start.

## Installation

Generators can be used without global installation using `npx`. Ensure you have Node.js installed to use it.

However, if you prefer to install it globally, you can do so via npm:

```bash
npm install -g @motionhungry/generators
```

Or using Yarn:

```bash
yarn global add @motionhungry/generators
```

Or using pnpm:

```bash
pnpm add -g @motionhungry/generators
```

## Usage

To generate a template without installing the package globally, you can use `npx`:

```bash
npx @motionhungry/generators generate <template>
```

Where `<template>` is the name of the template you want to generate. Available templates include:

- `prettier` - Adds a Prettier config from [@motionhungry/style-policy](https://www.npmjs.com/package/@motionhungry/style-policy).
- `semantic-release` - Configures Semantic Release for automated version management and package publishing.
- `strapi` - Prepares a Strapi project with Docker and deployment scripts to Google Cloud Run via Github Actions.

To view a list of all available templates, run:

```bash
generators list
```

If using `npx`, prepend the command with `npx @motionhungry/generators` like so:

```bash
npx @motionhungry/generators list
```

## Development

For those looking to contribute or modify the Generators CLI, here are the instructions for setting up your development environment:

1. Clone the repository to your local machine.
2. Navigate to the cloned directory and install dependencies using `pnpm install`.

### Available Scripts

- **`pnpm build`**: Compiles the TypeScript code to JavaScript, preparing it for production use. This script is essential for creating a build of the CLI tool that can be executed in a Node.js environment.

- **`pnpm dev`**: Runs the project in development mode with a file watcher. This is useful for actively developing and testing changes to the CLI, as it automatically recompiles the TypeScript code upon file changes, facilitating immediate feedback on your development efforts.

To contribute to the project, make your changes locally and use `pnpm dev` to test them in real-time. Once you're satisfied with your changes, compile the project with `pnpm build` and submit a pull request for review.

## Contributing

Contributions are welcome! If you have a template that you believe would be beneficial for the community, feel free to fork the repository, add your template, and submit a pull request.

## License

This project is licensed under the MIT License - see the LICENSE.txt file for details.
npm package: @motionhungry/style-policy
Description: Motion Hungry's code style policy configurations
Author: Kyle Getrost
Latest version: 1.1.0

# Motion Hungry Code Style Policy

## Overview

This repository contains configurations for Motion Hungry's code style policies on TypeScript projects.

- Prettier
- TypeScript

## Installation

All of the configs are found in the `@motionhungry/style-policy` on NPM registry.

```
pnpm add -D @motionhungry/style-policy
```

## ESLint

The ESLint configs are setup to be composable depending on the features of your project.

The following base configs are available. You can use one or both, but they should be first in `extends`:

- `@motionhungry/style-policy/eslint/browser`
- `@motionhungry/style-policy/eslint/node`

The following configs are also available:

- `@motionhungry/style-policy/eslint/typescript`

### TypeScript/Node.js Package (default)

```
module.exports = {
  extends: ['@motionhungry/style-policy/eslint/react'],
}
```

### Next.js

```
module.exports = {
  extends: ['@motionhungry/style-policy/eslint/nextjs'],
}
```

## Prettier

To use the Prettier config, add the following line to `.prettierrc`:

```
"@motionhungry/style-policy/prettier"
```

## TypeScript

The TypeScript configs are available for general TypeScript/Node.js projects, React and Next.js.

Depending on the type of your project, add the following to `tsconfig.json`.

### TypeScript/Node.js Package (default)

```
{
"extends": "@motionhungry/style-policy/tsconfig/default.json"
}
```

### React

```
{
"extends": "@motionhungry/style-policy/tsconfig/react.json"
}
```

### Next.js

```
{
"extends": "@motionhungry/style-policy/tsconfig/nextjs.json"
}
```
npm package: @motionone/solid
Description: A tiny, performant animation library for SolidJS
Latest version: 10.16.4
Deprecated: Motion One for Solid is deprecated. Use solid-motionone instead https://github.com/solidjs-community/solid-motionone

# `@motionone/solid`

Solid bindings for Motion One.

## 📚 Documentation

Full docs for Motion One for Solid available at [motion.dev](https://motion.dev/solid/quick-start).
npm package: @motionone/vue
Description: A tiny, performant animation library for Vue
Author: Matt Perry
Latest version: 10.16.4
Deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion

# `@motionone/vue`

Vue bindings for Motion One.

## 📚 Documentation

Full docs for Motion One for Vue available at [motion.dev](https://motion.dev/vue/quick-start).