open-index/open-npm huggingface dataset:
npm package: @spatialwalk/avatarkit-rtc
Description: Unified RTC adapter for avatarkit - supports LiveKit, Agora and other RTC providers
Author: SPAvatar Team
Latest version: 1.0.0-beta.9

# @spatialwalk/avatarkit-rtc

RTC adapter for [avatarkit](https://www.npmjs.com/package/@spatialwalk/avatarkit) - currently supports LiveKit and Agora.

📚 **Documentation**: [https://docs.spatialreal.ai/guide/rtc-mode](https://docs.spatialreal.ai/guide/rtc-mode)

## License

MIT
npm package: @spatie/blender-content-blocks
Description: Blender content blocks component
Author: Sebastian De Deyne
Latest version: 2.0.2

# Blender Media

[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)
[![Build Status](https://img.shields.io/travis/spatie-custom/blender-content-blocks.svg?style=flat-square)](https://travis-ci.org/spatie-custom/blender-content-blocks)

Content blocks component for [Blender](https://github.com/spatie-custom/blender), our CMS.

## Installation

The `blender-content-blocks` can be installed from npm.

```bash
yarn add @spatie/blender-content-blocks
```

`blender-content-blocks` also requires you to install `vue@'^2.0.0'`, `lodash@'^4.0.0'`, and `spatie-dom@'^1.0.0'`:

```bash
yarn add vue@'^2.0.0' lodash@'^4.0.0' spatie-dom@'^1.0.0'
```

## Usage

The canonical way to use `blender-content-blocks`, is to mount it on a selector. The `mount` function will replace every element that matches a given selector with a `blender-content-blocks` component. The element should contain props just like you'd pass them with Vue.

```js
import { mount } from '@spatie/blender-content-blocks';

export default function init() {
    mount('content-blocks');
}
```

```html
<content-blocks
    collection="default"
    editor="default"
    create-url="/create"
    :model="{ name: 'MyModel', id: 1 }"
    :input="[]"
    :data="{
        locales: ['nl', 'en'],
        contentLocale: 'nl',
        mediaModel: 'App\Models\ContentBlock',
        mediaUploadUrl: '/upload'
    }"
    :debug="false"
></content-blocks>
```

### Custom Fields

Custom fields can be defined by passing `types`, `translatableAttributes` or `mediaLibraryCollections` to `data`. Here are the default values as a quick reference:

```js
{
    types: {
        imageLeft: 'Afbeelding links',
        imageRight: 'Afbeelding rechts',
    },
    translatableAttributes: {
        name: 'text',
        text: 'redactor',
    },
    mediaLibraryCollections: {
        image: 'image',
    },
}
```

## Contributing

Since this is an internal project, we don't accept pull requests at this time.

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Example images provided by [Unsplash](https://unsplash.com).
npm package: @spatie/blender-css
Description: [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)
Latest version: 5.0.4

# blender-css

[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)

These are the CSS files used by Blender CMS.

## Installation

This package is built for [Blender CMS](https://github.com/spatie-custom/blender) projects.

Add it to the Laravel project via *Yarn*.

```cli
yarn add @spatie/blender-css
```

## Usage

Include the package in your `back.scss`, and build with *Webpack* afterwards.

``` SCSS
@charset 'UTF-8';

@import '@spatie/blender-css/dist/blender';
```

## Change log

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

## Security

If you discover any security related issues, please email willem@spatie.be instead of using the issue tracker.

## Credits

- [Willem Van Bockstal](https://github.com/willemvb)
- [All Contributors](../../contributors)

## About Spatie
Spatie is webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects [on our website](https://spatie.be/opensource).

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @spatie/blender-js
Description: Blender JavaScript framework
Author: Willem Van Bockstal
Latest version: 1.5.0-rc.1

# blender-js

[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)

These are the JavaScript files used by Blender CMS.

## Installation

This package is custom built for [Blender](https://github.com/spatie/blender) projects.

install via yarn

```bash
yarn add @spatie/blender-js
```

## Usage

Include one or more files in your app.js.

``` js
require("@spatie/blender-js/modules/ajax.csrf");
require("@spatie/blender-js/modules/form.autosave");
require("@spatie/blender-js/modules/form.input.datetimepicker");
require("@spatie/blender-js/modules/form.select");
require("@spatie/blender-js/modules/form.textarea.autosize");
require("@spatie/blender-js/modules/form.textarea.parts");
require("@spatie/blender-js/modules/form.locationpicker");
require("@spatie/blender-js/modules/interface.confirm");
require("@spatie/blender-js/modules/table.datatables");
require("@spatie/blender-js/modules/table.sortable");
```

## Change log

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

## Security

If you discover any security related issues, please email willem@spatie.be instead of using the issue tracker.

## Credits

- [Willem Van Bockstal](https://github.com/willemvb)
- [All Contributors](../../contributors)

## About Spatie
Spatie is webdesign agency in Antwerp, Belgium. You'll find an overview of all our open source projects [on our website](https://spatie.be/opensource).

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @spatie/webpack
Description: Our base webpack config for Laravel projects. Work in progress!
Latest version: 0.1.5

# Our base Webpack config

Our base webpack config for Laravel projects. Work in progress!

## What's in the Box?

- Babel with `@babel/preset-env` and `@babel/plugin-syntax-dynamic-import`
- Postcss with `postcss-easy-import`, `tailwindcss` and `postcss-preset-env`
- `.vue` file support, also aliases the `vue` dependency to the full build
- Creates a `mix-manifest.json` file
- Sends system notifications on build
- Disables most of Webpack's stats

## Extending the configuration

Create your own `webpack.config.js`, and pass your configuration options to the main export.

```js
module.exports = require('@spatie/webpack')({
    entry: {
        'js/app': './resources/js/app.js',
        'css/app': './resources/css/app.css',
    },
});
```

## Package versions

You can specify alternative package versions using Yarn's `resolutions` configuration.

```json
"resolutions": {
  "tailwind": "^0.5.0"
},
```

## Colofon

### Contributing

Generally we won't accept any PR requests to Spoon. If you have discovered a bug or have an idea to improve the code, contact us first before you start coding.

### License

Spoon and The Laravel framework are open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)
npm package: @spatio-labs/darwin
Description: Standalone CLI for agent-runtime chat interface
Author: Spatio Labs
Latest version: 1.0.11

# Darwin CLI

A standalone terminal chat interface for agent-runtime. Chat with AI directly from your terminal!

## Quick Install

```bash
npm install -g @spatio-labs/darwin
```

Then use anywhere:
```bash
darwin
```

## Alternative Installation

### Homebrew
```bash
brew tap spatio-labs/tap
brew install darwin
```

### Direct Download
Download from [GitHub Releases](https://github.com/spatio-labs/darwin-cli/releases)

## Usage

```bash
# Start interactive chat
darwin

# Show version
darwin --version

# Show help
darwin --help
```

## Features

- 🚀 **Interactive Chat**: Natural conversation with AI
- ⚡ **Real-time Streaming**: Live responses as they're generated
- 🎨 **Beautiful TUI**: Terminal UI with syntax highlighting
- 🔧 **Debug Info**: Token counts and performance metrics
- 🌐 **Cross-platform**: Works on macOS, Linux, and Windows

## Commands

Within the chat interface:
- `/help` - Show available commands
- `/clear` - Clear the screen  
- `/status` - Show connection status
- `/exit` or `/quit` - Exit the application

## Development

This CLI connects to the production agent-runtime service. No additional setup required!

## License

MIT License - see [LICENSE](LICENSE) file for details.
npm package: @spatocode/dirwalk
Description: Directory tree traversal in nodejs
Author: Ekene Izukanne
Latest version: 0.0.1

# dirwalk

Directory tree traversal in nodejs

## Installation

```sh
$ npm install @spatocode/dirwalk
```

## Usage


```js
const dirwalk = require("@spatocode/dirwalk");

// Asynchronous function
dirwalk.walk("path/to/dir", (err, path, info) => {
    if (err) {
        throw err;
    }
    console.log(path, " : ", info.size);
});

// Synchronous function
var files = dirwalk.walkSync("path/to/dir");
console.log(files);
```

## License

[MIT License](http://www.github.com/spatocode/dirwalk/blob/master/LICENSE)
Copyright (c) 2019 Ekene Izukanne
npm package: @spatulox/discord-module
Description: Automatic Module Manager for Discordjs
Author: Spatulox
Latest version: 0.2.2

# Discord Module System

An ultra-simple and fully type-safe TypeScript module system for Discord.js

## 🚀 What’s it for ?

Turn your Discord bot into independent modules that can be enabled or disabled at will.

✨ Fonctionalities

    🔗 Auto-binding : module.events → automatic client.on()

    🎯 Free name : handleMessage() or myPingHandler() → you choose !

    ⚡ Performance : Only declared event are bind

    🔄 Hot reload : Enable/Disable problematic modules without restarting the bot !

    ✅ Automatic Interactions Binding (name <-> function/method) : No more mess between interactions detection, dispatch and function/method call

    Discordjs : Always up to date and completely compatible

## 🎮 Usage (2 minutes)
1. Module example
```ts
    export class PongModule extends Module {
        public name: string = "Pong Module";
        public description: string = "Reply with pong";
        public get events(): ModuleEventsMap {
            return {
                [Events.MessageCreate]: this.handleMessage,
                [Events.MessageUpdate]: [this.handleMessageUpdate1, this.handleMessageUpdate2],
            }
        }
    
        async handleMessage(message: Message) {
            if(message.content == "!ping") {
                message.reply("Pong !")
            }
        }
    
        async handleMessageUpdate1(message: Message) {
            message.reply("Update 1 !")
        }
    
        async handleMessageUpdate2(message: Message) {
            message.reply("Update 2 !")
        }

        static async pong_interaction(interaction: ChatInputCommandInteraction){
            interaction.reply("pong !)
        }
    
    }
```
2. Bot
```ts
client.once(Events.ClientReady, () => {
    const manager = ModuleManager.createInstance(client); // ModuleManager is a singleton
    const interactionManager = InteractionManager.createInstance(client); // ModuleManager is a singleton
    manager.register(new PongModule(client)); // You can register a Module or a MultiModule (Menu for Module)
    manager.enableAll(); // By default, a Module is disable
    manager.sendUIToChannel("channelID") // Optionnal, only if you want to dynamically toggle modules

    // Register commands
    interactionManager.registerSlash("ping", PongModule.pong_interaction)
});
```

| Functionnalities    | Without Modules  | With Module   |
|---------------------|------------------|---------------|
| Hidden client.on    | ❌                | ✅             |
| Live module enabled | ❌ (Need restart) | ✅ (One click) |
| Organised           | ❌                | ✅             |
| Automatic interaction binding           | ❌                | ✅             |
npm package: @spatulox/simplediscordbot
Description: Simple discord bot framework to set up a bot under 30 secondes
Author: Spatulox
Latest version: 2.0.1


# Simple Discord Bot ![badge-status](https://img.shields.io/badge/status-active-brightgreen)

[![npm version](https://img.shields.io/npm/v/@spatulox/simplediscordbot.svg)](https://npmjs.com/package/@spatulox/simplediscordbot)
[![downloads](https://img.shields.io/npm/dm/@spatulox/simplediscordbot.svg)](https://npmjs.com/package/@spatulox/simplediscordbot)
[![license](https://img.shields.io/npm/l/@spatulox/simplediscordbot.svg)](LICENSE)

> **TypeScript Discord.js framework** - Simple, powerful, framework-ready. Built for developers who want clean bot architecture.

## ✨ Features :
> - Fully compatible with discordjs
> - Include the [DiscordInterationManager](https://github.com/Spatulox/DiscordInteractionManager) package
> - Simple Log package
> - Provides easy Managers to avoid repetitive code everywhere
> - Simple yet powerful builders (Embeds, Modals, SelectMenus, Components, Buttons) that rely on discord.js for full compatibility


## Installation
```bash
npm i @spatulox/simplediscordbot
```

## Quick Start

Env Variables:
```bash
DISCORD_BOT_TOKEN="" // Your bot Token
DISCORD_BOT_CLIENTID="" // Yout bot client id
```

```typescript
import {Bot, BotConfig, SimpleColor, Time} from "@spatulox/simplediscordbot";
import {Client, Events, GatewayIntentBits} from "discord.js";

const client = new Client({
    intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages]
});

const config: BotConfig = {
    defaultSimpleColor: SimpleColor.blue,
    botName: "Simple Discord Bot",
    log: {
        info: {channelId: "YOUR_LOG_CHANNEL_ID", console: true, discord: true},
        error: {channelId: "YOUR_LOG_CHANNEL_ID", console: true, discord: true},
        warn: {channelId: "YOUR_LOG_CHANNEL_ID", console: true, discord: true},
        debug: {channelId: "YOUR_LOG_CHANNEL_ID", console: true, discord: false},
    }
};

const bot = new Bot(client, config);

bot.client.on(Events.ClientReady, async () => {
    Bot.setRandomActivity(randomActivityList, Time.minute.MIN_10.toMilliseconds());
    console.log("Bot ready! ✨");
});
```
npm package: @spaugur/eav
Description: Simple errors-as-values for TypeScript.
Author: Kjartan Hrafnkelsson
Latest version: 1.0.2

# eav - errors as values

The pattern of exceptions in languages like JavaScript (+ TypeScript), Java, C#, etc. can create confusing control flow that's unpredictable and hard to work with.

This package aims to help JS and TS developers "unwrap" functions that throw errors into a simple combination of `res` and `err` variables that can then be handled accordingly with guard clauses.

Below is an example:

```ts
import { unwrapAsync as unwrap } from "@spaugur/eav";

// unwrap the value and exception
const { res, err } = await unwrap(async () => {
    throw new Error('Something bad happened.');

    // we can pretend this return is sometimes reachable...
    return {test: 'data'};
});

// handle any errors
if (err || !res) {
    if (err instanceof Error) {
        console.log('Error!', err.message);
        return;
    }

    console.log(err);
    return;
}

// consume the value
console.log(res);
```

The above could easily be adapted to deal with the errors that `fetch` might throw, something almost every JS/TS developer has to deal with at some point.

We use this package internally at [Spaugur](https://spaugur.com/).

You could also totally copy the source code into your own projects. It's tiny!

(c) 2024 Kjartan Hrafnkelsson, under MIT license.
npm package: @spautz/basic-library-template
Description: My opinionated template for a basic, general-use JS library
Author: Steven Pautz
Latest version: 0.4.0

# Basic Library Template

Example package for a general-use Javascript library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/basic-library-template.svg)](https://www.npmjs.com/package/@spautz/basic-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/basic-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-basic-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-basic-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/basic-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/basic-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/basic-library-template.svg)](https://bundlephobia.com/package/@spautz/basic-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spautz/browser-only-library-template
Description: My opinionated template for a browser-only JS library
Author: Steven Pautz
Latest version: 0.0.1

# NodeJS Library Template

Example package for a NodeJS library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/browser-only-library-template.svg)](https://www.npmjs.com/package/@spautz/browser-only-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/browser-only-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-browser-only-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-browser-only-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/browser-only-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/browser-only-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/browser-only-library-template.svg)](https://bundlephobia.com/package/@spautz/browser-only-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spautz/node-library-template
Description: My opinionated template for a NodeJS library
Author: Steven Pautz
Latest version: 0.3.1

# NodeJS Library Template

Example package for a NodeJS library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/node-library-template.svg)](https://www.npmjs.com/package/@spautz/node-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/node-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-node-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-node-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/node-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/node-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/node-library-template.svg)](https://bundlephobia.com/package/@spautz/node-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spautz/react-library-template
Description: My opinionated template for a React package
Author: Steven Pautz
Latest version: 0.4.0

# React Library Template

Example package for a React library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/react-library-template.svg)](https://www.npmjs.com/package/@spautz/react-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/react-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-react-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-react-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/react-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/react-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/react-library-template.svg)](https://bundlephobia.com/package/@spautz/react-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spautz/server-only-library-template
Description: My opinionated template for a server-only JS library
Author: Steven Pautz
Latest version: 0.0.1

# NodeJS Library Template

Example package for a NodeJS library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/server-only-library-template.svg)](https://www.npmjs.com/package/@spautz/server-only-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/server-only-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-server-only-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-server-only-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/server-only-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/server-only-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/server-only-library-template.svg)](https://bundlephobia.com/package/@spautz/server-only-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spautz/slow-package-example
Description: A package which takes a long time to build, for demoing `skip-the-build`
Author: Steven Pautz
Latest version: 0.1.0

# Basic Library Template

Example package for a general-use Javascript library. Used to test the publishing workflow, NPM provenance, and per-package code coverage.

[![npm version](https://img.shields.io/npm/v/@spautz/basic-library-template.svg)](https://www.npmjs.com/package/@spautz/basic-library-template)
[![readme](https://img.shields.io/badge/-readme-informational)](https://github.com/spautz/package-template/blob/main/packages/basic-library-template/README.md)
[![build status](https://github.com/spautz/package-template/workflows/CI/badge.svg)](https://github.com/spautz/package-template/actions)
[![test coverage](https://coveralls.io/repos/github/spautz/package-template/badge.svg?branch=x-cov-basic-library-template)](https://coveralls.io/github/spautz/package-template?branch=x-cov-basic-library-template)
[![vulnerabilities](https://snyk.io/test/npm/@spautz/basic-library-template/badge.svg)](https://snyk.io/test/npm/@spautz/basic-library-template)
[![gzip size](https://img.shields.io/bundlephobia/minzip/@spautz/basic-library-template.svg)](https://bundlephobia.com/package/@spautz/basic-library-template@latest)

For more information or related packages, see the [Package-Template workspace](https://github.com/spautz/package-template).
npm package: @spawnco/server
Description: Server SDK
Author: Spawn
Latest version: 0.0.60

# Spawn Server SDK

Server-side SDK for Spawn game development platform.

## Installation

```bash
npm install @spawnco/server @spawnco/sdk-types
# or
bun add @spawnco/server @spawnco/sdk-types
```

## Usage

### Token Verification

The server SDK provides token verification for authenticating users in your game server:

```typescript
import { createSDK } from "@spawnco/server";

// Create SDK instance with environment configuration
const sdk = createSDK({
  // For HS256 tokens (default)
  SUPABASE_JWT_SECRET: process.env.SUPABASE_JWT_SECRET,
  // For RS256 tokens (recommended for production)
  RSA_PUBLIC_KEY: process.env.RSA_PUBLIC_KEY,
});

// In your WebSocket handler or API endpoint
async function handleConnection(token: string) {
  const result = await sdk.user.token.verify(token);

  if (!result.valid) {
    throw new Error("Invalid token");
  }

  // Access user information
  const { user, expires, payload } = result;
  console.log(`User ${user.username} connected`);
  console.log(`Token expires at ${expires}`);
  console.log(`Variant ID: ${payload.variantId}`);
}
```

### Token Payload

Verified tokens include the following information:

```typescript
interface TokenPayload {
  sub: string; // User ID
  variantId: string; // Game variant ID
  email?: string; // User email
  username?: string; // User display name
  isGuest: boolean; // Whether user is anonymous
  iat: number; // Issued at timestamp
  exp: number; // Expiration timestamp
}
```

## Environment Variables

The SDK supports two token signing algorithms:

- **HS256 (Symmetric)**: Uses `SUPABASE_JWT_SECRET`
- **RS256 (Asymmetric)**: Uses `RSA_PUBLIC_KEY` for verification

The algorithm is automatically detected based on the token header.

## Future Features

The v1 SDK will include additional modules:

- Economy (purchase redemption)
- Inventory (currency and item management)
- Storage (room-based persistence)

See the [@spawnco/sdk-types](../gsdk-types/README.md) package for the full API surface.
npm package: @spawnmailhq/claude-code-skill
Description: Claude Code skill for spawnmail — disposable email testing
Latest version: 0.1.0

# @spawnmail/claude-code-skill

A [Claude Code](https://claude.com/claude-code) skill that helps you use [SpawnMail](https://spawnmail.sh) for QA testing, agent sign-ups, and automated test scripts.

## Install

```bash
claude skill install spawnmail
```

## What It Does

When you ask Claude Code to write tests that involve email verification, this skill automatically:

1. **Detects** your project's language (JS/TS or Python) and test framework
2. **Installs** the SpawnMail SDK if missing
3. **Generates** test scripts for your specific use case

## Supported Use Cases

- **Sign-up flow testing** — Create inbox, sign up, capture OTP, verify
- **Email notification testing** — Trigger action, wait for email, assert content
- **Multi-inbox isolation** — Verify emails route to correct inboxes
- **SDK integration tests** — Full CRUD lifecycle testing

## Supported Interfaces

| Interface | Best For |
|-----------|----------|
| JS/TS SDK (`@spawnmail/sdk`) | Vitest, Jest, Playwright tests |
| Python SDK (`spawnmail`) | pytest tests |
| CLI (`@spawnmail/cli`) | Shell scripts, CI pipelines |

## Requirements

- A SpawnMail API key (sign up at [spawnmail.sh](https://spawnmail.sh))
- Set `SPAWNMAIL_API_KEY` environment variable or run `spawnmail login`
npm package: @spax/plugin-lazy
Description: Suspense and lazy
Author: crossjs
Latest version: 1.4.3-alpha.0

# :rocket: LazyPlugin

基于 React.Suspense 与 React.Lazy，提供异步组件支持。

## :hammer_and_wrench: 使用 usage

### 安装 install

```bash
yarn add @spax/plugin-lazy
```

### 示例 examples

添加到 Framework

```ts
import { Framework } from "@spax/core";
import LazyPlugin from "@spax/plugin-lazy";

const options = process.env.NODE_ENV === "production"
  ? require("./config/config.prod")
  : require("./config/config.dev");

export default class MyFramework extends Framework {
  public static plugins = [
    // 作为 Framework 的静态属性
    LazyPlugin,
  ];

  public static options: any = options.default;
}
```

使用 Framework

```ts
import MyFramework from "./MyFramework";

const options = process.env.NODE_ENV === "production"
  ? require("./config/config.prod")
  : require("./config/config.dev");

new MyFramework({
  ...options.default,
  blocks: [
    import("./blocks/home"),
    // 404
    {
      path: "*",
      lazy: () => import("./components/NotFound"),
    },
  ],
}).mount();
```
npm package: @spax/spax-cli
Description: spax cli
Author: crossjs
Latest version: 1.2.6-alpha.0

# SPAX CLI

## Usage

```bash
$ yarn global add @spax/spax-cli
$ spax-cli <project-name>
```

Or (Recommended)

```bash
$ npx @spax/spax-cli <project-name>
```
npm package: @spbarker/null-or-empty
Description: Helper function to determine if something is undefined, null or empty
Author: Samuel Barker
Latest version: 1.0.0

# null-or-empty
Basic helper function which determines if something is null or empty

```
import nullOrEmpty from 'null-or-empty'

console.log(nullOrEmpty('')) // true
console.log(nullOrEmpty(null)) // true
console.log(nullOrEmpty(undefined)) // true
console.log(nullOrEmpty([])) // true
console.log(nullOrEmpty('Example')) // false
```
npm package: @spbarker/re-qwest
Description: Promisified XMLHttpRequest and XDomainRequest with CORS
Author: Samuel Barker
Latest version: 3.0.0

# re-qwest
Promise-ifies XMLHttpRequest/XDomainRequest whilst using CORS.

# Usage
```
import reqwest from 're-qwest'

// Make a request
reqwest({
  method: 'GET',
  url: 'https://exampleurl.com/api/v1/example/1',
}).then((response) => {
  const data = JSON.parse(response)
  console.log(data)
}).catch((error) => {
  console.log(error)
})
```

# Paramaters
The reqwest function takes an object with the following properties:
```
{
  method: The `HTTP` method to use (string),
  url: The url to aim the request at (string),
  params: additional query parameters you wish to send with the request (object),
  headers: Request headers(object),
  props: Additional properties you wish to add to the request object, such as `withCredentials` (object)
}
```

For details on what can be used in regards to `headers` and `props`, see the documentation on XMLHttpRequest https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
npm package: @spbarker/vision
Description: Pomodoro timer with electron and react
Author: Samuel Barker
Latest version: 2.1.0

[![CircleCI](https://circleci.com/gh/spbarker/vision/tree/master.svg?style=shield)](https://circleci.com/gh/spbarker/vision/tree/master) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Coverage Status](https://coveralls.io/repos/github/spbarker/vision/badge.svg?branch=master)](https://coveralls.io/github/spbarker/vision?branch=master) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

# Vision
Pomodoro style timer for Mac OS written using Electron &amp; React!

# Getting Started
- `yarn start` will compile all of the necessary JS and run the electron application.
- `yarn js:lint` will lint the application.
- `yarn test:coverage` will run the unit tests.

# Linting
Linter of choice is [StandardJS](https://standardjs.com/).

# Installing the application locally
To build the app itself and install it to your applications run `yarn dist` and then open the `dmg` present in `dist/`.

# Contributing
## Commiting
All commit messages should be done through [Commitizen](https://github.com/commitizen/cz-cli),
which is configured to use the `@metahub/cz-conventional-commit` adapter. These are installed locally
through dev dependencies.

To commit through Commitizen, just run `yarn cm`, and follow the interactive prompt. This enforces proper semantic versioning and releasing with CI.

## Reviewing
`master` branch is protected and required two reviews to be merged.

## Testing
`pre-commit` and `pre-push` hooks have been set up using [husky](https://www.npmjs.com/package/husky) to enforce that unit tests and linting are both run at these points.

The test coverage is enforced at 100% across the board - no exceptions. All of the tests should pass with 100% coverage for a PR to even be considered for review.

## CI
The CI tool of choice is [CircleCI](https://circleci.com/) and runs on every pull request, not every commit however. The CI will run `yarn install`, `linting`, `unit tests`, and then finally a `JS build` to ensure that everything is in working order.

## Releasing
Releasing is handled automatically by CI. The versioning is handled itself by a tool called [semantic-release](https://www.npmjs.com/package/semantic-release).

Once this has completed a new git tag will be created. However the version in `package.json` will not have been updated. This job will need to be done separately.
npm package: @spbrewery/adyen
Description: Promise based wrapper client for Adyen Web SDK for Javascript
Author: Adriel de Guzman
Latest version: 2.0.3

# Brewery Adyen Client

Promise based wrapper client for <a href="https://docs.adyen.com/developers/checkout/web-sdk">Adyen Web SDK for Javascript</a>.

## Install

```sh
npm i @spbrewery/adyen
```

## Usage

The methods return promises which are compatible to be used on async/await functions. The default configuration settings can be overridden on the constructor of `BreweryAdyen`.

```js

const { BreweryAdyen } = require('@spbrewery/adyen');
const breweryAdyenClient = new BreweryAdyen({
  apiKey: 'YOUR-API-KEY',
  apiUrl: 'https://your.redirect.url',
  checkoutUrl: 'https://checkout-test.adyen.com/checkout/v40/', // default value
  merchantAccount: 'YOUR MERCHANT ACCOUNT',
  sdkVersion: '1.6.5', // default value
});

adyenClient.paymentSession({
  countryCode: 'PH',
  ...restOfParameters,
})
  .then((data) => {
    console.log(data);
  })
  .catch(error) => {
    console.log(error);
  });
```

## API

```js
adyenClient
  /**
   * Initiate a payment session with Adyen.
   *
   * @param {string} amountCurrency - The currency code of the amount to be paid
   * @param {number} amountValue - The amount to be paid
   * @param {string} countryCode - The country code of the payer
   * @param {string} reference - Unique identifier for the transaction
   * @param {string} returnUrl - The URL to be used as landing page after the transaction
   * @param {string} shopperReference - Unique identifier of the payer
   *
   * @returns {Object}
   */
  .paymentSession({
    amountCurrency: '',
    amountValue: '',
    countryCode: '',
    reference: '',
    returnUrl: '',
    shopperLocale: '',
  })

  /**
   * Verify the payment result.
   *
   * @param {string} payload - The encrypted payment result data to be verified
   *
   * @returns {Object}
   */
  .paymentResult({
    payload: '',
  });
```

## Helper Methods

These are auxillary methods that are exported with the package.

```js
/**
 * Decode the given JWT string.
 */
const { decodeJwt } = require('@spbrewery/adyen');

decodeJwt('eyJjaGVja291dHNob3BwZXJCYXNlVXJsIjoiaHR0...');
```
npm package: @spce/material-ui-core
Description: React components that implement Google's Material Design.
Author: Material-UI Team
Latest version: 4.11.6

# @material-ui/core

React components that implement Google's Material Design.

## Build from source

```sh

yarn install

yarn run build:umd

npm run release

```

## Installation

Install the package in your project directory with:

```sh
// with npm
npm install @material-ui/core

// with yarn
yarn add @material-ui/core
```

## Documentation

[The documentation](https://material-ui.com/)
npm package: @spce/pdfreader
Description: PDF Reader component using PDF.js library
Author: ngager-group
Latest version: 1.2.0

# ngager-pdfreader

> PDF Reader component using PDF.js library

[![NPM](https://img.shields.io/npm/v/@meetingmaker/pdfreader)](https://www.npmjs.com/package/@meetingmaker/pdfreader) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save ngager-pdfreader
```
## Example
https://ngager-group.github.io/ngager-pdfreader/

## Usage

```jsx
import React, { Component } from 'react'

import PDF from 'ngager-pdfreader'

class Example extends Component {
  render () {
    return (
      <PDF
        popup
        src="https://nclong87.github.io/file-example_PDF_500_kB.pdf"
        downloadable
        onRequestClose={() => this.setState({ open: false })}
        onLastPage={() => console.log('onLastPage')}
        onPageChanged={(currentPage) => console.log('currentPage', currentPage)}
      />
    )
  }
}
```

## License

MIT © [ngager-group](https://github.com/ngager-group)
npm package: @spce/pdfwriter
Description: A ReactJS library for writing PDF file
Author: Long Nguyen
Latest version: 1.2.0

# @spce/pdfwriter

> Very simple ReactJS PDF Writer library using PDFKit

[![NPM](https://img.shields.io/npm/v/@spce/pdfwriter.svg)](https://www.npmjs.com/package/@spce/pdfwriter) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save @spce/pdfwriter
```

## Usage

```jsx
import React, { Component } from 'react'

import Pdf from '@spce/pdfwriter'

import { domToImage } from '@spce/pdfwriter/domUtils'

const html2canvas = require('html2canvas');

const text = '3. <b>Consultation Services</b>: The Recruitment team provides <b>consultation on </b>new and replacement positions - hiring  –  process, salary<b> range, </b> hehehe<br><br>   <b>availability, possible</b> challenges/risks and strategies <br>to close the roles.';

const text2 = 'The man who knows his worth respects his fellow man because he respects himself first. He does not boast; is not self-seeking; nor does he force his personal opinion on others.';

const text3 = '<span style="color: #FF6347;font-weight: bold;">#</span> What website or app has completely changed your life for better or for worse?'


class Example extends Component {
  async onClick() {
    const pdf = new Pdf({ defaultFontSize: 11, defaultColor: '#222222' });
    try {
      pdf.addText(text, { fontSize: 12, color: '#BBBBBB' });
      pdf.addText(' ');
      pdf.addIcon('', { color: '#BBBBBB' });
      pdf.moveUp();
      pdf.addText(text2, null, { indent: 16 });
      pdf.addText(' ');
      pdf.addText(text3);
      pdf.addText(' ');

      const dataUrl = await domToImage(this.chart);
      pdf.addImage(dataUrl);

      // add Page
      pdf.addPage();
    } catch (e) {
      console.log('ERROR', e);
    }
    // const blob = await pdf.output();
    // console.log('blob', blob);
    await pdf.save('test.pdf');
  }
  render () {
    return (
      <div>
        <div ref={el => {this.chart = el || this.chart; }} >
          {...chart}
        </div>
        <button onClick={() => this.onClick()}>Download PDF</button>
      </div>
    )
  }
}
```

## License

MIT © [SP-CE](https://github.com/SP-CE)