open-index/open-npm huggingface dataset:
npm package: @inferlane/sdk
Description: Multi-provider LLM proxy SDK with smart routing, streaming, and cost optimization
Latest version: 1.0.0

# @inferlane/sdk

TypeScript SDK for the InferLane API. Route, schedule, and optimize AI inference across providers.

## Install

```bash
npm install @inferlane/sdk
```

## Quick Start

```typescript
import { InferLane } from '@inferlane/sdk';

const il = new InferLane({ apiKey: 'il_...' });

// Route to cheapest provider
const response = await il.dispatch({
  prompt: 'Explain quantum computing',
  routing: 'cheapest',
});

// Schedule for later
await il.schedule({
  prompt: 'Generate weekly report',
  model: 'claude-sonnet-4',
  scheduleType: 'RECURRING',
  cronExpression: '0 9 * * 1',
});

// Check savings
const savings = await il.savings({ period: '30d' });
console.log(`Saved $${savings.totalSaved}`);
```

## Subpath Exports

```typescript
import { ... } from '@inferlane/sdk';           // Core SDK
import { ... } from '@inferlane/sdk/openai';     // OpenAI-compatible client
import { ... } from '@inferlane/sdk/ingest';     // Usage ingestion
import { ... } from '@inferlane/sdk/estimate';   // Cost estimation
import { ... } from '@inferlane/sdk/vercel-ai';  // Vercel AI SDK integration
import { ... } from '@inferlane/sdk/langchain';  // LangChain integration
```

## API Reference

### `dispatch(options)` — Send a prompt
### `schedule(options)` — Schedule a prompt
### `triage(options)` — Classify a prompt
### `savings(options)` — View cost savings
### `models()` — List available models
### `health()` — Provider health status

## License

MIT
npm package: @inferlink/comments
Description: Simple comments interface by Inferlink
Author: Marcus Kreitzer
Latest version: 0.1.1

# Inferlink Comments

This package is meant to be used with the Inferlink Comments API, but a custom API can be supplied if it uses the same contract

## Via NPM

```
npm install @inferlink/comments

// yourfile.js
import Comments from "@inferlink/comments"
```

## CDN

```
<link href="https://unpkg.com/@inferlink/comments@0.1.1/build/index.css" rel="stylesheet"/>
<script src="https://unpkg.com/@inferlink/comments@0.1.1/build/index.js"></script>
```

## Usage (all fields required)

```
Comments({
  target: document.getElementById("comments-root"),
  baseURL: "https://yourapilocation.com",
  postID: 1,
  token: "API_TOKEN",
  username: "USERNAME"
})
```
npm package: @infermedica/component-library
Description: Vue 3 UI library for healthcare and not only.
Latest version: 1.11.4

# Infermedica Component Library
<a href="https://www.npmjs.com/package/@infermedica/component-library" target="_blank"><img alt="npm" src="https://img.shields.io/npm/v/@infermedica/component-library"/></a>
<a href="https://github.com/infermedica/component-library">
  <img alt="License" src="https://img.shields.io/github/license/infermedica/component-library" />
</a>
<a href="https://github.com/infermedica/component-library/pulls">
  <img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" />
</a>
### The first Ui library for healthcare and not only base on Vue 3.

**Current status**: Stable beta

**Full configurable** mobile first Ui Library for healthcare and not. Our project base on Vue 3 and our components are **accessibility-friendly**, 
follow best practice in terms of design and coding. We provide raw source and aim to be developer-friendly, configurable-first and performance-oriented.

## Links
- Documentation https://component.infermedica.com/
- Discord Community https://discord.gg/Uhv8Ev8yqC


## Contributing
Contribution is welcome but always before you want to contribute please mail to <a href="maito:przemyslaw.spaczek@infermedica.com?subject=Component Library Contribute">przemyslaw.spaczek@infermedica.com</a>.

## Dependencies
A list of dependencies can be found in [package.json](https://github.com/infermedica/component-library/blob/master/package.json) file or on npm [@infermedica/component-library](https://www.npmjs.com/package/@infermedica/component-library) site. 

## Supporters
<a href="https://infermedica.com/">
  <img src="./public/logo.svg" height="32px"/>
</a>
npm package: @infermedica/eslint-config-vue
Description: ESLit configuration for vue.js projects.
Author: Infermedica
Latest version: 1.1.0

# Infermedica ESLint configuration

ESLint configuration for Vue.js projects.

## Install

```bash
npm i @infermedica/eslint-config-vue --save-dev
```

## Usage

This config is designed to work with the `extends` feature of `.eslintrc` files,
[learn more](http://eslint.org/docs/developer-guide/shareable-configs).

Add this to your `.eslintrc` or `package.json` file:

```
{
  "extends": "@infermedica/eslint-config-vue"
}
```

You can override settings from this config by adding them directly into your
`.eslintrc` or `package.json` file.

#### Commands

Recommended set of commands to put in `package.json` scripts:

```
  "lint:js": "eslint --ext .js,.vue .",
  "lint-autofix:js": "eslint --ext .js,.vue . --fix",
```

## License

MIT Copyright (c) Infermedica
npm package: @infermedica/stylelint-config
Description: Stylelint configuration.
Author: Infermedica
Latest version: 1.1.0

# Infermedica Stylelint configuration

## Install

```bash
npm i @infermedica/stylelint-config --save-dev
```

## Usage

This config is designed to work with the `extends` feature of `.stylelintrc` files.

Add this to your `.stylelintrc` or `package.json` file:

```
{
  "extends": "@infermedica/stylelint-config"
}
```

You can override settings from this config by adding them directly into your
`.eslintrc` or `package.json` file.

#### Commands

Recommended set of commands to put in `package.json` scripts:

```
  "lint:css": "stylelint ./**/*.css ./**/*.scss ./**/*.vue",
  "lint-autofix:css": "stylelint ./**/*.css ./**/*.scss ./**/*.vue --fix",
```

## License

MIT Copyright (c) Infermedica
npm package: @infermedica/vue-sentry-plugin
Description: Sentry plugin for Vue applications.
Author: Infermedica
Latest version: 0.1.1

# Infermedica Vue Sentry Plugin

This package provides a simple vue plugin to configure Sentry.

## Installation

```bash
$ npm install --save-dev @infermedica/vue-sentry-plugin
```

## Configuration

The Sentry plugin has to be configured in Webpack configuration file through `webpack.DefinePlugin`:

```javascript
new webpack.DefinePlugin({
  __sentry: JSON.stringify({
    isEnabled: process.env.NODE_ENV === 'production',
    dsn: 'https://XXX@sentry.io/XXX',
    environment: process.env.NODE_ENV === 'production' ? 'production' : 'local',
    release: '<release-identifier>'
  })
})
```

## Usage

To use the module, just import the `VueSentry` object and install the plugin in Vue.

```javascript
import VueSentry from '@infermedica/vue-sentry-plugin';

Vue.use(VueSentry);
```

The plugin will be avaliabe under `VueSentry` and in components under `this.$sentry`.

This plugin automatically sets two Sentry tags:
* "instance" to the value of `window.location.hostname`
* "event_layer" to the value "frontend"


### Set additional global Sentry tags

```javascript
this.$sentry.setTag('tag_name', 'tag_value');
```


### Set active user in Sentry

```javascript
this.$sentry.setUser(currentUser.id, currentUser.username, currentUser.name);
```


### Set active interface language in Sentry

```javascript
this.$sentry.setActiveInterfaceLanguage('en');
```

This just sets a tag 'i18n.locale' to given value.


### Access Sentry object

The global Sentry object is also avaliable through the plugin, so one can access the core sentry functionality.

```javascript
this.$sentry.Sentry
```

## Contribution

We're happy to accept pull requests with additional integrations. Feel free to raise an issue if you have any
questions or suggestions.

## License

MIT Copyright (c) Infermedica
npm package: @infernal-ui/preset
Description: Infernal UI Panda CSS preset, accent themes, and theme utilities.
Latest version: 0.1.0

# @infernal-ui/preset

Lower-level Panda CSS preset and theme utilities for Infernal UI.

## When to use this package

Use `@infernal-ui/preset` directly when you want the Infernal UI tokens, recipes, slot recipes, and accent themes in a custom Panda setup.

If you are consuming `@infernal-ui/solid`, prefer `@infernal-ui/solid/preset` because it wraps this package with Solid-specific defaults such as `jsxFramework`, `importMap`, `outdir`, and the generated component build info include path.

## Install

```sh
pnpm add @infernal-ui/preset
pnpm add -D @pandacss/dev
```

## Usage

```ts
import { defineConfig } from '@pandacss/dev';
import pandaPreset from '@pandacss/dev/presets';
import { infernalPreset } from '@infernal-ui/preset';

export default defineConfig({
  preflight: true,
  jsxFramework: 'solid',
  include: ['./src/**/*.{ts,tsx}'],
  outdir: 'styled-system',
  presets: [pandaPreset, infernalPreset],
});
```

## Accent themes

Built-in accent themes include `blue`, `crimson`, `emerald`, and `amber`.

Use `createAccentTheme` when you want to define your own Panda theme:

```ts
import { createAccentTheme } from '@infernal-ui/preset';

const volcanic = createAccentTheme({
  primary: {
    main: '{colors.orange.600}',
    hover: '{colors.orange.700}',
    active: '{colors.orange.500}',
    focus: '{colors.orange.500}',
    contrast: '{colors.white}',
  },
});
```

Add the returned theme object to your Panda config's `themes` field.

## Key exports

- `infernalPreset`: preset with Infernal UI recipes, slot recipes, semantic tokens, and built-in accent themes
- `createAccentTheme`: helper for custom accent themes
- `infernalAccentNames`: built-in accent theme names
- `infernalAccentThemes`: built-in accent theme definitions

## Links

- Monorepo: https://github.com/Drummss/infernal-ui
- Solid package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/solid#readme
- Styled-system package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/styled-system#readme
- Issues: https://github.com/Drummss/infernal-ui/issues
npm package: @infernal-ui/solid
Description: Infernal UI components, theme context, Panda setup helpers, and CLI for SolidJS.
Latest version: 0.1.0

# @infernal-ui/solid

Infernal UI for SolidJS: components, theme context, Panda CSS setup helpers, and the `infernal` project bootstrap CLI.

## Install

Infernal UI expects Panda CSS in the consuming app.

```sh
pnpm add @infernal-ui/solid @infernal-ui/styled-system
pnpm add -D @pandacss/dev
```

## Recommended setup

Use the CLI to wire the common Panda and Vite setup:

```sh
pnpm exec infernal init
```

This initializes:

- `panda.config.ts` via `defineInfernalConfig`
- `infernalVite()` when a Vite config is detected
- fallback PostCSS wiring for non-Vite projects
- CSS layers and entry CSS imports
- a `prepare` script entry for `panda codegen`

## Manual setup

Create `panda.config.ts`:

```ts
import { defineInfernalConfig } from '@infernal-ui/solid/preset';

export default defineInfernalConfig({});
```

If you use Vite, add the plugin in `vite.config.ts`:

```ts
import { defineConfig } from 'vite';
import solid from 'vite-plugin-solid';
import { infernalVite } from '@infernal-ui/solid/vite';

export default defineConfig({
  plugins: [solid(), infernalVite()],
});
```

Add Panda layers to your app stylesheet:

```css
@layer reset, base, tokens, recipes, utilities;
```

Import that stylesheet from your app entrypoint and ensure `panda codegen` runs before builds.

## Usage

```tsx
import { Button, InfernalContext } from '@infernal-ui/solid';

export const App = () => (
  <InfernalContext>
    <Button>Press me</Button>
  </InfernalContext>
);
```

`InfernalContext` is a provider for Infernal theme and accent state. It does not render a styled wrapper element.

## Key exports

- `@infernal-ui/solid`: components plus `InfernalContext` and `useInfernalContext`
- `@infernal-ui/solid/preset`: `defineInfernalConfig`, `createAccentTheme`, `infernalPreset`
- `@infernal-ui/solid/vite`: `infernalVite()`
- `infernal`: CLI for project setup via `pnpm exec infernal init`

## Links

- Monorepo: https://github.com/Drummss/infernal-ui
- Preset package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/preset#readme
- Styled-system package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/styled-system#readme
- Issues: https://github.com/Drummss/infernal-ui/issues
npm package: @infernal-ui/styled-system
Description: Generated Panda styled-system package for Infernal UI recipes, tokens, themes, and helpers.
Latest version: 0.1.0

# @infernal-ui/styled-system

Generated Panda styled-system package for Infernal UI recipes, tokens, themes, and CSS helpers.

## When to use this package

This package is typically consumed alongside `@infernal-ui/solid`. It provides the generated Panda modules that back Infernal UI's components and theme utilities.

The generated directories in this package are build artifacts rather than source files. If you need to pack or inspect this package locally, run `pnpm --filter @infernal-ui/styled-system build` first.

## Install

```sh
pnpm add @infernal-ui/solid @infernal-ui/styled-system
pnpm add -D @pandacss/dev
```

## Usage

Import from the published subpaths:

```ts
import { css } from '@infernal-ui/styled-system/css';
import { button } from '@infernal-ui/styled-system/recipes';
import { token } from '@infernal-ui/styled-system/tokens';
```

Import the generated stylesheet from the explicit CSS export:

```ts
import '@infernal-ui/styled-system/styles.css';
```

Do not use a root import such as `@infernal-ui/styled-system`; this package only exposes subpath exports.

## Available exports

- `@infernal-ui/styled-system/css`
- `@infernal-ui/styled-system/jsx`
- `@infernal-ui/styled-system/patterns`
- `@infernal-ui/styled-system/recipes`
- `@infernal-ui/styled-system/themes`
- `@infernal-ui/styled-system/tokens`
- `@infernal-ui/styled-system/types`
- `@infernal-ui/styled-system/styles.css`

## Links

- Monorepo: https://github.com/Drummss/infernal-ui
- Solid package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/solid#readme
- Preset package docs: https://github.com/Drummss/infernal-ui/tree/main/packages/preset#readme
- Issues: https://github.com/Drummss/infernal-ui/issues
npm package: @infernodesign/biome
Description: Strict, opinionated linting config for modern TypeScript apps.
Author: Inferno Design
Latest version: 1.3.0

# @infernodesign/biome

Shared Biome config presets for Inferno Design projects. Built on top of [Biome](https://biomejs.dev/) (a Rust-based code formatter and linter), Biome provides a robust, preconfigured setup optimized for modern web development.

## Setup

### Manual Installation

Install the package as a development dependency:

```bash
bun add -D @infernodesign/biome biome
```

### Automatic Installation

Run the command below to install and initialize Biome in the current directory:

```bash
bun dlx @infernodesign/biome init
```

## License

Licensed under the [MIT License](./LICENSE).
npm package: @infernodesign/browserslist-config
Description: Shared Browserlist config for Inferno Design.
Author: Inferno Design
Latest version: 2.2.0

# @infernodesign/browserslist-config

Shared Browserslist support configuration for Inferno Design projects. This configuration is used to target browsers based on the Inferno Design Team's best practices and target audience.

## Features

- **Modern Browsers**: Targets the latest 2 major versions of all browsers.
- **Mobile Browsers**: Targets the latest 2 major versions of all mobile browsers.
- **Not Dead Browsers**: Doesn't target browsers that are considered dead.
- **Not Opera Mini**: Doesn't target Opera Mini.

## Browserslist Configuration

The configuration is based on the following criteria, can be found in the
`index.ts` file, and can be viewed in the [Browserslist Explorer](https://browserslist.dev/?q=PjAuMiUsbGFzdCAyIG1ham9yIHZlcnNpb25zLG5vdCBkZWFkLG5vdCBvcF9taW5pIGFsbA==):

```javascript
const config = [
  '>0.2%',
  'last 2 major versions',
  'not dead',
  'not op_mini all',
]
```

## Installation

```shell
bun add -D @infernodesign/browserslist-config
```

## Usage

In the `package.json` for your project

```json
{
  "browserslist": [
    "extends @infernodesign/browserslist-config"
  ]
}
```

<!-- BROWSERS_LIST:START -->

## Supported Browsers

_Generated automatically on Fri, 20 Mar 2026_

### Desktop

- Android (144)
- Chrome (144, 143, 142, 141, 139, 138, 133, 131, 125, 124, 120, 117, 116, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103)
- Edge (144, 143)
- Firefox (147, 146)
- Kaios (3.0-3.1, 2.5)
- Opera (125, 124)
- Safari (26.2, 26.1, 26.0, 18.5-18.6, 18.4, 18.3, 18.2, 18.1, 18.0)
- Samsung (29, 28)

### Mobile

- Chrome for Android (144)
- Firefox for Android (147)
- QQ Browser (14.9)
- UC Browser (15.5)
- Safari for iOS (26.2, 26.1, 26.0, 18.5-18.7, 18.4, 18.3, 18.2, 18.1, 18.0, 17.6-17.7, 16.6-16.7, 15.6-15.8, 11.0-11.2)
- Opera Mobile (80)

[View more at browserslist.dev (usages, coverage)](https://browserslist.dev/?q=PjAuMiUsbGFzdCAyIG1ham9yIHZlcnNpb25zLG5vdCBkZWFkLG5vdCBvcF9taW5pIGFsbA==)

<!-- BROWSERS_LIST:END -->

## License

Licensed under the [MIT License](./LICENSE).
npm package: @infernodesign/prettier-config
Description: Shared Prettier config for Inferno Design.
Author: Inferno Design
Latest version: 2.1.0

# @infernodesign/prettier-config

Shared and opiniated Prettier config with support for Tailwind CSS for Inferno Design projects.

## Installation

```shell
bun install --save-dev @infernodesign/prettier-config
```

## Usage

Add the following to your `package.json`:

```json
{
  "prettier": "@infernodesign/prettier-config"
}
```

Or create a `prettier.config.js` file in the root of your project with the following content:

```js
// prettier.config.js
import { config } from '@infernodesign/prettier-config'

export default config( {
  ignoreFiles: [
    '**/CHANGELOG.md',
    '.release-please-manifest.json',
    'coverage/**/*',
    // ... Additional globs
  ],
} )
```

## License

Licensed under the [MIT License](./LICENSE).
npm package: @infernodesign/stylelint-config
Description: Shared Stylelint configs for Inferno Design.
Author: Inferno Design
Latest version: 2.2.0

# `@infernodesign/stylelint-config`

Shared Stylelint configuration for Inferno Design projects.

## Features

- Based on [`stylelint-config-standard`](https://www.npmjs.com/package/stylelint-config-standard) for general CSS support.
- Extends [`stylelint-config-recommended-scss`](https://www.npmjs.com/package/stylelint-config-standard-scss) for SCSS support.
- Extends [`stylelint-prettier`](https://www.npmjs.com/package/stylelint-prettier) to enforce formatting and disable rules that conflict with Prettier.
- Extends [`stylelint-use-logical-spec`](https://www.npmjs.com/package/stylelint-use-logical-spec) to enforce using CSS logical properties.

## Installation

```shell
bun install --save-dev stylelint @infernodesign/stylelint-config
```

## Usage

Add the following to your `stylelint.config.js`:

```js
import { stylelintConfig } from '@infernodesign/stylelint-config'

/** @type {import("stylelint").Config} */
export default {
  defaultSeverity: 'warning', // Override default 'error' severity
  extends: [ stylelintConfig ],
  ignoreFiles: [
    // Additional ignore patterns
  ],
  rules: {
    // Additional rules
  },
}
```

## License

Licensed under the [MIT License](./LICENSE).
npm package: @infernodesign/typescript-config
Description: Shared TypeScript configs for Inferno Design.
Author: Inferno Design
Latest version: 1.4.0

# `@infernodesign/typescript-config`

Shared TypeScript configurations for Inferno Design projects.

## Available Configurations

| Configuration File      | Description                                                      |
|-------------------------|------------------------------------------------------------------|
| `base.json`             | Base configuration for TypeScript projects.                      |
| `cypress.json`          | Configuration for projects using Cypress for end-to-end testing. |
| `library.json`          | Configuration for internal packages within the project.          |
| `next.json`             | Configuration for projects using Next.js framework.              |
| `react.json`            | Configuration for projects using React library.                  |
| `react-native.json`     | Configuration for projects using React Native framework.         |
| `sanity.json`           | Configuration for projects using Sanity Studio CMS.              |
| `vite.json`             | Configuration for projects using Vite as a build tool.           |

## Usage

To use the shared TypeScript configurations in your project, install the package:

```shell
bun add -D @infernodesign/typescript-config
```

Then, extend the configuration in your `tsconfig.json` file:

```json5
{
  "extends": "@infernodesign/typescript-config/base.json",
  "compilerOptions": {
    // Additional compiler options
  },
  "include": [ "src/*.ts" ],
  "exclude": [ "node_modules" ]
}
```

You can also extend other configurations based on your project needs:

```json5
{
  "extends": "@infernodesign/typescript-config/react.json",
  "compilerOptions": {
    // Additional compiler options
  },
  "include": [ "src/*.ts" ],
  "exclude": [ "node_modules" ]
}
```

## License

Licensed under the [MIT License](./LICENSE).
npm package: @infernored/electionguard-experimental
Description: Library for encrypting ballots for the ElectionGuard voting system
Author: Microsoft
Latest version: 1.91.1-8.2

# ElectionGuard

ElectionGuard is an open source software development kit (SDK) that makes voting more secure, transparent and accessible. The ElectionGuard SDK leverages homomorphic encryption to ensure that votes recorded by electronic systems of any type remain encrypted, secure, and secret. Meanwhile, ElectionGuard also allows verifiable and accurate tallying of ballots by any 3rd party organization without compromising secrecy or security.

Learn More in the [ElectionGuard Repository](https://github.com/microsoft/electionguard)
npm package: @infernus/cef
Description: A wrapper of the popular samp-cef plugin for samp-node.
Author: dockfries
Latest version: 0.1.2

# @infernus/cef

[![npm](https://img.shields.io/npm/v/@infernus/cef)](https://www.npmx.dev/package/@infernus/cef) ![npm](https://img.shields.io/npm/dw/@infernus/cef) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/cef)

A wrapper of the popular [samp-cef plugin](https://github.com/Pycckue-Bnepeg/samp-cef) for samp-node.

**You must use an existing [polyfill](https://github.com/dockfries/infernus-starter/blob/main/gamemodes/polyfill/cef.inc) or compile the corresponding GameMode based on it before you can use it.**

## Getting started

```sh
pnpm add @infernus/core @infernus/cef
```

## Example

Please refer to the [documentation](https://github.com/Pycckue-Bnepeg/samp-cef/wiki/Working-with-events) of the samp-cef plugin.

```c
#include <open.mp>
#include <samp-node>

#include <streamer>
#include <cef>

#include <polyfill/i18n>
#include <polyfill/cef>

forward OnLogin(player_id, const password[]);
public OnLogin(player_id, const password[]) {
  // transfer to our samp.on
  return SAMPNode_CallEvent("OnPlayerCefLogin", player_id, password)
}
```

```ts
import { defineEvent } from "@infernus/core";
import { Cef, CefEvent } from "@infernus/cef";

CefEvent.onInitialize(({ player, success, next }) => {
  if (!player) return next();

  if (success) {
    new Cef({
      player,
      browserId: 1,
      url: "http://your-hosting.com",
      hidden: false,
      focused: false,
    });
  } else {
    player.sendClientMessage(
      -1,
      "Ahh to bad you cannot see our new cool interface ...",
    );
  }

  return next();
});

CefEvent.onBrowserCreated(({ cef, statusCode }) => {
  if (cef.browserId === 1) {
    if (statusCode !== 200) {
      // fallback to dialogs ...
      return;
    }
    Cef.subscribe("loginpage:login", "OnLogin");
  }
});

const [onPlayerCefLogin] = defineEvent({
  name: "OnPlayerCefLogin",
  identifier: "is",
  beforeEach(playerId: number, password: string) {
    return { playerId, password };
  },
});

onPlayerCefLogin(({ playerId, password, next }) => {
  // get a user password and compare it with a passed string
  const success = comparePlayerPassword(playerId, password);
  if (success) {
    // send a response status to the player
    // Cef.emitEvent(playerId, "someevent", 0, 25.51, "hellow!");
    // you no longer need CEFINT, CEFFLOAT, CEFSTR !!!
    Cef.emitEvent(playerId, "loginpage:response", 1);
    // your code when user is logged in
    OnSuccessLogin(playerId);
  }
  return next();
});
```
npm package: @infernus/colandreas
Description: A wrapper of the popular SA-MP ColAndreas plugin for samp-node.
Author: dockfries
Latest version: 0.1.2

# @infernus/colandreas

[![npm](https://img.shields.io/npm/v/@infernus/colandreas)](https://www.npmx.dev/package/@infernus/colandreas) ![npm](https://img.shields.io/npm/dw/@infernus/colandreas) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/colandreas)

A wrapper of the popular [SA-MP ColAndreas plugin](https://github.com/Pottus/ColAndreas) for samp-node.

## Getting started

```sh
pnpm add @infernus/core @infernus/colandreas
```

## Example

```ts
import { GameMode, PlayerEvent } from "@infernus/core";
import { init, isPlayerInWater } from "@infernus/colandreas";

GameMode.onInit(({ next }) => {
  init();
  return next();
});

PlayerEvent.onCommandText("water", ({ player, next }) => {
  const info = isPlayerInWater(player);
  if (info)
    player.sendClientMessage(
      "#f00",
      `you are in water, ${JSON.stringify(info)}`
    );
  else {
    player.sendClientMessage("#0f0", "you are not in water");
  }
  return next();
});
```
npm package: @infernus/core
Description: Node.js library for Scripting Open Multiplayer
Author: dockfries
Latest version: 0.14.4

# @infernus/core

[![npm](https://img.shields.io/npm/v/@infernus/core)](https://www.npmx.dev/package/@infernus/core) ![npm](https://img.shields.io/npm/dw/@infernus/core) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/core)

Node.js library for Scripting [Open Multiplayer](https://open.mp).
npm package: @infernus/distance
Description: A wrapper of the popular SA-MP distance library for samp-node.
Author: dockfries
Latest version: 0.1.2

# @infernus/distance

[![npm](https://img.shields.io/npm/v/@infernus/distance)](https://www.npmx.dev/package/@infernus/distance) ![npm](https://img.shields.io/npm/dw/@infernus/distance) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/distance)

A wrapper of the popular [SA-MP distance library](https://github.com/Y-Less/samp-distance) for samp-node.

## Getting started

```sh
pnpm add @infernus/core @infernus/distance
```

## Example

```ts
import { Player, PlayerEvent } from "@infernus/core";
import {
  getClosestVehicleToPlayer,
  isPlayerInRangeOfPlayer,
  isPlayerInRangeOfVehicle,
} from "@infernus/distance";

PlayerEvent.onCommandText("pay", ({ player, subcommand, next }) => {
  const [playerId2, amount] = subcommand;
  if (!playerId2 || !amount) {
    return player.sendClientMessage(
      -1,
      "USAGE: /pay <Player name/ID> <Amount>",
    );
  }

  const player2 = Player.getInstance(+playerId2);

  if (!player2 || !isPlayerInRangeOfPlayer(player, player2, 5.0)) {
    return player.sendClientMessage(
      0xff0000ff,
      "The specified player is not near you!",
    );
  }

  player.giveMoney(-amount);
  player2.giveMoney(+amount);
  return next();
});

PlayerEvent.onCommandText("fixtires", ({ player, next }) => {
  const vehicle = getClosestVehicleToPlayer(player);

  if (!vehicle || !isPlayerInRangeOfVehicle(player, vehicle, 10.0)) {
    return player.sendClientMessage(
      0xff0000ff,
      "You are not near any vehicle!",
    );
  }

  const { panels, doors, lights } = vehicle.getDamageStatus();
  vehicle.updateDamageStatus(panels, doors, lights, 0);
  return next();
});
```
npm package: @infernus/drift-detection
Description: A wrapper of the popular SA-MP driftDetection library for samp-node.
Author: dockfries
Latest version: 0.1.2

# @infernus/drift-detection

[![npm](https://img.shields.io/npm/v/@infernus/drift-detection)](https://www.npmx.dev/package/@infernus/drift-detection) ![npm](https://img.shields.io/npm/dw/@infernus/drift-detection) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/drift-detection)

A wrapper of the popular [SA-MP driftDetection library](https://github.com/karimoldacc/drift-detection) for samp-node.

## Getting started

```sh
pnpm add @infernus/core @infernus/drift-detection
```

## Example

```ts
import { GameMode, Vehicle } from "@infernus/core";
import { Drift, DriftEvent } from "@infernus/drift-detection";

GameMode.onInit(({ next }) => {
  const veh = new Vehicle({
    modelId: 562,
    x: 3,
    y: 3,
    z: 3,
    color: [-1, -1],
    zAngle: 0,
  });
  veh.create();
  veh.addComponent(1010);
  Drift.enableDetection(-1);
  return next();
});

DriftEvent.onPlayerStart(({ player, next }) => {
  console.log(player.id);
  return next();
});

DriftEvent.onPlayerUpdate(({ player, driftAngle, speed, time, next }) => {
  console.log(player.id, driftAngle, speed, time);
  return next();
});

DriftEvent.onPlayerEnd(({ player, reason, distance, time, next }) => {
  console.log(player.id, reason, distance, time);
  return next();
});
```
npm package: @infernus/e-selection
Description: A wrapper of the popular SA-MP eSelection library for samp-node.
Author: dockfries
Latest version: 0.0.2

# @infernus/e-selection

[![npm](https://img.shields.io/npm/v/@infernus/e-selection)](https://www.npmjs.com/package/@infernus/e-selection) ![npm](https://img.shields.io/npm/dw/@infernus/e-selection) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/e-selection)

A wrapper of the popular [SA-MP eSelection library](https://github.com/TommyB123/eSelection) for samp-node.

## Getting started

```sh
pnpm add @infernus/core @infernus/e-selection
```

## Example

```ts
import { type Player, PlayerEvent } from "@infernus/core";
import { type IModelData, ModelSelectionMenu } from "@infernus/e-selection";

PlayerEvent.onSpawn(({ player, next }) => {
  showSkinModelMenu(player)
  return next()
})

async function showSkinModelMenu(player: Player) {
  // create a list to populate with models.
  // add skin IDs 0, 1, 29 and 60 with "cool people only" text above skin ID 29.
  const skins: IModelData[] = [
    { modelId: 0 },
    { modelId: 1 },
    { modelId: 29, modelText: 'Cool people only' },
    { modelId: 60 },
  ].concat(Array.from({ length: 15 }).map((_, id): IModelData => {
    return { modelId: id, rotX: Math.random() * 5 }
  }))

  try {
    // use await_arr and set the response array to the model selection menu result
    const skin = await new ModelSelectionMenu({
      player,
      models: skins,
      headerText: 'Skins',
    }).show()

    // make sure the player actually clicked on a model and not the close button
    if (skin) {
      // assign the player the skin of their choosing
      player.setSkin(skin.modelId)
    }
  }
  catch (err) {
    player.sendClientMessage(-1, JSON.stringify(err))
  }
}
```
npm package: @infernus/fcnpc
Description: A wrapper of the popular SA-MP FCNPC plugin for samp-node.
Author: dockfries
Latest version: 0.1.1

# @infernus/fcnpc

[![npm](https://img.shields.io/npm/v/@infernus/fcnpc)](https://www.npmjs.com/package/@infernus/fcnpc) ![npm](https://img.shields.io/npm/dw/@infernus/fcnpc) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/fcnpc)

A wrapper of the popular [SA-MP FCNPC plugin](https://github.com/ziggi/FCNPC) for samp-node.

> ⚠ Not applicable to [open.mp NPC Component](https://github.com/openmultiplayer/open.mp/pull/916).
> If you are interested in using it, it may work with legacy sa-mp server.

## Getting started

```sh
pnpm add @infernus/core @infernus/fcnpc
```

## Example

```ts
import { FCNPC, FCNPCEvent } from "@infernus/fcnpc";

FCNPCEvent.onInit(({ next }) => {
  const fcnpc = new FCNPC("npc_name").create();
  fcnpc.spawn(0, 1697.7418, -1600.1525, 13.5469);
  return next();
});
```
npm package: @infernus/fs
Description: A collection of all built-in filterscripts
Author: dockfries
Latest version: 0.14.1

# @infernus/fs

[![npm](https://img.shields.io/npm/v/@infernus/fs)](https://www.npmjs.com/package/@infernus/fs) ![npm](https://img.shields.io/npm/dw/@infernus/fs) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/fs)

A collection of all built-in filterscripts, implemented with [@infernus/core](https://github.com/dockfries/infernus).

## Getting started

```sh
pnpm add @infernus/core @infernus/fs
```

## Example

```ts
import { GameMode } from "@infernus/core";
import { A51Base, AdminSpec, AntiFlood, Base, MaxIps } from "@infernus/fs";

GameMode.use(A51Base, { debug: true });
GameMode.use(Base)
  .use(AdminSpec)
  .use(AntiFlood)
  .use(MaxIps, { maxConnections: 1 });
```
npm package: @infernus/gps
Description: A wrapper of the popular SA-MP GPS plugin for samp-node.
Author: dockfries
Latest version: 0.0.3

# @infernus/gps

[![npm](https://img.shields.io/npm/v/@infernus/gps)](https://www.npmx.dev/package/@infernus/gps) ![npm](https://img.shields.io/npm/dw/@infernus/gps) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/gps)

A wrapper of the popular [SA-MP GPS plugin](https://github.com/AmyrAhmady/samp-gps-plugin) for samp-node, built-in [WazeGPS](https://github.com/devbluen/WazeGPS-Samp).

**You must use an existing [polyfill](https://github.com/dockfries/infernus-starter/blob/main/gamemodes/polyfill/gps.inc) or compile the corresponding GameMode based on it before you can use it.**

## Getting started

```sh
pnpm add @infernus/core @infernus/gps
```

## Example

```ts
import { WazeEvent, isValidWazeGPS, setPlayerWaze, stopWazeGPS } from "@infernus/gps";
import { PlayerEvent } from "@infernus/core";

PlayerEvent.onClickMap(({ player, fX, fY, fZ, next }) => {
  player.sendClientMessage(-1, "GPS set!");
  setPlayerWaze(player, fX, fY, fZ);
  return next();
});

PlayerEvent.onCommandText("stopgps", ({ player, next }) => {
  if (isValidWazeGPS(player)) {
    stopWazeGPS(player);
  }
  return next();
});

WazeEvent.onPlayerRouteFinish(({ player, finishedRoute, next }) => {
  player.sendClientMessage(
    -1,
    "Route finished!" + finishedRoute.tickPosition.toString(),
  );
  return next();
});
```
npm package: @infernus/map-loader
Description: A tool for obj conversion, parsing, and loading
Author: dockfries
Latest version: 0.1.1

# @infernus/map-loader

[![npm](https://img.shields.io/npm/v/@infernus/map-loader)](https://www.npmjs.com/package/@infernus/map-loader) ![npm](https://img.shields.io/npm/dw/@infernus/map-loader) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/map-loader)

## Getting started

A tool for obj conversion, parsing, and loading, which refers to [samp-map-parser](https://github.com/TommyB123/samp-map-parser).

```sh
pnpm add @infernus/core @infernus/map-loader
```

## Example

```ts
import { GameMode } from "@infernus/core";
import {
  getMapCount,
  getMapInfoFromID,
  loadMap,
  mapConverter,
} from "@infernus/map-loader";
import path from "node:path";

GameMode.onInit(async ({ next }) => {
  const start = Date.now();

  await mapConverter({
    input: path.resolve("./scriptfiles/us_mapas.pwn"),
    output: path.resolve("./scriptfiles/us_mapas.txt"),
    removeOutput: true,
  });

  const end = Date.now();

  console.log((end - start) / 1000 + "s");

  const mapId = await loadMap({
    source: path.resolve("./scriptfiles/us_mapas.txt"),
    onLoaded(objects, removedBuilding) {
      console.log(objects.length, removedBuilding.length);
    },
  });

  console.log(mapId);

  const info = getMapInfoFromID(mapId);

  console.log(info);

  console.log(getMapCount());

  return next();
});
```
npm package: @infernus/mapandreas
Description: A wrapper of the popular SA-MP MapAndreas plugin for samp-node.
Author: dockfries
Latest version: 0.3.2

# @infernus/mapandreas

[![npm](https://img.shields.io/npm/v/@infernus/mapandreas)](https://www.npmx.dev/package/@infernus/mapandreas) ![npm](https://img.shields.io/npm/dw/@infernus/mapandreas) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/mapandreas)

A wrapper of the popular [SA-MP MapAndreas plugin](https://github.com/philip1337/samp-plugin-mapandreas) for samp-node.

## Getting started

```sh
pnpm add @infernus/core @infernus/mapandreas
```

## Example

```ts
import { GameMode } from "@infernus/core";
import { MapAndreas, MapAndreasMode } from "@infernus/mapandreas";

GameMode.onInit(({ next }) => {
  MapAndreas.init(MapAndreasMode.Full, "scriptfiles/SAFull.hmap");

  let pos = MapAndreas.findAverageZ(20.001, 25.006);

  if (pos) {
    // Found position - position saved in 'pos'
  }
  return next();
});
```
npm package: @infernus/nex-ac
Description: A wrapper of the popular SA-MP nex-ac library for samp-node.
Author: dockfries
Latest version: 0.3.1

# @infernus/nex-ac

[![npm](https://img.shields.io/npm/v/@infernus/nex-ac)](https://www.npmjs.com/package/@infernus/nex-ac) ![npm](https://img.shields.io/npm/dw/@infernus/nex-ac) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/nex-ac)

A wrapper of the popular [SA-MP nex-ac library](https://github.com/NexiusTailer/Nex-AC/) for samp-node.

## Notice

- Mandatory use raknet and streamer
- Removed SKY and non-streamer code

## Getting started

```sh
pnpm add @infernus/core @infernus/raknet @infernus/nex-ac
```

## Example

```ts
import { GameMode } from '@infernus/core'
import { $t, antiCheatKickWithDesync, defineNexACConfig, onCheatDetected } from '@infernus/nex-ac'

// other imports and code

defineNexACConfig(() => {
  return {
    LOCALE: 'en_US',
    DEBUG: true,
  }
})

onCheatDetected(({ player, ipAddress, type, code, next }) => {
  if (type) {
    GameMode.blockIpAddress(ipAddress, 0)
    return next()
  }

  switch (code) {
    case 5:
    case 6:
    case 11:
    case 14:
    case 22:
    case 32: {
      return next()
    }
    case 40: {
      player.sendClientMessage(-1, $t('MAX_CONNECTS_MSG', null, player.locale))
      break
    }
    case 41: {
      player.sendClientMessage(-1, $t('UNKNOWN_CLIENT_MSG', null, player.locale))
      break
    }
    default: {
      player.sendClientMessage(-1, $t('KICK_MSG', [code], player.locale))
      break
    }
  }
  antiCheatKickWithDesync(player, code)
  return next()
})
```
npm package: @infernus/qrcode
Description: Generate simple qrcode objects for infernus.
Author: dockfries
Latest version: 0.0.5

# @infernus/qrcode

[![npm](https://img.shields.io/npm/v/@infernus/qrcode)](https://www.npmx.dev/package/@infernus/qrcode) ![npm](https://img.shields.io/npm/dw/@infernus/qrcode) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/qrcode)

Generate simple qrcode objects for infernus.

## Getting started

```sh
pnpm add @infernus/core @infernus/qrcode
```

## Example

```ts
import {
  generateQRText,
  createQRObject,
  setObjectQRMaterial,
} from "@infernus/qrcode";
import { PlayerEvent } from "@infernus/core";

PlayerEvent.onCommandText("qr", ({ player, subcommand, next }) => {
  const { x, y, z } = player.getPos();

  const qrText = generateQRText("lmao");
  const obj = createQRObject(
    qrText,
    {
      x: x + 1,
      y: y + 1,
      z: z + 1,
      rx: 0,
      ry: 0,
      rz: 0,
      playerId: player.id,
      drawDistance: 300,
    },
    {
      backColor: 0xff000000,
    },
  );

  Streamer.update(player, StreamerItemTypes.OBJECT);
  player.sendClientMessage(-1, `qrcode: created id: ${obj.id}`);

  console.log(qrText);

  setTimeout(() => {
    const qrText2 = generateQRText("oaml");
    setObjectQRMaterial(obj, qrText2, {
      backColor: 0xffffff00,
    });
    player.sendClientMessage(-1, `qrcode: updated id: ${obj.id}`);
  }, 10 * 1000);

  setTimeout(() => {
    player.sendClientMessage(-1, `qrcode: destroyed id: ${obj.id}`);
    obj.destroy();
  }, 20 * 1000);

  return next();
});
```
npm package: @infernus/query
Description: Simple API for send SA-MP queries with TypeScript Language.
Author: dockfries
Latest version: 0.1.2

# @infernus/query

[![npm](https://img.shields.io/npm/v/@infernus/query)](https://www.npmx.dev/package/@infernus/query) ![npm](https://img.shields.io/npm/dw/@infernus/query) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/query)

## Getting started

```sh
pnpm add @infernus/query
```

Simple API for send SA-MP queries with TypeScript Language.

Special thanks to [sampquery-c](https://github.com/Louzindev/sampquery-c).

## Example

```ts
import { RequestPacket, sendQuery } from "@infernus/query";

async function main() {
  try {
    const serverInfo = await sendQuery({
      address: "127.0.0.1",
      port: 7777,
      opcode: RequestPacket.INFORMATION,
    });

    if (!serverInfo) {
      console.error("No response received from the server.");
      return;
    }

    console.log(`Server ${serverInfo.hostname}`);
    console.log(`GameMode: ${serverInfo.gameMode}`);
    console.log(`Language: ${serverInfo.language}`);
    console.log(`Max players: ${serverInfo.maxPlayers}`);
    console.log(`Online players: ${serverInfo.playerCount}`);
  } catch (err) {
    if (err instanceof Error) {
      console.error(`Error: ${err.message}`);
    }
  }
}

main();
```
npm package: @infernus/raknet
Description: A wrapper of the popular open.mp raknet plugin for samp-node.
Author: dockfries
Latest version: 0.13.2

# @infernus/raknet

[![npm](https://img.shields.io/npm/v/@infernus/raknet)](https://www.npmx.dev/package/@infernus/raknet) ![npm](https://img.shields.io/npm/dw/@infernus/raknet) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/raknet)

A wrapper of the popular [open.mp raknet plugin](https://github.com/katursis/Pawn.RakNet) for samp-node.

**You must use an existing [polyfill](https://github.com/dockfries/infernus-starter/blob/main/gamemodes/polyfill/raknet.inc) or compile the corresponding GameMode based on it before you can use it.**

## Getting started

```sh
pnpm add @infernus/core @infernus/raknet
```

## Example

```ts
import { Player } from "@infernus/core";
import {
  BitStream,
  IPacket,
  PacketIdList,
  OnFootSync,
  BulletSync,
} from "@infernus/raknet";
import type { IBulletSync } from "@infernus/raknet";

IPacket(PacketIdList.OnFootSync, ({ playerId, bs, next }) => {
  const sync = new OnFootSync(bs).readSync();
  console.log(playerId, sync);
  return next();
});

function sendBulletData(from: Player, to: Player | -1, data: IBulletSync) {
  const bs = new BulletSync(new BitStream());
  bs.writeSync(data);
  bs.sendPacket(to);
  bs.delete();
}
```
npm package: @infernus/rec
Description: File format converter from `.rec` to `.json` and vice versa, which NPCs use in SA-MP to play back recordings.
Author: dockfries
Latest version: 0.0.4

# @infernus/rec

[![npm](https://img.shields.io/npm/v/@infernus/rec)](https://www.npmx.dev/package/@infernus/rec) ![npm](https://img.shields.io/npm/dw/@infernus/rec) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/rec)

## Getting started

```sh
pnpm add @infernus/rec
```

File format converter from `.rec` to `.json` and vice versa, which NPCs use in SA-MP to play back recordings.

Special thanks to [samp-rec-to-csv](https://github.com/WoutProvost/samp-rec-to-csv).

## Example

```ts
import type { RecordTypesEnum } from "@infernus/rec";
import {
  jsonToRec,
  recToJson,
  HeaderDataBlock,
  OnFootDataBlock,
  VehicleDataBlock,
} from "@infernus/rec";

const hdb = new HeaderDataBlock();
hdb.type = RecordTypesEnum.ONFOOT;

const odb = new OnFootDataBlock();
odb.position = [1.1145, 1.514, 1.1919];

const hdb1 = new HeaderDataBlock();
hdb1.type = RecordTypesEnum.DRIVER;

const vdb = new VehicleDataBlock();
vdb.position = [1.1919, 1.514, 1.1145];

const onFootRec = "./on_foot_data.rec";
const inCarRec = "./vehicle_data.rec";
const testRec = "./test.rec";

jsonToRec(onFootRec, [hdb, odb]).then(() => {
  recToJson(onFootRec).then((res) => {
    console.log(res);
  });
});

jsonToRec(inCarRec, [hdb1, vdb]).then(() => {
  recToJson(inCarRec).then((res) => {
    console.log(res);
  });
});

recToJson(testRec).then((res) => {
  console.log(res);
});
```
npm package: @infernus/streamer
Description: A functional wrapper of the popular SA-MP streamer plugin (v2.9.6) for samp-node.
Author: dockfries
Latest version: 0.11.3
Deprecated: no longer need when you use core

# @infernus/streamer

[![npm](https://img.shields.io/npm/v/@infernus/streamer)](https://www.npmjs.com/package/@infernus/streamer) ![npm](https://img.shields.io/npm/dy/@infernus/streamer) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/streamer)

A functional wrapper of the popular [SA-MP streamer plugin](https://github.com/samp-incognito/samp-streamer-plugin) (v2.9.6) for samp-node.

## Notice

If you are using `@infernus/core` you should not use this package alone as core is already integrated internally.

## Getting started

```sh
pnpm add @infernus/streamer
```

## Example

```ts
import { CreateDynamicObject, GetDynamicObjectPos } from "@infernus/streamer";

// In a callback event, such as OnGameModeInit
samp.on("OnGameModeInit", () => {
  const exampleObj = CreateDynamicObject(
    2587,
    2001.195679,
    1547.113892,
    14.2834,
    0.0,
    0.0,
    96.0
  );
  const { x, y, z } = GetDynamicObjectPos(exampleObj);
  console.log(x, y, z);
});
```
npm package: @infernus/weapon-config
Description: A wrapper of the popular SA-MP weapon-config library for samp-node.
Author: dockfries
Latest version: 0.3.4

# @infernus/weapon-config

[![npm](https://img.shields.io/npm/v/@infernus/weapon-config)](https://www.npmx.dev/package/@infernus/weapon-config) ![npm](https://img.shields.io/npm/dw/@infernus/weapon-config) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@infernus/weapon-config)

A wrapper of the popular [SA-MP weapon-config library](https://github.com/oscar-broman/samp-weapon-config) for samp-node.

## Notice

- Mandatory use raknet and streamer
- Removed SKY

## Getting started

```sh
pnpm add @infernus/core @infernus/raknet @infernus/weapon-config
```

## Example

```ts
// if you using nex-ac, import it before weapon-config

import { GameMode } from "@infernus/core";
import {
  defineWeaponConfig,
  setVehiclePassengerDamage,
  setKnifeSync,
} from "@infernus/weapon-config";

// other imports and code

defineWeaponConfig(() => {
  return {
    DEBUG: true,
  };
});

GameMode.onInit(({ next }) => {
  setVehiclePassengerDamage(true);
  setKnifeSync(true);
  return next();
});
```