open-index/open-npm huggingface dataset:
npm package: @simplefocus/prettier-config
Description: Simple Focus base prettier configuration.
Author: Simple Focus
Latest version: 1.0.3

# `@simplefocus/prettier-config`

> Simple Focus base prettier configuration.


## Usage

__Install:__

```bash
$ yarn add --dev @simplefocus/prettier-config
```

__Create `prettier.config.js`:__

```js
module.exports = require('@simplefocus/prettier-config')
```

__Extending/overwriting__

> Note: In most cases this shouldn't be necessary.

```js
module.exports = {
  ...require('@simplefocus/prettier-config'),
  tabWidth: 2,
}
```


## Publishing to npm

Read npm's docs on [How to Update a Package](https://docs.npmjs.com/getting-started/publishing-npm-packages#how-to-update-a-package).

1. Checkout and pull the `main` branch.

2. Run the release script to bump the version numbers (the script will create a commit and push up the release branch to GitHub for you).

    ```shell
    sh ./scripts/release
    ```

    Use [semantic versioning](https://docs.npmjs.com/about-semantic-versioning/) to choose the appropriate version number.

3. Submit and merge a PR from the release branch into `main`.

4. Make sure you're logged into npm from the command line using `npm whoami`. If you're not logged in, `npm login`.

5. `npm publish`


## Additional Plugins

### Tailwind

- https://github.com/Acidic9/prettier-plugin-tailwind

### Twig

- https://github.com/trivago/prettier-plugin-twig-melody
- https://github.com/mubaraqwahab/prettier-plugin-twig-enhancements
npm package: @simplehealth/filterql
Description: The FilterQL mini-language.
Author: SimpleHealth team
Latest version: 0.7.4

[![npm](https://img.shields.io/npm/v/@simplehealth/filterql.svg)](https://www.npmjs.com/package/@simplehealth/filterql)
[![Build Status](https://github.com/SimpleContacts/filterql/workflows/test/badge.svg)](https://github.com/SimpleContacts/filterql/actions)

The FilterQL mini-language.

# Installation

    $ npm install @simplehealth/filterql

# Usage

```js
import { Q } from '@simplehealth/filterql';

const q = new Q('status:OPEN sort:modified-asc');
q.has('status:OPEN'); // => true
q.replace('status:ISSUE').toString(); // => 'status:ISSUE sort:modified-asc'
```

# API

TODO: Document this.
npm package: @simplehealth/mysql-simulator
Description: This MySQL simulator offers a super easy API that, at the highest level, looks like:
Latest version: 1.9.3

[![Build Status](https://github.com/SimpleContacts/mysql-simulator/workflows/test/badge.svg)](https://github.com/SimpleContacts/mysql-simulator/actions)

# Usage

This MySQL simulator offers a super easy API that, at the highest level, looks
like:

```javascript
import simulate from '@simplehealth/mysql-simulator';

const db = simulate('./path/to/migrations');
```

The resulting DB instance is an in-memory representation of the final DB state
after applying all the SQL migrations in order, exactly as it would be in
MySQL. The DB object can now conveniently be introspected, for example:

```javascript
for (const table of db.getTables()) {
  console.log(`- ${table.name}`);
}

const users = db.getTable('users');
console.log(users.getColumn('email').getTypeInfo().baseType); // varchar
console.log(users.getColumn('email').getTypeInfo().nullable); // true
console.log(users.getColumn('email').toString()); // `email` varchar(254) DEFAULT NULL

// Or just print out the whole table definition, conveniently
console.log(users.toString());
// CREATE TABLE `users` (
//   `id` int(11) NOT NULL AUTO_INCREMENT,
//   `partner_id` tinyint(3) unsigned NOT NULL,
//   `external_id` varchar(32) NOT NULL,
//   `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
//   `name` varchar(128) DEFAULT NULL,
//   `email` varchar(254) DEFAULT NULL,
//   ...
```

These objects are fully Flow-typed.

# Usage from the command line

There's a command line interface that might help you if you simply want to
apply some migrations and output the resulting table definitions:

    $ bin/mysql-simulate <path>

This assumes a directory of `*.sql` files containing SQL statements, which are
numbered sequentially, for example: `0001-create-table.sql`,
`0002-change-field.sql`, etc.

To run it on all `*.sql` migration files in a directory:

    $ bin/mysql-simulate path/to/migrations

This will simulate running the migrations found in that directory sequentially.
At the end, the DB's state is outputted as a single SQL table definition dump.

# For developers

### Regenerating the parser

After changing the grammar file (`src/parser/mysql.pegjs`), you need to
recompile the parser:

    $ yarn build:parser

### Running the test suite

The test suite for this project is a little bit different from "normal"
JavaScript project tests. It's invoked by

    $ yarn test

And will basically do the following for all test files found in `tests/*.sql`:

1. Run test files against a real, running, MySQL database. Output to
   `tests/real/*.sql`.
1. Run test files against the simulator. Output to `tests/simulated/*.sql`.
1. Diff the results. No diff means test suite passes.

This setup offers the level of confidence that the simulator is actually
working as expected, and at the same time makes it really easy to add specific
test cases later on: simply add a new `*.sql` file!
npm package: @simplehook/core
Description: Core WebSocket client for simplehook SDKs.
Latest version: 0.2.0

# @simplehook/core

Internal shared package for simplehook JavaScript SDKs.

> Part of the [simplehook](https://simplehook.dev) ecosystem.

## What this is

This package contains the WebSocket client, frame serialization, and shared utilities used by the framework-specific SDKs:

- [`@simplehook/express`](https://www.npmjs.com/package/@simplehook/express) -- Express adapter
- [`@simplehook/fastify`](https://www.npmjs.com/package/@simplehook/fastify) -- Fastify adapter

You should not need to install this package directly. Use one of the framework SDKs above instead.

## Links

- [Documentation](https://www.simplehook.dev/docs)
- [Dashboard](https://www.simplehook.dev/dashboard)

## License

MIT
npm package: @simplehook/express
Description: Stable webhook URLs for localhost. One line of code. Express adapter.
Latest version: 0.3.1

# simplehook / @simplehook/express

**One line of code. Webhooks just work.**

Stop tunneling. Stop polling. Stop using ngrok. One line of code to solve webhooks. Add one SDK call and your local app receives real webhooks from Stripe, GitHub, Twilio — any provider.

```typescript
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);
```

Your app opens an outbound WebSocket to [simplehook.dev](https://simplehook.dev). When a webhook arrives at your stable URL, it's forwarded through the connection to your local server. Your response goes back to the caller. No CLI. No tunnel process. No URL that changes every session.

## Why simplehook?

- **No CLI** — just `npm install` and one function call
- **Permanent URLs** — set once in Stripe/GitHub, never change them
- **Real responses** — passthrough mode returns your actual response to the caller (TwiML, verification, etc.)
- **Queue + retry** — if your app is offline, events queue and deliver when you reconnect
- **Dev mode by default** — only connects in development, never in production

## Install

```bash
npm install @simplehook/express
```

## Quick start

```typescript
import express from "express";
import { listenToWebhooks } from "@simplehook/express";

const app = express();
app.use(express.json());

listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);

app.post("/stripe/events", (req, res) => {
  console.log("Webhook received!", req.body);
  res.json({ received: true });
});

app.listen(3000);
```

## Options

```typescript
listenToWebhooks(app, apiKey, {
  forceEnable: false,     // Connect even in production
  serverUrl: "...",       // Override server URL
  onConnect: () => {},    // Called when connected
  onDisconnect: () => {}, // Called when disconnected
  silent: false,          // Suppress console output
});
```

## Agents

Use agents to run multiple SDK instances and route events to specific ones. Create agents in the dashboard, then assign them to routes.

```typescript
// This instance only receives events from routes assigned to "staging"
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY, "staging");
```

Your webhook URL stays the same — event routing is configured in the dashboard, not the URL.

## Dev mode

By default, simplehook only connects in development. Set `SIMPLEHOOK_ENABLED=false` to disable, or `forceEnable: true` to force.

Production is detected when `NODE_ENV === "production"`.

## Links

- [GitHub](https://github.com/bnbarak/antiwebhook)

- [Documentation](https://www.simplehook.dev/docs)
- [Dashboard](https://www.simplehook.dev/dashboard)

## License

MIT
npm package: @simplehook/fastify
Description: Stable webhook URLs for localhost. One line of code. Fastify adapter.
Latest version: 0.3.0

# simplehook / @simplehook/fastify

**One line of code. Webhooks just work.**

Stop tunneling. Stop polling. Stop using ngrok. One line of code to solve webhooks. Add one SDK call and your local app receives real webhooks from Stripe, GitHub, Twilio — any provider.

```typescript
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);
```

Your app opens an outbound WebSocket to [simplehook.dev](https://simplehook.dev). When a webhook arrives at your stable URL, it's forwarded through the connection to your local server. Your response goes back to the caller. No CLI. No tunnel process. No URL that changes every session.

## Why simplehook?

- **No CLI** — just `npm install` and one function call
- **Permanent URLs** — set once in Stripe/GitHub, never change them
- **Real responses** — passthrough mode returns your actual response to the caller (TwiML, verification, etc.)
- **Queue + retry** — if your app is offline, events queue and deliver when you reconnect
- **Dev mode by default** — only connects in development, never in production

## Install

```bash
npm install @simplehook/fastify
```

## Quick start

```typescript
import Fastify from "fastify";
import { listenToWebhooks } from "@simplehook/fastify";

const app = Fastify();

listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);

app.post("/stripe/events", async (request, reply) => {
  console.log("Webhook received!", request.body);
  return { received: true };
});

app.listen({ port: 3000 });
```

## Options

```typescript
listenToWebhooks(app, apiKey, {
  forceEnable: false,     // Connect even in production
  serverUrl: "...",       // Override server URL
  onConnect: () => {},    // Called when connected
  onDisconnect: () => {}, // Called when disconnected
  silent: false,          // Suppress console output
});
```

## Agents

Use agents to run multiple SDK instances and route events to specific ones. Create agents in the dashboard, then assign them to routes.

```typescript
// This instance only receives events from routes assigned to "staging"
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY, "staging");
```

Your webhook URL stays the same — event routing is configured in the dashboard, not the URL.

## Dev mode

By default, simplehook only connects in development. Set `SIMPLEHOOK_ENABLED=false` to disable, or `forceEnable: true` to force.

Production is detected when `NODE_ENV === "production"`.

## Links

- [GitHub](https://github.com/bnbarak/antiwebhook)

- [Documentation](https://www.simplehook.dev/docs)
- [Dashboard](https://www.simplehook.dev/dashboard)

## License

MIT
npm package: @simplehook/hono
Description: Stable webhook URLs for localhost. One line of code. Hono adapter.
Latest version: 0.3.0

# simplehook / @simplehook/hono

**One line of code. Webhooks just work.**

Stop tunneling. Stop polling. Stop using ngrok. One line of code to solve webhooks. Add one SDK call and your local app receives real webhooks from Stripe, GitHub, Twilio — any provider.

```typescript
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);
```

Your app opens an outbound WebSocket to [simplehook.dev](https://simplehook.dev). When a webhook arrives at your stable URL, it's forwarded through the connection to your local server. Your response goes back to the caller. No CLI. No tunnel process. No URL that changes every session.

## Why simplehook?

- **No CLI** — just `npm install` and one function call
- **Permanent URLs** — set once in Stripe/GitHub, never change them
- **Real responses** — passthrough mode returns your actual response to the caller (TwiML, verification, etc.)
- **Queue + retry** — if your app is offline, events queue and deliver when you reconnect
- **Dev mode by default** — only connects in development, never in production

## Install

```bash
npm install @simplehook/hono
```

## Quick start

```typescript
import { Hono } from "hono";
import { listenToWebhooks } from "@simplehook/hono";

const app = new Hono();

listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);

app.post("/stripe/events", async (c) => {
  const body = await c.req.json();
  console.log("Webhook received!", body);
  return c.json({ received: true });
});

export default app;
```

## Options

```typescript
listenToWebhooks(app, apiKey, {
  forceEnable: false,     // Connect even in production
  serverUrl: "...",       // Override server URL
  onConnect: () => {},    // Called when connected
  onDisconnect: () => {}, // Called when disconnected
  silent: false,          // Suppress console output
});
```

## Agents

Use agents to run multiple SDK instances and route events to specific ones. Create agents in the dashboard, then assign them to routes.

```typescript
// This instance only receives events from routes assigned to "staging"
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY, "staging");
```

Your webhook URL stays the same — event routing is configured in the dashboard, not the URL.

## Dev mode

By default, simplehook only connects in development. Set `SIMPLEHOOK_ENABLED=false` to disable, or `forceEnable: true` to force.

Production is detected when `NODE_ENV === "production"`.

## Links

- [GitHub](https://github.com/bnbarak/antiwebhook)

- [Documentation](https://www.simplehook.dev/docs)
- [Dashboard](https://www.simplehook.dev/dashboard)

## License

MIT
npm package: @simplei18n/parser
Description: Yet another simple, minimal i18n library
Author: Khinenw
Latest version: 0.0.2

# simplei18n
> Yet another simple, minimal i18n library

## Usage
### Bundler
You should add the `simplei18n` plugin in your bundler.

```ts
/* vite.config.js */
import simplei18n from '@simplei18n/vite-plugin';

export default {
	// ...some other configs
	plugins: [
		// ...other plugins
		simplei18n()
	]
};
```

It will transpile your `.i18n.yml` files into the simplei18n format.

### Translation
Then, you can start write your translation files.
The translation files should end with `.i18n.yml`

```yaml
// Component.i18n.yml
en:
  someName: >
    You can use {interpolation} and <tagname>tags, or <tag2>nested tags (+ {interpolation2})</tag2></tagname>.
  pluralization:
    singular: 'AAA',
    plural: 'AAAs',

ko:
  someName: >
    {interpolation}과 <tagname>태그, 또는 <tag2>겹쳐진 태그 (+ {interpolation2})</tag2></tagname>를 사용하실 수 있습니다.
  pluralization: 'AAA'
```

### React
Once you have set up your bundler, you can use the simplei18n.

```tsx
import { I18nContext, useI18n } from '@simplei18n/react';
import GlobalI18n from './Global.i18n.yml';
import MyComponentI18n from './MyComponent.i18n.yml';

const TagComponent = ({ children: ReactNode }): JSX.Element => {
	<span className="tag">{ children }</span>
};

const MyComponent = (): JSX.Element => {
	const { t } = useI18n(MyComponentI18n);
	return (
		<span>
			{
				t('someName', {
					interpolation: 'Interpolation',
					interpolation2: 'Interp',
					tagname: TagComponent,
					tag2: TagComponent
				})
			}

			{
				t('pluralization', { $count: 2 })
			}
		</span>
	);
};

const MyComponentWithGlobalI18n = (): JSX.Element => {
	const { t } = useI18n();
	return (
		<span> { t('someNamespace.MyComponent:aaa') } </span>
	)
};

render(
	<I18nContext value={{ lang: 'ko', i18n: GlobalI18n }}>
		<MyComponent />
		<MyComponentWithGlobalI18n />
	</I18nContext>
);
```
npm package: @simplei18n/react
Description: Yet another simple, minimal i18n library
Author: Khinenw
Latest version: 0.0.2

# simplei18n
> Yet another simple, minimal i18n library

## Usage
### Bundler
You should add the `simplei18n` plugin in your bundler.

```ts
/* vite.config.js */
import simplei18n from '@simplei18n/vite-plugin';

export default {
	// ...some other configs
	plugins: [
		// ...other plugins
		simplei18n()
	]
};
```

It will transpile your `.i18n.yml` files into the simplei18n format.

### Translation
Then, you can start write your translation files.
The translation files should end with `.i18n.yml`

```yaml
// Component.i18n.yml
en:
  someName: >
    You can use {interpolation} and <tagname>tags, or <tag2>nested tags (+ {interpolation2})</tag2></tagname>.
  pluralization:
    singular: 'AAA',
    plural: 'AAAs',

ko:
  someName: >
    {interpolation}과 <tagname>태그, 또는 <tag2>겹쳐진 태그 (+ {interpolation2})</tag2></tagname>를 사용하실 수 있습니다.
  pluralization: 'AAA'
```

### React
Once you have set up your bundler, you can use the simplei18n.

```tsx
import { I18nContext, useI18n } from '@simplei18n/react';
import GlobalI18n from './Global.i18n.yml';
import MyComponentI18n from './MyComponent.i18n.yml';

const TagComponent = ({ children: ReactNode }): JSX.Element => {
	<span className="tag">{ children }</span>
};

const MyComponent = (): JSX.Element => {
	const { t } = useI18n(MyComponentI18n);
	return (
		<span>
			{
				t('someName', {
					interpolation: 'Interpolation',
					interpolation2: 'Interp',
					tagname: TagComponent,
					tag2: TagComponent
				})
			}

			{
				t('pluralization', { $count: 2 })
			}
		</span>
	);
};

const MyComponentWithGlobalI18n = (): JSX.Element => {
	const { t } = useI18n();
	return (
		<span> { t('someNamespace.MyComponent:aaa') } </span>
	)
};

render(
	<I18nContext value={{ lang: 'ko', i18n: GlobalI18n }}>
		<MyComponent />
		<MyComponentWithGlobalI18n />
	</I18nContext>
);
```
npm package: @simplei18n/vite-plugin
Description: Yet another simple, minimal i18n library
Author: Khinenw
Latest version: 0.0.2

# simplei18n
> Yet another simple, minimal i18n library

## Usage
### Bundler
You should add the `simplei18n` plugin in your bundler.

```ts
/* vite.config.js */
import simplei18n from '@simplei18n/vite-plugin';

export default {
	// ...some other configs
	plugins: [
		// ...other plugins
		simplei18n()
	]
};
```

It will transpile your `.i18n.yml` files into the simplei18n format.

### Translation
Then, you can start write your translation files.
The translation files should end with `.i18n.yml`

```yaml
// Component.i18n.yml
en:
  someName: >
    You can use {interpolation} and <tagname>tags, or <tag2>nested tags (+ {interpolation2})</tag2></tagname>.
  pluralization:
    singular: 'AAA',
    plural: 'AAAs',

ko:
  someName: >
    {interpolation}과 <tagname>태그, 또는 <tag2>겹쳐진 태그 (+ {interpolation2})</tag2></tagname>를 사용하실 수 있습니다.
  pluralization: 'AAA'
```

### React
Once you have set up your bundler, you can use the simplei18n.

```tsx
import { I18nContext, useI18n } from '@simplei18n/react';
import GlobalI18n from './Global.i18n.yml';
import MyComponentI18n from './MyComponent.i18n.yml';

const TagComponent = ({ children: ReactNode }): JSX.Element => {
	<span className="tag">{ children }</span>
};

const MyComponent = (): JSX.Element => {
	const { t } = useI18n(MyComponentI18n);
	return (
		<span>
			{
				t('someName', {
					interpolation: 'Interpolation',
					interpolation2: 'Interp',
					tagname: TagComponent,
					tag2: TagComponent
				})
			}

			{
				t('pluralization', { $count: 2 })
			}
		</span>
	);
};

const MyComponentWithGlobalI18n = (): JSX.Element => {
	const { t } = useI18n();
	return (
		<span> { t('someNamespace.MyComponent:aaa') } </span>
	)
};

render(
	<I18nContext value={{ lang: 'ko', i18n: GlobalI18n }}>
		<MyComponent />
		<MyComponentWithGlobalI18n />
	</I18nContext>
);
```
npm package: @simpleimg/decode-blurhash
Description: This module transform blurhash string into base64 image, making it possible to use blurhash as a placeholder for images easily.
Author: Felipe Rohde
Latest version: 1.0.12

## Simple Image Cloud - Blurhash Decoder

This module transform blurhash string into base64 image, making it possible to use blurhash as a placeholder for images easily.

* [Install](#install)
* [Documentation](#documentation)
* [Quick Usage - React](#quick-usage---react)
* [Feedback](#feedback)

## Install

```
yarn add @simpleimg/decode-blurhash
```
or
```
npm install @simpleimg/decode-blurhash
```

## Documentation

You can find the documentation for the Decode Blurhash [here](https://simpleimagecloud.com/docs/decode-blurhash).

## Quick Usage - React

```js
import decode from '@simpleimg/decode-blurhash';
import {
    useEffect,
    useState
} from 'react';

export default () => {
    const [
        background,
        setBackground
    ] = useState('');

    /* will generate a base 64 encoded image with 32px by 32px */
    useEffect(() => {
        setBackground(decode('LGF5]+Yk^6#M@-5c,1J5@[or[Q6.'));
    }, []);

    /* then use it with background-image and background-size: cover */
    return (
        <div style={{
            backgroundImage: `url(${background})`,
            backgroundSize: 'cover',
            width: 400,
            height: 400
        }}/>
    );
};
```

## Feedback

We want to hear your issue reports and feature requests at support@simpleimagecloud.com
npm package: @simplej/spry-core
Description: A Nodejs web framework for quickly building APIs without boilerplate.
Author: James Meyers
Latest version: 0.0.5

# Spry

A Nodejs web framework for quickly building APIs without boilerplate.

## Getting Started

Install the Spry core and CLI

```bash
npm install @simplej/spry-core @simplej/spry-cli
```
npm package: @simplej/spry-manifest
Description: Utilities for creating and using [Spry](https://github.com/jmeyers91/spry-core) app manifest files.
Author: James Meyers
Latest version: 0.0.5

# spry-manifest

Utilities for creating and using [Spry](https://github.com/jmeyers91/spry-core) app manifest files.

## Install

```bash
npm install @simplej/spry-manifest
```

## API

`createManifest(root: string) -> Promise<Manifest>`

Takes project root path and resolves a manifest object for the project.

`hydrateManifest(root: string, manifest: Manifest) -> HydratedManifest`

Takes a project root path and a manifest object and returns a hydrated manifest with absolute file paths and loaded modules.

`manifestToOptions(manifest: HydratedManifest) -> SpryOptions`

Takes a hydrated manifest and returns an options object that can be passed to a Spry constructor.
npm package: @simplej/spry-test-utils
Description: Utilities for testing [Spry](https://github.com/jmeyers91/spry-core) apps.
Author: James Meyers
Latest version: 0.0.4

# Spry Test Utils

Utilities for testing [Spry](https://github.com/jmeyers91/spry-core) apps.

## Install

```bash
npm install @simplej/spry-test-utils
```

## API

**createTestHarness**
```
createTestHarness(root: string, [overrideOptions:object]) -> testWrapper
```

Takes a project root path and an optional options override and returns a test wrapper function. The test wrapper function will receive an initialized Spry app instance that is running in a global database transaction. When the test is finished, the transaction will be automatically rolled back to avoid conflicting with other tests.

**testWrapper.setup**

```
testWrapper.setup() -> Promise<void>
```

Starts the test app. Should be called before any tests are run.

**testWrapper.destroy**

```
testWrapper.destroy() -> Promise<void>
```

Cleans up the test app. Should be called after all tests are finished.

## Example

This example demonstrates creating a test wrapper, using the wrapper to run tests against a project, and isolation between tests.

```js
const { createTestHarness } = require('@simplej/spry-test-utils');
const wrap = createTestHarness('/path/to/my/app/dir', {
  silent: false, // override app config
});

beforeAll(wrap.setup);
afterAll(wrap.destroy);

describe('My app', () => {
  test('Should be able to create users', wrap(async app => {
    const { User } = app.models;
    await User.query().insert({ email: 'a@test.com' });
    const createdUser = await User.query().where('email', 'a@test.com').first();
    expect(createdUser).toBeTruthy();
  }));

  test('Should not conflict with previous test', wrap(async app => {
    const createdUser = await User.query().where('email', 'a@test.com').first();
    expect(createdUser).toBeFalsy(); // this test won't see changes made in other tests
  }));
});
```
npm package: @simplelib/self
Description: Dependência para facilitar o uso do discord.js
Author: felipeellz
Latest version: 1.1.0

<div align="center">
	<br />
	<p>
		<a href="https://github.com/usuario/simpleDiscordLib"><img src="https://via.placeholder.com/546x150.png?text=@simplelib/self" width="546" alt="SimpleDiscordLib" /></a>
	</p>
	<br />
	<p>
		<a href="https://www.npmjs.com/package/@simplelib/self"><img src="https://img.shields.io/npm/v/@simplelib/self.svg?maxAge=3600" alt="npm version" /></a>
		<a href="https://www.npmjs.com/package/@simplelib/self"><img src="https://img.shields.io/npm/dt/@simplelib/self.svg?maxAge=3600" alt="npm downloads" /></a>
	</p>
</div>

---

## Sobre

`@simplelib/self` é uma biblioteca poderosa para [Node.js](https://nodejs.org), projetada para simplificar a criação de selbots
Ideal para desenvolvedores que buscam abstrair tarefas repetitivas no desenvolvimento de selfbots.

### Características principais:
- Facilidade para criação de selfbots
- Sistemas de Raid
- Sistemas de Clonagem
- Sistemas de Mass DM
e muito mais.

---

## Instalação

**Node.js 18 ou superior é necessário.**

```bash
npm install @simplelib/self
yarn add @simplelib/self
pnpm add @simplelib/self
bun add @simplelib/self
```

## Exemplos de uso

### Criação de selfbot

```js
const { SelfBot } = require('@simplelib/self');

const self = new SelfBot("YOUR_ACCOUNT_TOKEN")

// Funções

await self.clearMessages("CHANNEL_ID")
```

---

## Documentação

### Para informações detalhadas sobre todas as funcionalidades, acesse:
[Documentação Oficial](https://simplediscord.site)

---

Caso tenha dúvidas ou queira contribuir, junte-se à nossa comunidade no [Discord](https://simplediscord.site/discord).
npm package: @simplellm/openclaw-provider
Description: SimpleLLM provider setup for OpenClaw — one command, EU-hosted LLM inference
Author: Stage One Solutions UG
Latest version: 0.5.0

# @simplellm/openclaw-provider

Set up [SimpleLLM](https://simplellm.eu) as an LLM provider for [OpenClaw](https://github.com/openclaw/openclaw) in one command.

## Quick Start

```bash
npx @simplellm/openclaw-provider
```

This will:
1. Fetch available models from SimpleLLM
2. Ask for your API key (get one at [app.simplellm.eu](https://app.simplellm.eu))
3. Configure OpenClaw to use SimpleLLM as provider

## Environment Variables

| Variable | Description |
|---|---|
| `SIMPLELLM_BASE_URL` | Override API endpoint (default: `https://api.simplellm.eu`) |
| `SIMPLELLM_API_KEY` | API key (also written to `~/.openclaw/.env`) |

## What is SimpleLLM?

EU-hosted LLM inference. GDPR-compliant, no data leaves Europe. Self-hosted models, no third-party API proxying.

## License

MIT
npm package: @simplellm/opencode-provider
Description: SimpleLLM provider setup for OpenCode — one command, EU-hosted LLM inference
Author: Stage One Solutions UG
Latest version: 0.5.0

# @simplellm/opencode-provider

Set up [SimpleLLM](https://simplellm.eu) as an LLM provider for [OpenCode](https://github.com/sst/opencode) in one command.

## Quick Start

```bash
npx @simplellm/opencode-provider
```

This will:
1. Fetch available models from SimpleLLM
2. Ask for your API key (get one at [app.simplellm.eu](https://app.simplellm.eu))
3. Configure OpenCode with SimpleLLM as provider
4. Store your API key in OpenCode's auth store

## Plugin

The package also exports an OpenCode plugin that shows your credit balance on session start:

```json
{
  "plugins": ["@simplellm/opencode-provider"]
}
```

## Programmatic Usage

```typescript
import { discoverModels, SimpleLLMPlugin } from '@simplellm/opencode-provider'

// Fetch available models
const models = await discoverModels()

// Use the plugin
const plugin = await SimpleLLMPlugin()
```

## Environment Variables

| Variable | Description |
|---|---|
| `SIMPLELLM_BASE_URL` | Override API endpoint (default: `https://api.simplellm.eu`) |
| `SIMPLELLM_API_KEY` | API key (also stored in OpenCode auth) |

## What is SimpleLLM?

EU-hosted LLM inference. GDPR-compliant, no data leaves Europe. Self-hosted models, no third-party API proxying.

## License

MIT
npm package: @simplellm/pi-provider
Description: SimpleLLM provider setup for Pi Coding Agent — one command, EU-hosted LLM inference
Author: Stage One Solutions UG
Latest version: 0.5.1

# @simplellm/pi-provider

One-command setup to use [SimpleLLM](https://simplellm.eu) as a provider for [Pi Coding Agent](https://github.com/mariozechner/pi-coding-agent).

EU-hosted, GDPR-compliant LLM inference — no data leaves Europe.

## Quick Start

```bash
npx @simplellm/pi-provider
```

This will:
1. Fetch available models from SimpleLLM
2. Ask for your API key (get one at [app.simplellm.eu](https://app.simplellm.eu))
3. Configure Pi to use SimpleLLM as a provider

Then start Pi:

```bash
pi --provider simplellm
```

## Manual Setup

If you prefer manual configuration, add to `~/.pi/agent/models.json`:

```json
{
  "providers": {
    "simplellm": {
      "api": "openai-completions",
      "baseUrl": "https://api.simplellm.eu/v1",
      "apiKey": "sk-...",
      "models": [
        {
          "id": "Qwen3-Coder-30B-A3B-Instruct",
          "name": "Qwen3 Coder 30B",
          "contextWindow": 262144,
          "maxTokens": 131072,
          "input": ["text"],
          "cost": { "input": 0.000011, "output": 0.000039, "cacheRead": 0, "cacheWrite": 0 }
        }
      ]
    }
  }
}
```

## Available Models

Visit [simplellm.eu](https://simplellm.eu) for the current model list. Free tier models are available without credits.

## Why SimpleLLM?

- **EU-hosted** — all inference runs on European infrastructure
- **GDPR-compliant** — your code never leaves the EU
- **Open models only** — no vendor lock-in
- **Simple pricing** — pay-as-you-go with SimpleCredits, free tier available

## License

MIT
npm package: @simplellm/sdk
Description: SimpleLLM Node.js SDK — EU-hosted LLM inference, OpenAI-compatible
Author: Stage One Solutions UG
Latest version: 0.5.3

# @simplellm/sdk

Official Node.js SDK for [SimpleLLM](https://simplellm.eu) — EU-hosted LLM inference.

## Install

```bash
npm install @simplellm/sdk
```

## Quick Start

```typescript
import { SimpleLLM } from '@simplellm/sdk'

const client = new SimpleLLM({ apiKey: 'YOUR_API_KEY' })

const response = await client.chat.completions.create({
  model: 'Qwen3-Coder-30B-A3B-Instruct',
  messages: [{ role: 'user', content: 'Hello!' }],
})

console.log(response.choices[0].message.content)
```

## Streaming

```typescript
const stream = await client.chat.completions.create({
  model: 'Qwen3-Coder-30B-A3B-Instruct',
  messages: [{ role: 'user', content: 'Write a poem' }],
  stream: true,
})

for await (const chunk of stream) {
  const text = chunk.choices[0]?.delta?.content ?? ''
  process.stdout.write(text)
}
```

## Speech-to-Text (Whisper)

```typescript
import { readFileSync } from 'fs'

const transcription = await client.audio.transcriptions.create({
  file: readFileSync('audio.mp3'),
  model: 'whisper-large-v3',
})

console.log(transcription.text)
```

## Image Generation (SDXL)

```typescript
const image = await client.images.generate({
  prompt: 'A cat in space',
  model: 'sdxl',
})

console.log(image.data[0].url)
```

## Check Account Balance

```typescript
const usage = await client.usage()
console.log(`Balance: ${usage.balance} SC`)
```

## API Key Usage

```typescript
// Info about the current key
const key = await client.keys.current()
console.log(`Key: ${key.name} (${key.prefix}...)`)

// Usage for the current key
const usage = await client.keys.currentUsage()
console.log(`Requests: ${usage.total_requests}, Cost: ${usage.total_cost_sc} SC`)

// Daily breakdown (last 30 days)
const daily = await client.keys.currentDailyUsage()
for (const day of daily.usage) {
  console.log(`${day.date}: ${day.requests} requests, ${day.cost_sc} SC`)
}

// List all keys
const { api_keys } = await client.keys.list()

// Usage for a specific key
const keyUsage = await client.keys.usage(api_keys[0].id)
```

## Configuration

```typescript
const client = new SimpleLLM({
  apiKey: 'YOUR_API_KEY',       // or set SIMPLELLM_API_KEY env var
  baseURL: 'https://api.simplellm.eu', // default
  timeout: 120000,              // default: 120s
})
```

## OpenAI Compatibility

SimpleLLM is fully OpenAI-compatible. You can also use the official OpenAI SDK:

```typescript
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://api.simplellm.eu/v1',
  apiKey: 'YOUR_API_KEY',
})
```

## License

MIT
npm package: @simplelocalize/cli
Description: SimpleLocalize CLI for NPM
Author: Jakub Pomykała
Latest version: 2.10.0

# SimpleLocalize CLI via npm

The main goal of this project is to give fronted developers
an easier way to use [SimpleLocalize CLI](https://github.com/simplelocalize/simplelocalize-cli)
in their workflows. 

## Installation

```shell
npm install @simplelocalize/cli
```

After installing the package, it should automatically choose the right binary for 
your system and install it into `node_modules/.bin` directory, to make it available for your
scripts in `package.json`.

```json
{
  "name": "My project",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "@simplelocalize/cli": "^2.9.2",
  },
  "scripts": {
    "start": "react-scripts start",
    "sl:download": "simplelocalize download",
    "sl:upload": "simplelocalize upload",
    "sl:autotranslate": "simplelocalize auto-translate"
  },
}
```

Learn more about [SimpleLocalize CLI commands](https://github.com/simplelocalize/simplelocalize-cli)


## NPX Support

You can also use `npx` to run SimpleLocalize CLI commands without installing the package
globally:

```shell
npx @simplelocalize/cli download
```

## Versioning explanation

`@simplelocalize/cli` versioning is synced with https://github.com/simplelocalize/simplelocalize-cli versioning.

`@simplelocalize/cli@2.9.1` will install SimpleLocalize CLI 2.9.x and this npm package version is 1.
`@simplelocalize/cli@2.9.1` will install SimpleLocalize CLI 2.9.x and this npm package version is 2.

By using this versioning scheme, we can release new versions of this npm package
without changing the SimpleLocalize CLI version, for example, to fix bugs in this package,
and follow semantic versioning rules.