open-index/open-npm huggingface dataset:
npm package: @rupeshkumar28/scroll-paginator
Description: A React utility for infinite scroll and pagination
Author: Rupesh Kumar
Latest version: 1.0.9

# 📦 scroll-paginator

A simple and flexible React utility that adds **Infinite Scroll** and **Pagination** to your components.

---

## 🚀 Features

- 🔁 Infinite scrolling with `IntersectionObserver`
- 🔢 Simple and elegant pagination UI
- ⚛️ Built for React apps
- 🪶 Lightweight and easy to use

---

## 📦 Installation

Install the package using npm:

```bash
npm i @rupeshkumar28/scroll-paginator
```

```
import React, { useState, useEffect } from 'react';
import { InfiniteScroll } from "@rupeshkumar28/scroll-paginator";

const MyComponent = () => {
  const [items, setItems] = useState([]);
  const [hasMore, setHasMore] = useState(true);

  const loadMoreItems = () => {
    const newItems = Array.from({ length: 10 }, (_, index) => ({
      id: items.length + index + 1,
      name: `Item ${items.length + index + 1}`,
    }));

    setItems(prev => [...prev, ...newItems]);

    if (items.length + newItems.length >= 50) {
      setHasMore(false);
    }
  };

  useEffect(() => {
    loadMoreItems();
  }, []);

  return (
    <InfiniteScroll items={items} loadMore={loadMoreItems} hasMore={hasMore}>
      {items.map(item => (
        <div key={item.id}>{item.name}</div>
      ))}
    </InfiniteScroll>
  );
};

export default MyComponent;
```

```
import React, { useState } from 'react'
import { Pagination } from "@rupeshkumar28/scroll-paginator";

const MyComponent = () => {
  const [currentPage, setCurrentPage] = useState(1);
  const totalPages = 10;

  const handlePageChange = (page) => {
    setCurrentPage(page);
    // Fetch new data based on the page if needed
  };

  return (
    <div>
      <Pagination
        currentPage={currentPage}
        totalPages={totalPages}
        onPageChange={handlePageChange}
      />
      <p>Current Page: {currentPage}</p>
    </div>
  );
};

export default MyComponent;
```
npm package: @rupeshv/sdk
Description: 🛠 An SDK for building applications on top of SushiSwap.
Latest version: 1.0.0

# Sushiswap SDK

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

This modifies uniswap-sdk's UniswapV2Factory address. The new address for sushiswap is  `0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac`.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/sushiswap/sushiswap-sdk.git
```

Move into the sushiswap-sdk working directory

```sh
cd sushiswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @ruptjs/core
Description: Core library operates as a convenient wrapper for all Rupt API methods.
Latest version: 0.1.0

# Rupt SDK (core)

The Rupt Core SDK is designed to be used on the server. It operates as a convenient wrapper for all Rupt API methods and benefits from type safety and intellisense.

## Installation

```sh
yarn add @ruptjs/core
```

or if using npm

```sh
npm install @ruptjs/core
```

## Import and instantiation

Replace `API_SECRET` with your Rupt API secret key. This can be found in your [Rupt dashboard](https://www.rupt.dev/api_keys). Select the secret key for the api key you want to use.

```js
import RuptCore from '@ruptjs/core';
const Rupt = new RuptCore(API_SECRET);
```

## Usage

### List all challenges

Returns a list of your challenges. The challenges are returned sorted by creation date, with the most recently created challenges appearing first.

```js
const { data, total } = await Rupt.getChallenges({
  page: 1,
  limit: 10,
});
```

### Retrieve a challenge

Retrieve the details of an existing challenge. Supply the unique challenge ID from the Rupt SDK `onChallenge` callback.

```js
const { challenge } = await Rupt.getChallenge(CHALLENGE_ID);
```

### Retrieve challenge devices

Retrieve the list of devices for an existing challenge.

```js
const { data } = await Rupt.getChallengeDevices(CHALLENGE_ID);
```

### Kick a challenge device

Kick an attached device for an existing challenge. Supply the unique challenge ID from the Rupt SDK `onChallenge` callback. Supply the unique device ID from the list of devices for the challenge.

```js
await Rupt.kickChallengeDevice({
  challenge: "CHALLENGE_ID",
  device: "DEVICE_ID",
});
```

### Send challenge code

Send a two-factor authentication code for an existing challenge.

```js
await Rupt.sendChallengeCode({
  challenge: "CHALLENGE_ID",
  device: "DEVICE_ID",
  language: "en",
  channel: "email"
});
```

### Verify challenge code

Verify a device for an existing challenge.

```js
await Rupt.verifyChallengeCode({
  challenge: "CHALLENGE_ID",
  code: "123456"
});
```

### Complete challenge

Complete an existing challenge.

```js
const { challenge } = await Rupt.completeChallenge(CHALLENGE_ID);
```

### Evaluate an action

Evaluate an action for a user.

```js
const { verdict, reasons, challenge_id } = await Rupt.evaluate({
  action: "login",
  user: "USER_ID",
  fingerprint: ["FINGERPRINT_ID", "LAST_FINGERPRINT_ID"], // Use the rupt client sdk method `getHash` to get the fingerprint hashes from the browser
  ip: "IP_ADDRESS",
});
```

### Update a user

Update a user.

```js
await Rupt.updateUser({
  user: "USER_ID",
  email: "test@test.com",
  phone: "1234567890",
  metadata: {
    key: "value",
  },
  groups: [
    {
      id: "group_id",
      name: "Group Name",
      metadata: {
        key: "value",
      },
    },
  ],
});
```

To learn more, visit the [api documentation](https://www.rupt.dev/api/introuction)
npm package: @ruptjs/fingerprint
Description: Fingerprint library for Rupt.
Latest version: 3.0.0

# fingerprint

This library is used to collect signals from the client and send them to the server for visitor identification.

## Installation

```bash
yarn add @ruptjs/fingerprint
```

or if using npm

```bash
npm install @ruptjs/fingerprint
```

## Usage

```ts
import RuptFingerprint from '@ruptjs/fingerprint';

const fingerprint = new RuptFingerprint();

const hash = await fingerprint.get();
```
npm package: @ruptor/tailwind
Description: Ruptor extension for Tailwind CSS
Author: Kevin Yang
Latest version: 0.4.0

# Ruptor Tailwind CSS Extension

The Tailwind CSS extension for [Ruptor](https://ruptor.net).

## Installation

1. Inside your Ruptor project, run `npm install -D @ruptor/tailwind`
2. Add **@ruptor/tailwind** to the extension field inside `ruptor.config.js`.

```js
export default {
  extensions: [
    '@ruptor/tailwind'
  ]
}
```

## Changelog

### 0.4.0
- Updated to Tailwind CSS 3.0.6
- Removed `jit` mode in config since it's enabled by default
- Replaced `purge` with the new `content` option
- Removed `fs-extra` dependency to use Ruptor extension's new built-in util fs helper
- Added `.json` files in /pages directory and `.js` files /components directory to watch for Tailwind CSS class names
npm package: @rupurt/microstream
Description: Lightweight stream processing with Redis. Atomically manage streams and state together
Author: Alex Kwiatkowski
Latest version: 0.0.2

# Microstream

Lightweight stream processing with Redis. Atomically manage streams and state together

## Install

```
npm install @rupurt/microstream
```

## License

`microstream` is released under the [MIT license](./LICENSE)
npm package: @rurgos/ape-polygon-sdk
Description: 🛠 An SDK for building applications on top of Apeswap on polygon.
Latest version: 1.0.1

# QuickSwap SDK

This repository has been forked from [UniswapV2](https://github.com/Uniswap/uniswap-sdk)
It was updated from @burgossrodrigo to solve the init_code_hash issue and a couple other things.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/QuickSwap/QuickSwap-sdk.git
```

Move into the quickswap-sdk working directory

```sh
cd QuickSwap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh

> tsdx test

 PASS  test/constants.test.ts
  ● Console

    console.log test/constants.test.ts:10
      0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f

 PASS  test/token.test.ts
 PASS  test/router.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/trade.test.ts
 PASS  test/entities.test.ts
 PASS  test/route.test.ts
 PASS  test/pair.test.ts (5.081s)

Test Suites: 1 skipped, 9 passed, 9 of 10 total
Tests:       3 skipped, 124 passed, 127 total
Snapshots:   0 total
Time:        7.246s
Ran all test suites.
```
npm package: @rurgos/ape-sdk
Description: 🛠 An SDK for building applications on top of apeswap.
Latest version: 1.0.2

# ApeSwap SDK

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/ApeSwapFinance/apeswap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd apeswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @rurgos/pancake-sdk
Description: 🛠 An SDK for building applications on top of Pancakeswap.
Latest version: 1.0.1

# Pancakeswap SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://docs.uniswap.org/sdk/2.0.0/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/pancakeswap/pancake-swap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd pancakeswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @rurgos/quickswap-sdk
Description: 🛠 An SDK for building applications on top of Quickswap.
Latest version: 1.0.3

# QuickSwap SDK

This repository has been forked from [UniswapV2](https://github.com/Uniswap/uniswap-sdk)
It was updated from @burgossrodrigo to solve the init_code_hash issue and a couple other things.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/QuickSwap/QuickSwap-sdk.git
```

Move into the quickswap-sdk working directory

```sh
cd QuickSwap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh

> tsdx test

 PASS  test/constants.test.ts
  ● Console

    console.log test/constants.test.ts:10
      0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f

 PASS  test/token.test.ts
 PASS  test/router.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/trade.test.ts
 PASS  test/entities.test.ts
 PASS  test/route.test.ts
 PASS  test/pair.test.ts (5.081s)

Test Suites: 1 skipped, 9 passed, 9 of 10 total
Tests:       3 skipped, 124 passed, 127 total
Snapshots:   0 total
Time:        7.246s
Ran all test suites.
```
npm package: @rurgos/sdk-mdex
Description: 🛠 An SDK for building applications on heco for myself <3.
Author: burgossrodrigo
Latest version: 1.0.3

# Hokkfi Heco SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk).

You can refer to the Uniswap SDK documentation [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/HokkfiSwap/heco-sdk.git
```

Move into the heco-sdk working directory

```sh
cd heco-sdk/
```

Install dependencies

```sh
yarn
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 9 passed, 9 of 10 total
Tests:       3 skipped, 125 passed, 128 total
Snapshots:   0 total
Time:        2.387s
Ran all test suites.
✨  Done in 3.65s.
```
npm package: @rurgos/traderjoe-sdk
Description: 🛠 An SDK for building applications on top of Trader Joe.
Latest version: 1.0.1

# Trader Joe SDK
This repo contains tools for developing with [TraderJoe XYZ](https://www.traderjoexyz.com).

## Running
This project uses standard npm and yarn workflows.

Install dependencies

```sh
yarn
```

Compile
```sh
yarn build
```

## Installation
This project is available as an npm package. Add to your project with `npm install @traderjoe-xyz/sdk`

## Attribution
This code was adapted from this Uniswap repo: [uniswap-sdk](https://github.com/Uniswap/sdk).
npm package: @rurgos/v3-sdk-goerlic
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 3.9.0

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @rurino/core
Description: Core utilities for the @rurino project.
Author: KCFindstr
Latest version: 0.0.6

# @rurino/core

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![NPM package](https://img.shields.io/npm/v/%40rurino%2Fcore)](https://www.npmjs.com/package/@rurino/core)
[![Build](https://github.com/rurimegu/core/actions/workflows/build.yaml/badge.svg)](https://github.com/rurimegu/core/actions/workflows/build.yaml)

Collection of core utilities for the @rurino project.
npm package: @rurino/react-utils
Description: React utilities for the @rurino project.
Author: KCFindstr
Latest version: 0.0.4

# @rurino/react-utils

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![NPM package](https://img.shields.io/npm/v/%40rurino%2Freact-utils)](https://www.npmjs.com/package/@rurino/react-utils)
[![Build](https://github.com/rurimegu/react-utils/actions/workflows/build.yaml/badge.svg)](https://github.com/rurimegu/react-utils/actions/workflows/build.yaml)

React components and library functions for the rurino project.
npm package: @rurylox/sdk-node
Description: SDK de Node.js para el backend de Ruryauth.
Author: Rurylox
Latest version: 0.1.2

# @rurylox/sdk-node

Cliente mínimo para consumir el backend Rust de Ruryauth desde Node.js (sin dependencias externas).

## Instalación

Node 18+ (fetch nativo) o trae tu propio `fetch` con `fetchImpl`.

**Base URL recomendada por entorno:** define `RURYAUTH_BASE_URL` (o `RURYAUTH_URL`) en tu `.env` o variables de entorno. El SDK la toma automáticamente. Si no existe, usa `http://127.0.0.1:8080`.

### Local (mientras desarrollas el backend)

```bash
# pnpm
pnpm add ./sdk/node
# npm
npm install ./sdk/node
# yarn
yarn add ./sdk/node
```

### Si se publica en un registry

```bash
pnpm add @rurylox/sdk-node
```

## Uso rápido

```bash
# Dentro del repo
node -e "const { RuryauthClient } = require('./sdk/node'); console.log(new RuryauthClient().baseUrl);"
```

Si quieres usarlo desde otro proyecto, puedes referenciarlo con `file:` en tu `package.json` o copiar `index.js`.

## Uso rápido

```js
// Si lo instalaste con file: usa la ruta al paquete
const { RuryauthClient } = require('@rurylox/sdk-node');

const auth = new RuryauthClient({ baseUrl: 'http://127.0.0.1:8080' });

async function demo() {
  await auth.health(); // { status: "ok" }
  await auth.login('correo@dominio.com'); // envía código y auto-registra si no existe
  // ...
}
```

Si prefieres no pasar la URL en código, exporta en tu entorno:

```bash
export RURYAUTH_BASE_URL=https://auth.midominio.com
# luego simplemente:
const auth = new RuryauthClient();
```

## API

- `new RuryauthClient({ baseUrl?, timeoutMs?, fetchImpl? })`
  - `baseUrl`: por defecto `http://127.0.0.1:8080`.
  - `timeoutMs`: por defecto `8000`.
  - `fetchImpl`: opcional si tu entorno no tiene `fetch` global.
- `health()` → `GET /health`.
- `login(email)` → `POST /login` (auto-registro).
- `sendCode(email)` → `POST /send-code` (no auto-registro).
- `verifyCode(email, code)` → `POST /verify-code` → `{ token, email, redirect, message }`.
- `me(token)` → `GET /me` con `Authorization: Bearer <token>`.
- `register(username, password)` → `POST /register` (flujo legacy).

### Errores

Los errores de red o HTTP no 2xx lanzan `RuryauthError` con:
- `status`: código HTTP.
- `body`: JSON devuelto por el backend (o texto).
- `message`: resumen amigable.

Ejemplo:

```js
try {
  await auth.verifyCode('correo@dominio.com', 'XXXXXX');
} catch (err) {
  if (err.status === 401) console.log('Código incorrecto');
  else console.error(err);
}
```
npm package: @rus-anonym/commands-manager
Description: ## Examples
Latest version: 1.2.0

# @rus-anonym/commands-manager

## Examples

### Commands

#### TextCommand

```typescript
import { TRawFunc, ICommandParams, Command } from "@rus-anonym/commands-manager";

class TextCommand<Func extends TRawFunc> extends Command<Func> {
    private _trigger: string;

    constructor(params: ICommandParams<Func> & { trigger: string }) {
        super(params);
        this._trigger = params.trigger;
    }

    public check(value: string): boolean {
        return this._trigger === value;
    }
}

const cmd = new TextCommand({ func: (log: string) => log, trigger: "hello" });

cmd.check("hello"); // true
cmd.check("hey"); // false
cmd.execute(); // Expected N arguments, but got 0 ts(2554)
cmd.execute("hey"); // Promise<"hey">
```

### Manager

#### Template

```typescript
import { Manager } from "@rus-anonym/commands-manager";

const manager = new Manager([
    new TextCommand({ func: (log: string) => log, trigger: "hello" }),
    new TextCommand({ func: () => 2, trigger: "1+1" }),
    new TextCommand({
        func: (x: number, y: number) => x * y,
        trigger: "multiply",
    }),
]);

manager.find("hello"); // TextCommand<{ func: (log: string) => string; }>
manager.find("1+1"); // TextCommand<{ func: () => number; }>
manager.find("multiply"); // TextCommand<{ func: (x: number, y: number) => number; }>
```
npm package: @rusamer/env-guards
Description: Secure Node.js/Next.js SDK for Env.Guards
Latest version: 0.1.1

# Env.Guards SDK

A secure, server-side Node.js and Next.js SDK for fetching environment bundles from the Env.Guards Data Plane.

## Features

- **Secure by Default**: Throws if executed in a browser environment.
- **In-Memory Only**: Never writes secrets to disk or logs them.
- **Auto-Auth**: Exchanges `ENV_GUARDS_API_KEY` for short-lived JWTs.
- **Smart Caching**: Caches tokens and bundles in memory until expiry.
- **Reliable**: Automatic retry on 401 (token expiry) and network resiliency.
- **Next.js Ready**: Dedicated `envguards/next` entry point with `server-only` guards.

## Installation

```bash
npm install @rusamer/envguards
# or
pnpm add @rusamer/envguards
# or
yarn add @rusamer/envguards
```

## Configuration

The SDK automatically reads the following environment variables:

| Variable | Description |
|C...|...|
| `ENV_GUARDS_API_URL` | URL of the Env.Guards Data Plane |
| `ENV_GUARDS_API_KEY` | Your project Service Key |
| `ENV_GUARDS_PROJECT` | Project ID |
| `ENV_GUARDS_ENV` | Environment Name (e.g., prod) |
| `ENV_GUARDS_SERVICE` | Service Name |

```env
ENV_GUARDS_API_URL=https://api.example.com
ENV_GUARDS_API_KEY=sk_xxx
ENV_GUARDS_PROJECT=myapp
ENV_GUARDS_ENV=prod
ENV_GUARDS_SERVICE=web
```

## Usage

### Node.js

```typescript
import { loadEnv } from '@rusamer/envguards';

async function main() {
  const env = await loadEnv();
  
  console.log(process.env.MY_SECRET); // Accessed from process.env
  console.log(env.MY_SECRET);         // Or from the returned object
}

main();
```

### Next.js (App Router / Server Actions)

Use the Next.js specific helper to ensure server-side only execution.

```typescript
// src/lib/env.ts
import { loadServerEnv } from '@rusamer/envguards/next';

export async function getSecrets() {
  return loadServerEnv();
}
```

```typescript
// src/app/page.tsx
import { getSecrets } from '@/lib/env';

export default async function Page() {
  const env = await getSecrets();
  return <div>Secret length: {env.API_KEY.length}</div>;
}
```

## Security Notes

1. **Server-Only**: This SDK is designed strictly for server environments. It explicitly checks for `window` and imports `server-only` in the Next.js entrypoint.
2. **No Persistence**: Secrets are held in memory. Restarting the server will trigger a fresh fetch.
3. **Logs**: The SDK does not log secret values.

## For Maintainers

### Build

```bash
pnpm build
```

### Test

```bash
pnpm test
```

### Publish

1. `npm version patch`
2. `npm publish`
npm package: @rusamer/envgod
Description: Secure Node.js/Next.js SDK for EnvGod
Latest version: 0.0.5

# EnvGod SDK

A secure, server-side Node.js and Next.js SDK for fetching environment bundles from the EnvGod Data Plane.

## Features

- **Secure by Default**: Throws if executed in a browser environment.
- **In-Memory Only**: Never writes secrets to disk or logs them.
- **Auto-Auth**: Exchanges `ENVGOD_API_KEY` for short-lived JWTs.
- **Smart Caching**: Caches tokens and bundles in memory until expiry.
- **Reliable**: Automatic retry on 401 (token expiry) and network resiliency.
- **Next.js Ready**: Dedicated `envgod/next` entry point with `server-only` guards.

## Installation

```bash
npm install @rusamer/envgod
# or
pnpm add @rusamer/envgod
# or
yarn add @rusamer/envgod
```

## Configuration

The SDK automatically reads the following environment variables:

| Variable | Description |
|C...|...|
| `ENVGOD_API_URL` | URL of the EnvGod Data Plane |
| `ENVGOD_API_KEY` | Your project Service Key |
| `ENVGOD_PROJECT` | Project ID |
| `ENVGOD_ENV` | Environment Name (e.g., prod) |
| `ENVGOD_SERVICE` | Service Name |

```env
ENVGOD_API_URL=https://api.example.com
ENVGOD_API_KEY=sk_xxx
ENVGOD_PROJECT=myapp
ENVGOD_ENV=prod
ENVGOD_SERVICE=web
```

## Usage

### Node.js

```typescript
import { loadEnv } from '@rusamer/envgod';

async function main() {
  const env = await loadEnv();
  
  console.log(process.env.MY_SECRET); // Accessed from process.env
  console.log(env.MY_SECRET);         // Or from the returned object
}

main();
```

### Next.js (App Router / Server Actions)

Use the Next.js specific helper to ensure server-side only execution.

```typescript
// src/lib/env.ts
import { loadServerEnv } from '@rusamer/envgod/next';

export async function getSecrets() {
  return loadServerEnv();
}
```

```typescript
// src/app/page.tsx
import { getSecrets } from '@/lib/env';

export default async function Page() {
  const env = await getSecrets();
  return <div>Secret length: {env.API_KEY.length}</div>;
}
```

## Security Notes

1. **Server-Only**: This SDK is designed strictly for server environments. It explicitly checks for `window` and imports `server-only` in the Next.js entrypoint.
2. **No Persistence**: Secrets are held in memory. Restarting the server will trigger a fresh fetch.
3. **Logs**: The SDK does not log secret values.

## For Maintainers

### Build

```bash
pnpm build
```

### Test

```bash
pnpm test
```

### Publish

1. `npm version patch`
2. `npm publish`
npm package: @rusbh/react-pdf-layout
Description: Resolve overall document component's layout
Author: Diego Muracciole
Latest version: 3.7.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @react-pdf/layout
npm package: @rush18/node-backend
Description: Project generator: Express + TypeScript backend scaffold
Author: Shailesh
Latest version: 1.0.40

# 🚀 Node Backend CLI

A modern, flexible, open-source backend project generator. Create full backend applications in **seconds**, powered by your choice of **Express**, **Fastify**, **Hono**, or **NestJS**.

---

## 📦 Create a Project

```bash
npx @rush18/node-backend my-app
```

You will be prompted to choose:

* Language → TypeScript / JavaScript
* Framework → Express / Fastify / Hono / NestJS
* Database → Prisma / Mongoose / None
* Extras → Docker Support / Prettier + ESLint

---

## 📁 Project Structure

```
my-app/
 ├── src/
 │   ├── routes/
 │   ├── controllers/
 │   ├── middleware/
 │   ├── config/
 │   ├── app.(ts|js)
 │   └── server.(ts|js)
 ├── package.json
 ├── tsconfig.json
 ├── Dockerfile
 ├── docker-compose.yml
 ├── .prettierrc
 ├── .eslintrc.json
 ├── .eslintignore
 └── README.md
```

---

## 🛠 Built With

* Node.js
* Express / Fastify / Hono / NestJS
* Prisma / Mongoose
* TypeScript / JavaScript (ESM)
* Docker
* ESLint + Prettier

---

## ▶️ Run the Project

```bash
cd my-app
npm install
npm run dev
```

For NestJS:

```bash
npm run start:dev
```

---

## 🐳 Docker Support

If selected, the CLI generates:

* `Dockerfile`
* `docker-compose.yml`

Run:

```bash
docker compose up --build
```

---

## ✨ ESLint + Prettier

If enabled, you get:

* `.eslintrc.json`
* `.prettierrc`
* `.eslintignore`

Run lint:

```bash
npm run lint
```

---

## 📤 Deployment

### Node

```bash
npm run build
npm start
```

### Docker

```bash
docker compose up -d
```

---

## 🧭 Roadmap

* Auth templates
* CRUD module generator
* Swagger/OpenAPI generation
* Plugin system

---

## 📝 License

MIT © 2024 @rush18

---

## ⭐ Support

If you find this project useful, please give it a **star** ⭐ on GitHub!
npm package: @rushable/align-icons
Description: align ui custom icons
Latest version: 0.0.6

# @rushable/align-icons

- [figma 设计图](https://www.figma.com/design/QO5AyKK3U1gVX4Ihuf7wDv/AlignUI%2B%5B1.0%5D%2BClone?node-id=2203-38356&node-type=frame&m=dev)

#### 1. 对于不需要特殊定义颜色并且是正方形的 icon，采用自动生成 React 组件的方式

1.  按照 icon 分类命名 svg 文件名称，名称格式为 xxx-xxx 这种，均已小写字母开头
2.  将修改好名称的 svg 文件夹放到 source 目录
3.  执行 npm run compiler 命令，然后在 src/auto_icons 目录下就会生成相应的 React 组件, [compiler 代码借鉴自 icon-garden](https://github.com/yijinc/icon-garden)
4.  在 docs 编写对应 icon 预览
5.  发布 npm: npm publish, 部署 site: npm deploy

#### 2. 对于需要特殊定义的 icon(如 payment)，采用手动创建 React 组件

1.  在 manual_icons 目录下面根据 icon 类别进行手动创建组件，和老的 @rushable/icons 创建方式一致
2.  将创建好的组件在 src/index.ts 里面导出
3.  在 docs 编写对应网站预览代码
4.  发布 npm: npm publish, 部署 site: npm deploy

#### 3. svg tsx 由于某些属性为短横线连接导致 dev 会 warning

1. 在组件生成完成后执行 npm run lint 观察是否有报错
2. 执行 npm run lint:fix
npm package: @rushable/email-editor
Description: A react library developed with dumi
Latest version: 0.0.9

# @rushable/email-editor

[![NPM version](https://img.shields.io/npm/v/@rushable/email-editor.svg?style=flat)](https://npmjs.org/package/@rushable/email-editor)
[![NPM downloads](http://img.shields.io/npm/dm/@rushable/email-editor.svg?style=flat)](https://npmjs.org/package/@rushable/email-editor)

A react library developed with dumi

## Usage

TODO

## Options

TODO

## Development

```bash
# install dependencies
$ pnpm install

# develop library by docs demo
$ pnpm start

# build library source code
$ pnpm run build

# build library source code in watch mode
$ pnpm run build:watch

# build docs
$ pnpm run docs:build

# Locally preview the production build.
$ pnpm run docs:preview

# check your project for potential problems
$ pnpm run doctor
```

## LICENSE

MIT
npm package: @rushable/icon2
Description: A react library developed with dumi
Latest version: 0.0.6

# @rushable/icon2

- [figma 设计图](https://www.figma.com/file/7Ck2E4yVCYfVskouRdL2RA/Rushable-Icon-2?node-id=0%3A1&mode=dev)

#### 1. 对于不需要特殊定义颜色并且是正方形的 icon，采用自动生成 React 组件的方式

1.  按照 icon 分类命名 svg 文件名称，名称格式为 xxx-xxx 这种，均已小写字母开头
2.  将修改好名称的 svg 文件夹放到 source 目录
3.  执行 npm run compiler 命令，然后在 src/auto_icons 目录下就会生成相应的 React 组件, [compiler 代码借鉴自 icon-garden](https://github.com/yijinc/icon-garden)
4.  在 docs 编写对应 icon 预览
5.  发布 npm: npm publish, 部署 site: npm deploy

#### 2. 对于需要特殊定义的 icon(如 payment)，采用手动创建 React 组件

1.  在 manual_icons 目录下面根据 icon 类别进行手动创建组件，和老的 @rushable/icons 创建方式一致
2.  将创建好的组件在 src/index.ts 里面导出
3.  在 docs 编写对应网站预览代码
4.  发布 npm: npm publish, 部署 site: npm deploy

#### 3. svg tsx 由于某些属性为短横线连接导致 dev 会 warning

1. 在组件生成完成后执行 npm run lint 观察是否有报错
2. 执行 npm run lint:fix
npm package: @rushant11/react-native-use-app-state
Description: A tiny hook to make React Native AppState usage simple and reliable.
Author: Rushant Golakiya
Latest version: 1.0.6

# react-native-use-app-state

## Installation

```bash
npm install @rushant11/react-native-use-app-state
# or
yarn add @rushant11/react-native-use-app-state
```

## Usage

```typescript
import { useAppState } from '@rushant11/react-native-use-app-state';

const App = () => {
  const currentStatus = useAppState({
    onForeground: () => {
      console.log('App successfully came to foreground!');
      // Good place to refetch data or update user status
    },
    onBackground: () => {
      console.log('App went to background!');
      // Good place to save state or pause tasks
    },
    onChange: (status) => {
      console.log('AppState changed to:', status);
    },
  });

  return (
    <View>
      <Text>Current State: {currentStatus}</Text>
    </View>
  );
};
```

## API

### `useAppState(options)`

#### Options
| Name | Type | Description |
|Args|---|---|
| `onForeground` | `() => void` | Callback fired when app transitions from background/inactive to active. |
| `onBackground` | `() => void` | Callback fired when app transitions from active to background/inactive. |
| `onChange` | `(status: AppStateStatus) => void` | Callback fired on any state change. |

#### Returns
- `AppStateStatus`: The current state of the app ('active', 'background', 'inactive', etc.).

## License
MIT
npm package: @rushcms/cli
Description: CLI for RushCMS
Latest version: 0.2.0

# @rushcms/cli

The official Command Line Interface for [RushCMS](https://rushcms.com).

## Installation

```bash
pnpm add -D @rushcms/cli
# or
npm install -D @rushcms/cli
# or
yarn add -D @rushcms/cli
```

## Commands

### `codegen`

Generates TypeScript definitions for your RushCMS content schema (Custom Blocks, etc.).

```bash
npx rushcms codegen --out src/types/rushcms-env.d.ts
```

**Options:**

*   `--out <path>`: Output file path (default: `rushcms-env.d.ts`)

## Configuration

Currently, the CLI uses a mocked schema for demonstration purposes. Future versions will read from `rushcms.config.js` to fetch your live schema from the API.

## Usage with TypeScript

Once generated, include the types in your project (or let TypeScript pick them up if they are in your source root).

```typescript
import { Block } from '@rushcms/types'

// Your custom blocks are now typed!
```
npm package: @rushcms/client
Description: TypeScript API client for RushCMS
Latest version: 2.1.0

# @rushcms/client

TypeScript API client for RushCMS. Works in Node.js, browsers, React Native, and any JavaScript environment.

## Installation

```bash
pnpm add @rushcms/client @rushcms/types
```

## Usage

### Initialize the Client

```typescript
import { RushCMSClient } from '@rushcms/client'

const client = new RushCMSClient({
	baseUrl: 'https://api.rushcms.com',
	apiToken: 'your-api-token',
	siteSlug: 'your-site-slug',
	cache: {
		enabled: true,
		ttl: 7200
	}
})
```

### Fetch Entries

```typescript
const response = await client.getEntries(collectionId, {
	page: 1,
	per_page: 10,
	tags: ['tutorial', 'php'],
	tag_operator: 'all'
})

console.log(response.data)
console.log(response.meta)
```

### Fetch Single Entry

```typescript
const entry = await client.getEntry(collectionId, 'entry-slug')

console.log(entry.title)
console.log(entry.data.content)
```

### Cache Management

```typescript
client.clearCache()

client.deleteFromCache('/collections/5/entries')
```

## Error Handling

```typescript
import {
	RushCMSError,
	RushCMSNotFoundError,
	RushCMSUnauthorizedError,
	RushCMSForbiddenError
} from '@rushcms/client'

try {
	const entry = await client.getEntry(5, 'non-existent-slug')
} catch (error) {
	if (error instanceof RushCMSNotFoundError) {
		console.log('Entry not found')
	} else if (error instanceof RushCMSUnauthorizedError) {
		console.log('Invalid API token')
	} else if (error instanceof RushCMSForbiddenError) {
		console.log('No permission')
	} else if (error instanceof RushCMSError) {
		console.log('API error:', error.message)
	}
}
```

## API Reference

### `RushCMSClient`

#### Constructor Options

```typescript
interface RushCMSClientConfig {
	baseUrl: string
	apiToken: string
	siteSlug: string
	cache?: {
		enabled: boolean
		ttl: number
	}
}
```

#### Methods

##### `getEntries(collectionId, params?)`

Fetch paginated entries from a collection.

```typescript
const response = await client.getEntries(5, {
	page: 1,
	per_page: 10,
	tags: ['tutorial'],
	tag_operator: 'any'
})
```

##### `getEntry(collectionId, slug)`

Fetch a single entry by slug.

```typescript
const entry = await client.getEntry(5, 'my-blog-post')
```

##### `clearCache()`

Clear all cached responses.

```typescript
client.clearCache()
```

##### `deleteFromCache(key)`

Delete a specific cache entry.

```typescript
client.deleteFromCache('/collections/5/entries?page=1')
```

## License

MIT
npm package: @rushcms/types
Description: TypeScript type definitions for RushCMS SDK
Latest version: 2.1.0

# @rushcms/types

TypeScript type definitions for RushCMS SDK.

## Installation

```bash
pnpm add @rushcms/types
```

## Usage

```typescript
import type {
	Entry,
	Block,
	PaginatedResponse,
	EntriesQueryParams,
	ImageBlock,
	CodeBlock
} from '@rushcms/types'
```

## Type Categories

### API Types
- `Entry` - Complete entry structure
- `PaginatedResponse<T>` - Paginated API responses
- `EntriesQueryParams` - Query parameters for entries
- `Author` - Entry author information
- `FeaturedImage` - Featured image structure
- `Tag` - Tag structure
- `EntryMeta` - SEO metadata

### Block Types

#### Basic Blocks
- `RichTextBlock`
- `CalloutBlock`
- `ToggleBlock`
- `QuoteBlock`

#### Media Blocks
- `ImageBlock`
- `GalleryBlock`
- `VideoBlock`

#### Embed Blocks
- `YoutubeBlock`
- `EmbedBlock`
- `BookmarkBlock`

#### Advanced Blocks
- `AlertBlock`
- `DividerBlock`
- `CodeBlock`
- `ColumnsBlock`
- `ButtonBlock`

### TipTap Types
- `TipTapContent` - TipTap document structure
- `TipTapNode` - TipTap node types
- `TipTapMark` - TipTap text marks

## License

MIT
npm package: @rushcodes/ion-phaser-react
Description: React specific wrapper for @ion-phaser/core
Latest version: 2.0.2

# IonPhaser for React

## Introduction
React specific wrapper for [ion-phaser](https://github.com/proyecto26/ion-phaser) component.

## Why?
*Most people who use React don’t use [Web Components](https://reactjs.org/docs/web-components.html)* and there're some limitations handling data with [Custom Components](https://custom-elements-everywhere.com/) from React.
Thus, this **React component** was created not to need to reference their **Custom Elements** using a **ref** and manually attach the **game**, this makes working with [IonPhaser](https://github.com/proyecto26/ion-phaser) not cumbersome 👍🏻

## Usage

```tsx
import React, { useRef, useState } from 'react'
import Phaser from 'phaser'
import { IonPhaser } from '@ion-phaser/react'

const game = {
  width: "100%",
  height: "100%",
  type: Phaser.AUTO,
  scene: {
    init: function() {
      this.cameras.main.setBackgroundColor('#24252A')
    },
    create: function() {
      this.helloWorld = this.add.text(
        this.cameras.main.centerX, 
        this.cameras.main.centerY, 
        "Hello World", { 
          font: "40px Arial", 
          fill: "#ffffff" 
        }
      );
      this.helloWorld.setOrigin(0.5);
    },
    update: function() {
      this.helloWorld.angle += 1;
    }
  }
}

export default function App () {
  const gameRef = useRef(null)
  // Call `setInitialize` when you want to initialize your game! :)
  const [initialize, setInitialize] = useState(false)
  const destroy = () => {
    if (gameRef.current) {
      gameRef.current.destroy()
    }
    setInitialize(false)
  }
  return (
    <>
      <IonPhaser ref={gameRef} game={game} initialize={initialize} />
      <button onClick={() => setInitialize(true)}>Initialize</button>
      <button onClick={destroy}>Destroy</button>
    </>
  )
}
```


## Supporting 🍻
I believe in Unicorns 🦄
Support [me](http://www.paypal.me/jdnichollsc/2), if you do too.
[Professionally supported @ion-phaser/react is coming soon](https://tidelift.com/subscription/pkg/npm--ion-phaser-react?utm_source=npm--ion-phaser-react&utm_medium=referral&utm_campaign=readme)

## Happy coding 💯
Made with ❤️

<img width="150px" src="https://avatars0.githubusercontent.com/u/28855608?s=200&v=4" align="right">
npm package: @rushelasli/jikants
Description: TypeScript/JavaScript wrapper for the Jikan API v4 with built-in typings and caching support
Author: Rushel
Latest version: 1.1.2

# jikants

> Jikan API wrapper for TypeScript and Node.js with built-in typing and automatic caching.

## Features

- Fully typed with complete TypeScript definitions
- HTTP request caching with configurable TTL
- Logging support for debugging
- ESM with tree shaking support
- 100% endpoint coverage (all 101 Jikan API v4 endpoints)

## Installation

```bash
npm install @rushelasli/jikants axios axios-cache-interceptor
```

or
```bash
yarn add @rushelasli/jikants axios axios-cache-interceptor
```

or
```bash
bun add @rushelasli/jikants axios axios-cache-interceptor
```

## Quick Start

```ts
import { JikanClient } from '@rushelasli/jikants';

const jikan = new JikanClient();
const anime = await jikan.anime.getAnimeById(1);
console.log(anime.data.title);
```

## Documentation

View the full documentation and examples [on GitHub.](https://github.com/rushelasli/jikants/tree/main/docs)
npm package: @rushked/cli-plugin-typescript
Description: typescript plugin for vue-cli
Author: Evan You
Latest version: 3.3.0
Deprecated: this package has been deprecated

# @vue/cli-plugin-typescript

> typescript plugin for vue-cli

Uses TypeScript + `ts-loader` + [fork-ts-checker-webpack-plugin](https://github.com/Realytics/fork-ts-checker-webpack-plugin) for faster off-thread type checking.

## Configuration

TypeScript can be configured via `tsconfig.json`.

Since `3.0.0-rc.6`, `typescript` is now a peer dependency of this package, so you can use a specific version of TypeScript by updating your project's `package.json`.

This plugin can be used alongside `@vue/cli-plugin-babel`. When used with Babel, this plugin will output ES2015 and delegate the rest to Babel for auto polyfill based on browser targets.

## Injected Commands

If opted to use [TSLint](https://palantir.github.io/tslint/) during project creation, `vue-cli-service lint` will be injected.

## Caching

[cache-loader](https://github.com/webpack-contrib/cache-loader) is enabled by default and cache is stored in `<projectRoot>/node_modules/.cache/ts-loader`.

## Parallelization

[thread-loader](https://github.com/webpack-contrib/thread-loader) is enabled by default when the machine has more than 1 CPU cores. This can be turned off by setting `parallel: false` in `vue.config.js`.

## Installing in an Already Created Project

``` sh
vue add @vue/typescript
```

## Injected webpack-chain Rules

- `config.rule('ts')`
- `config.rule('ts').use('ts-loader')`
- `config.rule('ts').use('babel-loader')` (when used alongside `@vue/cli-plugin-babel`)
- `config.rule('ts').use('cache-loader')`
- `config.plugin('fork-ts-checker')`
npm package: @rushplay/babel-preset-react
Description: React-related transforms for @RushPlay needs.
Author: Leonard Kinday
Latest version: 0.1.1

# @rushplay/babel-preset-react

React-related transforms for @RushPlay needs.


## Installation

```
yarn add @rushplay/babel-preset-react
```


## Usage

Add to presets in your `.babelrc` (or use any other method to define presets list) before `react` preset:

```json
{
  "presets": [
    "@rushplay/react",
    "react"
  ]
}
```