open-index/open-npm huggingface dataset:
npm package: @gandalfwisdom/flipbookbuddy
Description: A basic flipbook animator/display module for Roblox.
Author: GandalfWisdom
Latest version: 1.0.0

# FlipbookBuddy
A basic flipbook animator/display module for Roblox.

## Dependencies
This resource is **dependant** on the [Nevermore](https://github.com/Quenty/NevermoreEngine) framework. It will not work without it.

## Features
Allows functionality for animated or static sprite sheets.

## Usage
This module will automatically detect the image's resolution if you uploaded it, but will need a custom resolution if you are using a public decal.

Initialize your FlipbookBuddy with your ImageLabel/Button label as the first argument.
```lua
local FlipbookBuddy = require(path.to.flipbookbuddy);
local flipbook = FlipbookBuddy.new(image_label);
```
Now it's as simple as calling:
```lua
    flipbook:Play(); 
    -- or
    flipbook:Loop();
```
to play your animation.

You can also use:
```lua
    flipbook:SetPosition(3);
```
to set the image to a specific frame. Very useful for button input atlases.

## Installation
PathBuddy supports [Nevermore's](https://github.com/Quenty/NevermoreEngine) npm package installation method. 

Simply type ```npm install @gandalfwisdom/flipbookbuddy``` in your CLI on your project to install.
npm package: @gandalfwisdom/pathbuddy
Description: A basic pathfinding Humanoid mover for Roblox.
Author: GandalfWisdom
Latest version: 1.0.1

# PathBuddy
A basic pathfinding Humanoid mover for Roblox.

## Dependencies
This resource is **dependant** on the [Nevermore](https://github.com/Quenty/NevermoreEngine) framework. It will not work without it.

## Features
Quickly allow the ability to move any character to a specified location using Roblox's built-in [pathfinding API](https://create.roblox.com/docs/characters/pathfinding).

* Supports most rigs which have a humanoid.
* Perfect for NPCS, cutscenes, etc.

## Usage
Initialize your PathBuddy object with a character and agent params:
```lua
local character: Model = game.Players.LocalPlayer.Character or game.Players.LocalPlayer.CharacterAdded:Wait();

local PathBuddy = require(path.to.pathbuddy);
local path_buddy = PathBuddy.new(character, {});
```
Now it's as simple as calling:
```lua
    path_buddy:MoveTo(Vector3.new(50, 1, 0));
```
to move the character toward the supplied location.

## Installation
PathBuddy supports [Nevermore's](https://github.com/Quenty/NevermoreEngine) npm package installation method. 

Simply type ```npm install @gandalfwisdom/pathbuddy``` in your CLI on your project to install.
npm package: @gandalfwisdom/richbuddy
Description: A rich text system for Roblox
Author: GandalfWisdom
Latest version: 1.0.2

# RichBuddy

A simple rich text display class for Roblox.

## Requirements
This module <b>requires</b> Quenty's [Nevermore](https://github.com/Quenty/NevermoreEngine) engine to function.

## Features
Convert any [TextLabel](https://create.roblox.com/docs/reference/engine/classes/TextLabel) object to a rich text capable label with features such as:

* Standard Roblox richtext implementation.
* Typewriter effects and styles such as "fade" and "drop".
* Shake, wave, and other animated text options.

## Usage
Initialize your RichBuddy object:
```lua
local RichBuddy = require(path.to.richbuddy);
local rich_display = RichBuddy.new(text_label, `<write speed="0.05" style="drop"><b>Example text!</b></write>`);
```

## Installation
StackBuddy supports [Nevermores](https://github.com/Quenty/NevermoreEngine) npm package installation method. 

Simply type ```npm install @gandalfwisdom/richbuddy``` in your CLI on your project to install.
npm package: @gandalfwisdom/stackbuddy
Description: A standard stack data structure for Roblox.
Author: GandalfWisdom
Latest version: 1.0.3

# StackBuddy

A simple stack data structure class for roblox.


## Features
StackBuddy allows you to utilize a stack data structure ([LIFO](https://www.geeksforgeeks.org/dsa/lifo-last-in-first-out-approach-in-programming/)).

* Supports all standard stack implementation functions and more such as: Push, Pop, Peek, IsEmpty and Size.
* Perfect for use with state machines, pathfinding systems, undo systems, NPC AI behavior, and much more!

## Usage
Initialize your StackBuddy object:
```lua
local StackBuddy = require(path.to.stackbuddy);
local stack = StackBuddy.new();
```
Push, Pop, and Peek at your data to your heart's content:
```lua

    local function set_undo(last_input: Enum.KeyCode)
        stack:Push(last_input);
    end;

    local function undo()
        local undo_input: Enum.KeyCode = stack:Pop();
        print(undo_input.Name, " has been undone");
    end;

    set_undo(Enum.KeyCode.A);
    set_undo(Enum.KeyCode.B);
    set_undo(Enum.KeyCode.C);

    undo();
    undo();
```
Output should be:
```
C has been undone
B has been undone
```

## Installation
StackBuddy supports [Nevermore's](https://github.com/Quenty/NevermoreEngine) npm package installation method. 

Simply type ```npm install @gandalfwisdom/stackbuddy``` in your CLI on your project to install.
npm package: @gandalfwisdom/weightbuddy
Description: A basic weighted chance roller for Roblox.
Author: GandalfWisdom
Latest version: 1.0.0

# WeightBuddy
A basic weighted chance roller for Roblox.

## Features
Allows for the simple rolling of weighted chance tables.

## Usage
Simply construct a dictionary of objects with a number value representing their weight like so:
```lua
local rarities = {
    ["Common"] = 60;
    ["Uncommon"] = 30;
    ["Rare"] = 10;
    ["Legendary"] = 0.5;
};
```
Next simply roll that table and retrieve the item name returned from the roll!
```lua
local WeightBuddy = require(path.to.weightbuddy);
local roll = WeightBuddy.roll(rarities);

print(roll);
-- Output: "Common" (Or whatever you happened to roll from the table)
```
## Installation
WeightBuddy supports [Nevermore's](https://github.com/Quenty/NevermoreEngine) npm package installation method. 

Simply type ```npm install @gandalfwisdom/weightbuddy``` in your CLI on your project to install.
npm package: @gander-atproto-nest/rollup-plugin-bundle-manifest
Description: Library for generating a manifest of bundled files from a Rollup build
Latest version: 0.2.8
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @gander-atproto-nest/rollup-plugin-bundle-manifest

This Rollup plugin allows to generate a (JSON) manifest containing the output
files of a Rollup build. The manifest will look as follows:

```json
{
  "main.js": {
    "type": "chunk",
    "mime": "application/javascript",
    "dynamicImports": [],
    "isDynamicEntry": false,
    "isEntry": true,
    "isImplicitEntry": false,
    "name": "main",
    "sha256": "<sha256-hash>",
    "data": "<base64-encoded-contents>"
  },
  "main.js.map": {
    "type": "asset",
    "mime": "application/json",
    "sha256": "<sha256-hash>",
    "data": "<base64-encoded-contents>"
  },
  "main.css": {
    "type": "asset",
    "mime": "text/css",
    "sha256": "<sha256-hash>",
    "data": "<base64-encoded-contents>"
  }
  // ... more entries as needed
}
```

This manifest will typically be useful for a backend service that serves the
frontend assets, as it can be used to determine the correct `Content-Type` and
and file integrity (via the SHA-256 hash), without having to read the files
themselves.

## Usage

```js
// rollup.config.js

import bundleManifest from '@gander-atproto-nest/rollup-plugin-bundle-manifest'

export default {
  input: 'src/index.js',
  output: {
    dir: 'dist',
    format: 'es',
  },
  plugins: [
    bundleManifest({
      name: 'bundle-manifest.json',

      // Optional: should the asset data be embedded (as base64 string) in the manifest?
      data: false,
    }),
  ],
}
```

## Options

- `name` (string): The name of the manifest file. Defaults to `bundle-manifest.json`.
- `data` (boolean): Whether to embed the asset data in the manifest. Defaults to `false`.

## Example

```js
const assetManifest = require('./dist/bundle-manifest.json')

const app = express()

app.use((req, res, next) => {
  const asset = assetManifest[req.path.slice(1)]
  if (!asset) return next()

  res.setHeader('Content-Type', asset.mime)
  res.setHeader('Content-Length', asset.data.length)

  res.end(Buffer.from(asset.data, 'base64'))
})

app.use((req, res, next) => {
  res.setHeader(
    'Content-Security-Policy',
    buildCSP(assetManifest), // Not provided here
  )

  // Serve the index.html file
  res.sendFile('index.html')
})
```

## License

MIT
npm package: @gander-social-atproto/common
Description: Shared web-platform-friendly code for atproto libraries
Latest version: 0.5.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/common

Shared TypeScript code for other `@atproto/*` packages. This package is oriented towards writing servers, and is not designed to be browser-compatible.

[![NPM](https://img.shields.io/npm/v/@atproto/common)](https://www.npmjs.com/package/@atproto/common)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-social-atproto/common-web
Description: Shared web-platform-friendly code for atproto libraries
Latest version: 0.5.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/common-web

Shared TypeScript code for other `@atproto/*` packages, which is web-friendly (runs in-browser).

[![NPM](https://img.shields.io/npm/v/@atproto/common)](https://www.npmjs.com/package/@atproto/common-web)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-social-atproto/crypto
Description: Library for cryptographic keys and signing in atproto
Latest version: 0.5.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/crypto

TypeScript library providing basic cryptographic helpers as needed in [atproto](https://atproto.com).

[![NPM](https://img.shields.io/npm/v/@atproto/crypto)](https://www.npmjs.com/package/@atproto/crypto)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

This package implements the two currently supported cryptographic systems:

- P-256 elliptic curve: aka "NIST P-256", aka secp256r1 (note the r), aka prime256v1
- K-256 elliptic curve: aka "NIST K-256", aka secp256k1 (note the k)

The details of cryptography in atproto are described in [the specification](https://atproto.com/specs/cryptography). This includes string encodings, validity of "low-S" signatures, byte representation "compression", hashing, and more.

## Usage

```typescript
import {
  verifySignature,
  Secp256k1Keypair,
  P256Keypair,
} from '@gander-social-atproto/crypto'

// generate a new random K-256 private key
const keypair = await Secp256k1Keypair.create({ exportable: true })

// sign binary data, resulting signature bytes.
// SHA-256 hash of data is what actually gets signed.
// signature output is often base64-encoded.
const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8])
const sig = await keypair.sign(data)

// serialize the public key as a did:key string, which includes key type metadata
const pubDidKey = keypair.did()
console.log(pubDidKey)

// output would look something like: 'did:key:zQ3shVRtgqTRHC7Lj4DYScoDgReNpsDp3HBnuKBKt1FSXKQ38'

// verify signature using public key
const ok = verifySignature(pubDidKey, data, sig)
if (!ok) {
  throw new Error('Uh oh, something is fishy')
} else {
  console.log('Success')
}
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-social-atproto/lexicon
Description: atproto Lexicon schema language library
Latest version: 0.5.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/lexicon: schema validation library

TypeScript implementation of the Lexicon data and API schema description language, which is part of [atproto](https://atproto.com).

[![NPM](https://img.shields.io/npm/v/@atproto/lexicon)](https://www.npmjs.com/package/@atproto/lexicon)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

```typescript
import { Lexicons } from '@gander-social-atproto/lexicon'

// create your lexicons collection
const lex = new Lexicons()

// add lexicon documents
lex.add({
  lex: 1,
  id: 'com.example.post',
  defs: {
    // ...
  }
})

// validate
lex.assertValidRecord('com.example.record', {$type: 'com.example.record', ...})
lex.assertValidXrpcParams('com.example.query', {...})
lex.assertValidXrpcInput('com.example.procedure', {...})
lex.assertValidXrpcOutput('com.example.query', {...})
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-social-atproto/syntax
Description: Validation for atproto identifiers and formats: DID, handle, NSID, AT URI, etc
Latest version: 0.5.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/syntax: validation helpers for identifier strings

Validation logic for [atproto](https://atproto.com) identifiers - DIDs, Handles, NSIDs, and AT URIs.

[![NPM](https://img.shields.io/npm/v/@atproto/crypto)](https://www.npmjs.com/package/@atproto/syntax)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

### Handles

Syntax specification: <https://atproto.com/specs/handle>

```typescript
import {
  isValidHandle,
  ensureValidHandle,
  isValidDid,
} from '@gander-social-atproto/syntax'

isValidHandle('alice.test') // returns true
ensureValidHandle('alice.test') // returns void

isValidHandle('al!ce.test') // returns false
ensureValidHandle('al!ce.test') // throws

ensureValidDid('did:method:val') // returns void
ensureValidDid(':did:method:val') // throws
```

### NameSpaced IDs (NSID)

Syntax specification: <https://atproto.com/specs/nsid>

```typescript
import { NSID } from '@gander-social-atproto/syntax'

const id1 = NSID.parse('com.example.foo')
id1.authority // => 'example.com'
id1.name // => 'foo'
id1.toString() // => 'com.example.foo'

const id2 = NSID.create('example.com', 'foo')
id2.authority // => 'example.com'
id2.name // => 'foo'
id2.toString() // => 'com.example.foo'

const id3 = NSID.create('example.com', 'someRecord')
id3.authority // => 'example.com'
id3.name // => 'someRecord'
id3.toString() // => 'com.example.someRecord'

NSID.isValid('com.example.foo') // => true
NSID.isValid('com.example.someRecord') // => true
NSID.isValid('example.com/foo') // => false
NSID.isValid('foo') // => false
```

### AT URI

Syntax specification: <https://atproto.com/specs/at-uri-scheme>

```typescript
import { AtUri } from '@gander-social-atproto/syntax'

const uri = new AtUri('at://bob.com/com.example.post/1234')
uri.protocol // => 'at:'
uri.origin // => 'at://bob.com'
uri.hostname // => 'bob.com'
uri.collection // => 'com.example.post'
uri.rkey // => '1234'
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-social-atproto/xrpc-server
Description: atproto HTTP API (XRPC) server library
Latest version: 0.9.7
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @atproto/xrpc-server: atproto HTTP API server library

TypeScript library for implementing [atproto](https://atproto.com) HTTP API services, with Lexicon schema validation.

[![NPM](https://img.shields.io/npm/v/@atproto/xrpc-server)](https://www.npmjs.com/package/@atproto/xrpc-server)
[![Github CI Status](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml/badge.svg)](https://github.com/bluesky-social/atproto/actions/workflows/repo.yaml)

## Usage

```typescript
import { LexiconDoc } from '@gander-social-atproto/lexicon'
import * as xrpc from '@gander-social-atproto/xrpc-server'
import express from 'express'

const lexicons: LexiconDoc[] = [
  {
    lexicon: 1,
    id: 'io.example.ping',
    defs: {
      main: {
        type: 'query',
        parameters: {
          type: 'params',
          properties: { message: { type: 'string' } },
        },
        output: {
          encoding: 'application/json',
        },
      },
    },
  },
]

// create xrpc server
const server = xrpc.createServer(lexicons)

function ping(ctx: {
  auth: xrpc.HandlerAuth | undefined
  params: xrpc.Params
  input: xrpc.HandlerInput | undefined
  req: express.Request
  res: express.Response
}) {
  return { encoding: 'application/json', body: { message: ctx.params.message } }
}

server.method('io.example.ping', ping)

// mount in express
const app = express()
app.use(server.router)
app.listen(8080)
```

## License

This project is dual-licensed under MIT and Apache 2.0 terms:

- MIT license ([LICENSE-MIT.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-MIT.txt) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE.txt](https://github.com/bluesky-social/atproto/blob/main/LICENSE-APACHE.txt) or http://www.apache.org/licenses/LICENSE-2.0)

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
npm package: @gander-tools/playground
Description: This package was created only to test creating a multi-system module, and adding new configurations, linters, tests, and publications on different registers. It does not contain code that you might find useful in your application, unless you are looking f
Author: Adam Gąsowski
Latest version: 0.10.11

# playground

This package was created only to test creating a multi-system module, and adding new configurations, linters, tests,
and publications on different registers. It does not contain code that you might find useful in your application, unless
you are looking for code that was created by making and solving mistakes, please learn from my git history.

```shell
bun install
bun run test
```

## Documentation

- **[CLAUDE.md](./CLAUDE.md)** - Project overview, tech stack, and development workflow
- **[RELEASE_PLEASE_MAINTAINER_GUIDE.md](./RELEASE_PLEASE_MAINTAINER_GUIDE.md)** - Release management workflow for maintainers
- **[.github/MERGE_COMMIT_SETUP.md](.github/MERGE_COMMIT_SETUP.md)** - Fix Release Please merge commit parsing errors

## For Maintainers

This project uses Release Please for automated releases. See the [Maintainer Guide](./RELEASE_PLEASE_MAINTAINER_GUIDE.md) for:
- Daily workflow with conventional commits
- How to manage Release PRs
- Version control strategies
- Troubleshooting common issues

**⚠️ Important Setup:** Configure GitHub merge settings to avoid Release Please parsing errors. See [MERGE_COMMIT_SETUP.md](.github/MERGE_COMMIT_SETUP.md).
npm package: @gander/playground
Description: To install dependencies:
Author: gander
Latest version: 0.11.2

# playground

This package was created only to test creating a multi-system module, and adding new configurations, linters, tests,
and publications on different registers. It does not contain code that you might find useful in your application, unless
you are looking for code that was created by making and solving mistakes, please learn from my git history.

```shell
bun install
bun run release
```