open-index/open-npm huggingface dataset:
npm package: @roboplay/plugin-ai-voice
Description: Welcome to _@roboplay/plugin-ai-voice_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatic
Author: WavePlay
Latest version: 0.1.1

# 🚀 @roboplay/plugin-ai-voice

Welcome to _@roboplay/plugin-ai-voice_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatically works once you install this plugin!

👩‍💻 Are you the plugin developer? Check out the **[Development Guide](DEVELOPMENT.md)** for instructions on how to develop, build, and publish this plugin.

## Installation 💻

To install this plugin, navigate to your existing Robo project's directory and run the following command:

```bash
npx robo add @roboplay/plugin-ai-voice
```

That's it! Your Robo now has access to the additional features provided by this plugin. The plugin's commands and events are automatically linked, and if your Robo requires any additional bot permissions, they will be inherited when running `npx robo invite` to generate an invite link.

Enjoy your enhanced Robo! 🚀

> **Don't have a Robo project?** [Create your own!](https://docs.roboplay.dev/docs/getting-started)
npm package: @roboplay/plugin-better-stack
Description: Welcome to _@roboplay/plugin-better-stack_! This plugin seamlessly integrates with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project, providing a comprehensive link to Better Stack, a renowned third-party service. With Better Stack, m
Author: WavePlay
Latest version: 0.1.0

# 🚀 @roboplay/plugin-better-stack

Welcome to _@roboplay/plugin-better-stack_! This plugin seamlessly integrates with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project, providing a comprehensive link to Better Stack, a renowned third-party service. With Better Stack, monitor your Robo's uptime and integrate logs in a visually appealing and searchable format.

## Prerequisites

Before integrating this plugin, ensure you've signed up for an account on [Better Stack](https://betterstack.com).

## Installation 💻

To install this plugin, navigate to your existing Robo project's directory and run the following command:

```bash
npx robo add @roboplay/plugin-better-stack
```

Once installed, the plugin enhances your Robo with Better Stack's capabilities.

## Heartbeat Monitoring Setup

To initiate heartbeat monitoring:

1. Log into your Better Stack account.
2. Create a new heartbeat, preferably naming it after your Robo.
3. Copy the generated URL.
4. Paste the URL into the plugin's config file: `/config/plugins/roboplay/plugin-better-stack.mjs`

```js
export default {
	heartbeat: {
		url: 'https://uptime.betterstack.com/api/v1/heartbeat/8XMvMa5y7xtONEtUfj2yb8f'
	}
}
```

### Optional Configurations:

- `interval`: Set the frequency of requests to the heartbeat URL in milliseconds. Defaults to 5000ms (5 seconds).
- `debug`: Control debug logging for the heartbeat. While it's set to false by default to prevent spam, turning it on ensures correct heartbeat setup.

## Log Integration

Firstly, set up your source in Better Stack to receive a unique `sourceToken`.

**Method 1: Using Config File**

In the plugin config file, pass your `sourceToken`:

```js
export default {
	sourceToken: 'YOUR_UNIQUE_SOURCE_TOKEN'
}
```

**Method 2: Using Environment Variable**

Use an environment variable in your `.env` file:

```
BETTER_STACK_SOURCE_TOKEN="YOUR_UNIQUE_SOURCE_TOKEN"
```

**Method 3: Direct Drain Creation**

Create a drain directly within the primary config file, `robo.mjs`. This method captures logs early, ensuring comprehensive log coverage.

```js
// @ts-check
import { createLogtailDrain } from '@roboplay/plugin-better-stack'

/**
 * @type {import('@roboplay/robo.js').Config}
 **/
export default {
	// ... other configurations
	logger: {
		drain: createLogtailDrain(process.env.LOGTAIL_TOKEN)
	}
}
```

> **Yet to embark on a Robo.js journey?** [Kickstart your Robo project!](https://docs.roboplay.dev/docs/getting-started)

Harness the synergy of Robo.js and Better Stack for an enhanced bot experience! 🚀
npm package: @roboplay/plugin-confessions
Description: 💁‍♀️ Robo.js plugin for Confessions!
Author: Arnav Kaushal
Latest version: 0.1.0

# 🚀 @roboplay/plugin-confessions

Welcome to `@roboplay/plugin-confessions`. This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatically works once you install this plugin!

👩‍💻 Are you the plugin developer? Check out the **[Development Guide](DEVELOPMENT.md)** for instructions on how to develop, build, and publish this plugin.

## Installation 💻

To install this plugin, navigate to your existing Robo project's directory and run the following command:

```bash
npx robo add @roboplay/plugin-confessions
```

# 🤫 Confessions Plugin

This plugin allows users to make anonymous confessions in your Discord server.

## 🎲 Plugin Commands

- `/confess [confession]` - Make an anonymous confession. The confession will be filtered for SFW content & URLs before posting.

- `/confession-channel [channel]` - Set the channel where confessions will be posted. Only admins can use this command.

> **The plugin handles everything else automatically! Confessions will be posted to the configured channel anonymously.**

## 🌟 Features

- [x] **Auto Filters NSFW Content**: Implement intelligent filters that automatically detect and remove or flag not-safe-for-work (NSFW) content, ensuring a safe and clean environment for all users.
- [x] **Censor Swears & Abuses in Confessions**: Employ profanity filters to discreetly mask or block offensive language and abusive content in user confessions, maintaining a respectful and positive user experience.
- [x] **Simple and Fast!**: Create an intuitive and responsive platform that is easy to use, ensuring a hassle-free experience for users without unnecessary complexity or delays.
- [x] **Sage Responses**: Sage is all about smoothing out the rough edges, doing the heavy lifting, and leaving you with the fun stuff. It's your backstage crew, your invisible helping hand, your automatic pilot. You lead the way, and Sage is there to back you up.
- [x] **Fully Anonymous Confessions**: Guarantee complete anonymity for users sharing their confessions, ensuring that no personal information is revealed and privacy is upheld.

---

That's it! Your Robo now has access to the additional features provided by this plugin. The plugin's commands and events are automatically linked, and if your Robo requires any additional bot permissions, they will be inherited when running `npx robo invite` to generate an invite link.

Enjoy your enhanced Robo! 🚀

> **Don't have a Robo project?** [Create your own!](https://docs.roboplay.dev/docs/getting-started)
npm package: @roboplay/plugin-gpt
Description: Chat commands powered by OpenAI's GPT
Author: WavePlay
Latest version: 1.1.3

# 🚀 @roboplay/plugin-gpt

Welcome to _@roboplay/plugin-gpt_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatically works once you install this plugin!

👩‍💻 Are you the plugin developer? Check out the **[Development Guide](DEVELOPMENT.md)** for instructions on how to develop, build, and publish this plugin.

## Installation 💻

To install this plugin, navigate to your Robo project's directory and run the following command:

```bash
npm install @roboplay/plugin-gpt
```

Next, add the plugin to your Robo's configuration file, typically located at `.config/robo.mjs`. Add the following lines:

```javascript
/**
 * @type {import('@roboplay/robo.js').Plugin}
 **/
const roboplayPluginGpt = [
	'@roboplay/plugin-gpt',
	{
		// ... optional customization options
	}
]

/**
 * @type {import('@roboplay/robo.js').Config}
 **/
export default {
	// ... rest of your configuration
	plugins: [roboplayPluginGpt]
}
```

That's it! Your Robo now has access to the additional features provided by this plugin. The plugin's commands and events are automatically linked, and if your Robo requires any additional bot permissions, they will be inherited when running `robo invite` to generate an invite link.

Enjoy your enhanced Robo! 🚀
npm package: @roboplay/plugin-maintenance
Description: Welcome to _@roboplay/plugin-maintenance_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automa
Author: WavePlay
Latest version: 0.2.0

# 🚀 @roboplay/plugin-maintenance

Welcome to _@roboplay/plugin-maintenance_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatically works once you install this plugin!

👩‍💻 Are you the plugin developer? Check out the **[Development Guide](DEVELOPMENT.md)** for instructions on how to develop, build, and publish this plugin.

## Installation 💻

To install this plugin, navigate to your Robo project's directory and run the following command:

```bash
npm install @roboplay/plugin-maintenance
```

Next, add the plugin to your Robo's configuration file, typically located at `.config/robo.mjs`. Add the following lines:

```javascript
/**
 * @type {import('@roboplay/robo.js').Plugin}
 **/
const roboplayPluginMaintenance = [
	'@roboplay/plugin-maintenance',
	{
		// ... optional customization options
	}
]

/**
 * @type {import('@roboplay/robo.js').Config}
 **/
export default {
	// ... rest of your configuration
	plugins: [roboplayPluginMaintenance]
}
```

That's it! Your Robo now has access to the additional features provided by this plugin. The plugin's commands and events are automatically linked, and if your Robo requires any additional bot permissions, they will be inherited when running `robo invite` to generate an invite link.

Enjoy your enhanced Robo! 🚀
npm package: @roboplay/plugin-poll
Description: Poll command made easy with Robo.js
Author: WavePlay
Latest version: 0.1.2

# 🚀 @roboplay/plugin-poll

Welcome to _@roboplay/plugin-poll_! This plugin is designed to seamlessly integrate with your existing **[Robo.js](https://github.com/Wave-Play/robo)** project and provide new features and enhancements to your robo. The best part? Everything automatically works once you install this plugin!

👩‍💻 Are you the plugin developer? Check out the **[Development Guide](DEVELOPMENT.md)** for instructions on how to develop, build, and publish this plugin.

## Installation 💻

To install this plugin, navigate to your Robo project's directory and run the following command:

```bash
npm install @roboplay/plugin-poll
```

Next, add the plugin to your Robo's configuration file, typically located at `.config/robo.mjs`. Add the following lines:

```javascript
/**
 * @type {import('@roboplay/robo.js').Plugin}
 **/
const roboplayPluginPoll = [
	'@roboplay/plugin-poll',
	{
		// ... optional customization options
	}
]

/**
 * @type {import('@roboplay/robo.js').Config}
 **/
export default {
	// ... rest of your configuration
	plugins: [roboplayPluginPoll]
}
```

That's it! Your Robo now has access to the additional features provided by this plugin. The plugin's commands and events are automatically linked, and if your Robo requires any additional bot permissions, they will be inherited when running `robo invite` to generate an invite link.

Enjoy your enhanced Robo! 🚀
npm package: @roboqo/umi-rpc-web3js
Description: An RPC implementation relying on Solana's web3.js
Author: Metaplex Maintainers
Latest version: 1.0.0

# umi-rpc-web3js

An RPC implementation relying on Solana's web3.js.

## Installation

```sh
npm install @metaplex-foundation/umi-rpc-web3js
```
npm package: @roborox/appmetrica
Description: Yandex AppMetrica wrap module
Author: Mikhaylov Anton
Latest version: 0.4.0

# @roborox/appmetrica

Yandex AppMetrica wrap module

## Installation

```sh
npm install @roborox/appmetrica
```

## Usage

```js
import Appmetrica from "@roborox/appmetrica";

// ...

const result = await Appmetrica.multiply(3, 7);
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT
npm package: @roborox/react-native-fb-applink
Description: Fetched deferred deep links
Author: roborox.org
Latest version: 1.2.4

# React-native-fb-applink
***WARNING: IOS ONLY***

This native module can fetch facebook's deferred deep links using FBSDK.

## Getting started

1. Install package `npm install @roborox/react-native-fb-applink -SE`

2. Add `pod "FBSDKCoreKit", "6.2.0"` to your Podfile

3. Perform `pod update` inside ios folder


### Mostly automatic installation

`$ react-native link @roborox/react-native-fb-applink`

## Usage
```javascript
import FBAppLink  from '@roborox/react-native-fb-applink';

async function getDeepLink() {
	try {
		return await NativeModules.FBAppLink.fetch()
	} catch (error) {
		console.error("FBAppLink", error)
		return null
	}
}

```
npm package: @roborox/react-native-iad
Description: Fetch apple ads attribution
Author: roborox.org
Latest version: 1.0.0

# react-native-iad
***WARNING: IOS ONLY***

This native module can fetch Apple's ads attribution

More info about Apple Search Ads: https://developer.apple.com/documentation/iad/setting_up_apple_search_ads_attribution/

## Getting started

### Step 1
1. Install package `npm install @roborox/react-native-iad -SE`

### Step 2

1. In XCode, [follow the instructions](https://searchads.apple.com/v/advanced/help/pdf/attribution-api.pdf) in Step 1 to add the iAd framework
1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `react-native-apple-ads-attribution` and add `RNAppleAdsAttribution.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libRNAppleAdsAttribution.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
4. Run your project

## Usage
```javascript
import RNIAp from '@roborox/react-native-iap';

const attributionData = await RNIAp.getAttributionData();
```

*With typescript support*

## More

- Idea: https://raw.githubusercontent.com/kenmaca/react-native-apple-ads-attribution
npm package: @roborox/sketch
Description: Sketch view
Author: Mikhaylov Anton
Latest version: 0.1.1

# @roborox/sketch

Sketch view

## Installation

```sh
npm install @roborox/sketch
```

## Usage

```js
import Sketch from "@roborox/sketch";

// ...

const result = await Sketch.multiply(3, 7);
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT
npm package: @roboshoes/bezier
Description: Canvas context bezier curve with multiple anchors. Uses repeated quadrativeCurveTo.
Author: Mathias Paumgarten
Latest version: 0.3.2

# bezierTo

> Draws bezier curves with arbitrary anchor points.

Utility function that allows to draw bezier curves with arbitrary anchor points using consecutive
quadratic curves.

This utility does not plot. It simply draws the lines using the canvas context. Calls to `.stroke()` or
`.fill()` are necessary.

### Example

```ts
import { bezierTo } from "@roboshoes/bezier";

context.moveTo( 10, 10 );

bezierTo( context, [
    { x: 30, y: 30 },
    { x: 100, y: 200 },
    { x: 23, y: 56 },
    { x: 1344, y: 57 },
] );

context.stroke();
```
npm package: @roboshoes/eslint-config
Description: Opinionated eslint settings for typescript.
Author: Mathias Paumgarten
Latest version: 2.2.0

# Personal Eslint Config

Install via

```sh
npm install --save-dev
    @roboshoes/eslint-config
    @typescript-eslint/eslint-plugin@^3.1.0
    eslint@~7.1.0
```

Define your `.eslintrc.js` as the following:

```js
module.exports = {
    "env": {
        "browser": true,
        "es6": true
    },
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        ecmaVersion:  2018,
        ecmaFeatures: { modules: true },
        sourceType: "module",
        project: "./tsconfig.json",
    },
    "extends": ["@roboshoes/eslint-config"],
    "rules": {},
};
```


It has some peerDependencies such as:

```json
{
    "@typescript-eslint/eslint-plugin": "^3.1.0",
    "eslint": "^7.1.0",
}
```

This setup represents my personal setup for eslint including tslint settings. A basic example of
the formatting it enforces can be seen below:

```ts
import { bootstrap, draw, getCanvas, getContext, options } from "canvas-recorder";
import { Vector2 } from "three";

options( {
    record: false,
    frames: 1,
} );

type Point3D = [ number, number, number ];
type Point2D = [ number, number ];

const context = getContext();
const canvas = getCanvas();

class Control {
    private _point = new Vector2();
    get point(): Vector2 {
        return this._point.lerpVectors( this.a, this.b, 0.5 );
    }

    constructor( public readonly a: Vector2, public readonly b: Vector2 ) {}
}

const circle: Control[] = [
    new Control( new Vector2( -100, -100 ), new Vector2( 100, -100 ) ),
    new Control( new Vector2( 100, -100 ), new Vector2( 100, 100 ) ),
    new Control( new Vector2( 100, 100 ), new Vector2( -100, 100 ) ),
    new Control( new Vector2( -100, 100 ), new Vector2( -100, -100 ) ),
];

function drawControlPoints( controls: Control[] ): void {
    context.beginPath();

    for ( let i = 0; i < controls.length; i++ ) {
        if ( i === 0 ) {
            const from: Vector2 = controls[ i ].point;
            context.moveTo( from.x, from.y );
        }

        const ii: number = ( i + 1 ) % controls.length;
        const to: Vector2 = controls[ ii ].point;

        const anchorFrom: Vector2 = controls[ i ].b;
        const anchorTo: Vector2 = controls[ ii ].a;

        context.bezierCurveTo( anchorFrom.x, anchorFrom.y, anchorTo.x, anchorTo.y, to.x, to.y );
    }

    context.stroke();
}


draw( () => {
    // Has to be done every frame as the current implementation of canvas-recorder (1.8.0) does
    // not include the state of the transform.
    canvas.width = canvas.width;
    context.strokeStyle = "black";
    context.lineWidth = 1;
    context.translate( 512, 512 );

    drawControlPoints( circle );
} );

bootstrap( { clear: true } );
```
npm package: @roboshoes/router
Description: A simple routing system based on rxjs events. Unrelated to Dom.
Author: Mathias Paumgarten
Latest version: 0.3.2

# Router

> A tiny DOM-unrelated router. Based on rxjs. Ships with Typescript types.

### Installation

Add to the project via

```sh
npm install --save-dev @roboshoes/router
```

### Setup

To set it up make sure to call `initRouter()` at some point during bootstrapping your project.
During this same proecss make sure to add all forwarding rules early in the project, to make sure
the initial call includes all forwarding rules.

```ts
import { initRouter } from "@roboshoes/router";


setForward( "/", "/home" );
setForward( "/description", "/about" );

initRouter();
```

### Usage

The most common way to use it is setting up a regex based router callback that turns on and off
based on whether the active route applies.

```ts
import { observeRoute } from "@roboshoes/router";

observeRoute( /\/home/, ( isOn: boolean ) => {

    document.querySelector( ".home" ).style.display = isOn ? "block" : "none";

} );
```

Alternativly one can simply listen to all route changes. A listener can be accessed via `onRouteChange()`
which returns a observable with the previous and new route as tuple.

To set routes use `setRoute` instead of a directly setting the url in the browser history.

```ts
import { setRoute } from "@roboshoes/router";

setRoute( "/home" );
```

### Methods

- `onRouteChange(): Observable<[string, string]>`
- `observeRoute(value: RegExp): Observable<boolean>`
- `onRoute(value: string): Observable<string>`
- `setRoute(value: string): void`
- `getRoute(): string`
- `setForward(from: string, to: string): void`
- `initRouter(): void`
npm package: @roboshoes/shader-pass
Description: A shader-pass tool base on Three.
Author: Mathias Paumgarten
Latest version: 0.3.2

# Shader Pass

> Utility class to run a shader-pass using Three.

### Install

```sh
npm install --save-dev @roboshoes/shader-pass three
```

This class helps you run a shader-pass using ThreeJS provided a framgment shader. The implementation
uses Three subclasses and therefore requieres `three` as a peer dependency.

On a very top level: A shaderpass can be used to calculate millions of variables simultaniously by
treating a bitmap as a matrix of varaibles. The pass therefore is implemented as a shader programm
functioning on every pixel of the bitmap. The input is given through various uniform types and the
output is a texture itself.


### Example

```ts
import { ShaderPass } from "@roboshoes/shader-pass";

// renderer: THREE Render instance

const shader = "...";
const size = 1024;

const positionPass = new ShaderPass( {
    renderer: renderer,
    shader,
    name: "positionTexture",
    size,
    startValue: generateRandomPosition( size ),
    uniforms: {
        ...otherUniforms,
        velocityTexture: createTexture( size, size, 0 ),
        delta: 0.016,
    },
} );
```
npm package: @robosme-crm/rn-dropdown
Description: Robosme CRM React Native Dropdown
Author: Yigit A.
Latest version: 1.0.7

# robosme-crm-rn-dropdown
This library is written to meet the needs of the Robosme company. It is not recommended for use in different projects. For more information [Robosme Documents](https://robosme.com)

## Getting started
```js
npm install robosme-crm-rn-dropdown --save
```
or

```js
yarn add robosme-crm-rn-dropdown
```