open-index/open-npm huggingface dataset:
npm package: @ruxuwu/jin
Description: A description of your package
Author: Your Name
Latest version: 0.1.7

# Jin 插件系统

一个轻量级、灵活的 JavaScript/TypeScript 插件系统，基于 Vue 3 构建，支持动态加载和管理插件。

## 特性

- 🔌 插件生命周期管理
- 🚀 异步插件加载
- 🛠 TypeScript 支持
- 📦 支持 ESM 和 IIFE 格式
- 🔄 插件依赖管理
- 🎯 事件驱动的激活机制

## 安装

```bash
npm install @ruxuwu/jin

# 或使用 yarn
yarn add @ruxuwu/jin

# 或使用 pnpm
pnpm add @ruxuwu/jin
```

## 使用方法

### 基础使用

```typescript
import { SimplePluginManager, PluginManifest } from "@ruxuwu/jin";
// 创建插件管理器
const pluginManager = new SimplePluginManager();
// 创建插件清单
const manifest: PluginManifest = {
    id: "my-plugin",
    name: "My Plugin",
    version: "1.0.0",
    url: "https://example.com/my-plugin.js",
};

// 注册插件
await pluginManager.registerPlugin(manifest);

// 或者使用工厂函数注册插件
await pluginManager.registerPlugin({
    id: "local-plugin",
    name: "Local Plugin",
    version: "1.0.0"
}, async () => {
  // 返回插件实例
  return {
    activate(context) {
        // 插件激活时的逻辑
        console.log("Plugin activated!");
        // 注册需要在插件停用时释放的资源
        context.subscriptions.push({
            dispose: () => console.log("Resource disposed!")
        });
    },
    deactivate() {
        // 插件停用时的逻辑
        console.log("Plugin deactivated!");
    },
  };
});
// 设置共享的插件上下文
pluginManager.setPluginContext({
    api: {
        doSomething: () => console.log("Doing something...")
    }
});

// 激活插件
await pluginManager.activatePlugin("my-plugin");
await pluginManager.activatePlugin("local-plugin");
// 停用插件
await pluginManager.deactivatePlugin("my-plugin");
```

```html
<script src="https://example.com/my-plugin.js"></script>
<script>
    // Jin 会在全局创建 ruxuwu 对象
    const { pluginManager } = window.ruxuwu;
    // 注册插件
    window.ruxuwu.plugins.push({
        id: "my-browser-plugin",
        name: "My Browser Plugin",
        version: "1.0.0",
        url: "https://example.com/my-plugin.js"
    });
    // 激活插件
    pluginManager.activatePlugin("my-browser-plugin");
</script>
```

## 插件开发指南

### 插件结构

一个标准的 Jin 插件需要实现 `JinPlugin` 接口：

```typescript
interface JinPlugin {
  activate(context: PluginContext): void | Promise<void>;
  deactivate?(): void | Promise<void>;
}
```

### 插件上下文

插件上下文提供了与系统交互的能力：

```typescript
interface PluginContext {
    // 插件订阅的资源列表，这些资源将在插件停用时自动释放
    subscriptions: Disposable[];
    // 允许添加其他上下文属性
    [key: string]: any;
}

// 可释放资源接口
interface Disposable {
    dispose(): void;
}
```

### 插件清单

每个插件都需要一个清单文件来描述其基本信息：

```typescript
interface PluginManifest {
    // 插件唯一标识
    id: string;
    // 插件名称
    name: string;
    // 插件版本
    version: string;
    // 插件加载地址
    url: string;
    // 插件依赖项
    dependencies?: Record<string, string>;
    // 激活事件
    activationEvents?: string[];
}
```

## 构建和测试

```bash
# 安装依赖
pnpm install

# 构建
pnpm build

# 运行测试
pnpm test
```

## 许可证

MIT
npm package: @ruya.sa/create-payload-app
Description: CLI for easily starting new Payload project
Author: Payload
Latest version: 3.71.3

# Create Payload App

CLI for easily starting new Payload project

## Usage

```text

  USAGE

      $ npx create-payload-app
      $ npx create-payload-app my-project
      $ npx create-payload-app -n my-project -t website

  OPTIONS

      -n     my-payload-app         Set project name
      -t     template_name          Choose specific template

        Available templates:

        blank                       Blank Template
        website                     Website Template
        ecommerce                   E-commerce Template
        plugin                      Template for creating a Payload plugin
        payload-demo                Payload demo site at https://demo.payloadcms.com
        payload-website             Payload website CMS at https://payloadcms.com

      --use-npm                     Use npm to install dependencies
      --use-yarn                    Use yarn to install dependencies
      --use-pnpm                    Use pnpm to install dependencies
      --no-deps                     Do not install any dependencies
      -h                            Show help
```
npm package: @ruya.sa/db-d1-sqlite
Description: The officially supported D1 SQLite database adapter for Payload
Author: Payload
Latest version: 3.71.3

# Payload D1 SQLite Adapter

Official D1 SQLite adapter for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/db-d1-sqlite
```

## Usage

```ts
import { sqliteD1Adapter } from '@payloadcms/db-d1-sqlite'

export default buildConfig({
  // Your config goes here
  collections: [
    // Collections go here
  ],
  // Configure the D1 adapter here
  db: sqliteD1Adapter({
    // D1-specific arguments go here.
    // `binding` is required and should match the D1 database binding name in your Cloudflare Worker environment.
    binding: cloudflare.env.D1,
  }),
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/database/sqlite).
npm package: @ruya.sa/db-mongodb
Description: The officially supported MongoDB database adapter for Payload
Author: Payload
Latest version: 3.71.3

# Payload MongoDB Adapter

Official MongoDB adapter for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/db-mongodb
```

## Usage

```ts
import { buildConfig } from 'payload'
import { mongooseAdapter } from '@payloadcms/db-mongodb'

export default buildConfig({
  db: mongooseAdapter({
    url: process.env.DATABASE_URL,
  }),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/db-postgres
Description: The officially supported Postgres database adapter for Payload
Author: Payload
Latest version: 3.71.3

# Payload Postgres Adapter

Official Postgres adapter for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/db-postgres
```

## Usage

```ts
import { buildConfig } from 'payload'
import { postgresAdapter } from '@payloadcms/db-postgres'

export default buildConfig({
  db: postgresAdapter({
    pool: {
      connectionString: process.env.DATABASE_URL,
    },
  }),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/db-sqlite
Description: The officially supported SQLite database adapter for Payload
Author: Payload
Latest version: 3.71.3

# Payload SQLite Adapter

Official SQLite adapter for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/db-sqlite
```

## Usage

```ts
import { buildConfig } from 'payload/config'
import { sqliteAdapter } from '@payloadcms/db-sqlite'

export default buildConfig({
  db: sqliteAdapter({
    client: {
      url: process.env.DATABASE_URL,
    },
  }),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/db-vercel-postgres
Description: Vercel Postgres adapter for Payload
Author: Payload
Latest version: 3.71.3

# Payload Postgres Adapter

[Vercel Postgres](https://vercel.com/docs/storage/vercel-postgres) adapter for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/db-vercel-postgres
```

## Usage

### Explicit Connection String

```ts
import { buildConfig } from 'payload'
import { vercelPostgresAdapter } from '@payloadcms/db-vercel-postgres'

export default buildConfig({
  db: vercelPostgresAdapter({
    pool: {
      connectionString: process.env.DATABASE_URL,
    },
  }),
  // ...rest of config
})
```

### Automatic Connection String Detection

Have Vercel automatically detect from environment variable (typically `process.env.POSTGRES_URL`)

```ts
export default buildConfig({
  db: postgresAdapter(),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/email-nodemailer
Description: Payload Nodemailer Email Adapter
Author: Payload
Latest version: 3.71.3

# Nodemailer Email Adapter for Payload

This adapter allows you to send emails using the [Nodemailer](https://nodemailer.com/) library.

It abstracts all of the email functionality that was in Payload by default in 2.x into a separate package.

**NOTE:** Configuring email in Payload 3.0 is now completely optional. However, you will receive a startup warning that email is not configured and also a message if you attempt to send an email.

## Installation

```sh
pnpm add @payloadcms/email-nodemailer nodemailer
```

## Usage

### Using nodemailer.createTransport

```ts
import { nodemailerAdapter } from '@payloadcms/email-nodemailer'
import nodemailer from 'nodemailer'

export default buildConfig({
  email: nodemailerAdapter({
    defaultFromAddress: 'info@payloadcms.com',
    defaultFromName: 'Payload',
    // Any Nodemailer transport
    transport: await nodemailer.createTransport({
      host: process.env.SMTP_HOST,
      port: 587,
      auth: {
        user: process.env.SMTP_USER,
        pass: process.env.SMTP_PASS,
      },
    }),
  }),
})
```

### Using transportOptions

```ts
import { nodemailerAdapter } from '@payloadcms/email-nodemailer'

export default buildConfig({
  email: nodemailerAdapter({
    defaultFromAddress: 'info@payloadcms.com',
    defaultFromName: 'Payload',
    // Nodemailer transportOptions
    transportOptions: {
      host: process.env.SMTP_HOST,
      port: 587,
      auth: {
        user: process.env.SMTP_USER,
        pass: process.env.SMTP_PASS,
      },
    },
  }),
})
```

During development, if you pass nothing to `nodemailerAdapter`, it will use the [ethereal.email](https://ethereal.email) service.

This will log the ethereal.email details to console on startup.

```ts
import { nodemailerAdapter } from '@payloadcms/email-nodemailer'

export default buildConfig({
  email: nodemailerAdapter(), // This will be the old ethereal.email functionality
})
```
npm package: @ruya.sa/email-resend
Description: Payload Resend Email Adapter
Author: Payload
Latest version: 3.71.3

# Resend REST Email Adapter

This adapter allows you to send emails using the [Resend](https://resend.com) REST API.

## Installation

```sh
pnpm add @payloadcms/email-resend
```

## Usage

- Sign up for a [Resend](https://resend.com) account
- Set up a domain
- Create an API key
- Set API key as RESEND_API_KEY environment variable
- Configure your Payload config

```ts
// payload.config.js
import { resendAdapter } from '@payloadcms/email-resend'

export default buildConfig({
  email: resendAdapter({
    defaultFromAddress: 'dev@payloadcms.com',
    defaultFromName: 'Payload CMS',
    apiKey: process.env.RESEND_API_KEY || '',
  }),
})
```
npm package: @ruya.sa/kv-redis
Description: Redis KV adapter for Payload
Author: Payload
Latest version: 3.71.3

# Redis KV Adapter for Payload (beta)

This package provides a way to use [Redis](https://redis.io) as a KV adapter with Payload.

## Installation

```sh
pnpm add @payloadcms/kv-redis
```

## Usage

```ts
import { redisKVAdapter } from '@payloadcms/kv-redis'

export default buildConfig({
  collections: [Media],
  kv: redisKVAdapter({
    // Redis connection URL. Defaults to process.env.REDIS_URL
    redisURL: 'redis://localhost:6379',
    // Optional prefix for Redis keys to isolate the store. Defaults to 'payload-kv'
    keyPrefix: 'kv-storage',
  }),
})
```

Then you can access the KV storage using `payload.kv`:

```ts
await payload.kv.set('key', { value: 1 })
const data = await payload.kv.get('key')
payload.logger.info(data)
```
npm package: @ruya.sa/plugin-form-builder
Description: Form builder plugin for Payload CMS
Author: Payload
Latest version: 3.71.3

# Payload Form Builder Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to easily allow admin editors to build and manage forms within the admin panel.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-form-builder)
- [Documentation](https://payloadcms.com/docs/plugins/form-builder)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/form-builder.mdx)
npm package: @ruya.sa/plugin-import-export
Description: Import-Export plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload Import/Export Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to easily import and export data.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-import-export)
- [Documentation](https://payloadcms.com/docs/plugins/import-export)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/import-export.mdx)
npm package: @ruya.sa/plugin-mcp
Description: MCP (Model Context Protocol) capabilities with Payload
Author: Payload
Latest version: 3.71.3

# Payload MCP Plugin

A plugin for [Payload](https://github.com/payloadcms/payload). This plugin adds [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro) capabilities.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-mcp)
- [Documentation](https://payloadcms.com/docs/plugins/mcp)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/mcp.mdx)
npm package: @ruya.sa/plugin-nested-docs
Description: The official Nested Docs plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload Nested Docs Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to easily nest the documents of your application inside of one another.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-nested-docs)
- [Documentation](https://payloadcms.com/docs/plugins/nested-docs)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/nested-docs.mdx)
npm package: @ruya.sa/plugin-search
Description: Search plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload Search Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to generate records of your documents that are extremely fast to search on.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-search)
- [Documentation](https://payloadcms.com/docs/plugins/search)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/search.mdx)
npm package: @ruya.sa/plugin-sentry
Description: Sentry plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload Sentry Plugin

This plugin allows you to integrate [Sentry](https://sentry.io/) seamlessly with your [Payload](https://github.com/payloadcms/payload) application.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-sentry)
- [Documentation](https://payloadcms.com/docs/plugins/sentry)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/sentry.mdx)
npm package: @ruya.sa/plugin-seo
Description: SEO plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload SEO Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to manage SEO metadata from within your admin panel.

If you're using version 2.0.0 or higher of this plugin, you'll need to be using version 2.7.0 or higher of Payload.

If you're still on an older payload version, please use version 1.0.15.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-seo)
- [Documentation](https://payloadcms.com/docs/plugins/seo)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/seo.mdx)
npm package: @ruya.sa/plugin-stripe
Description: Stripe plugin for Payload
Author: Payload
Latest version: 3.71.3

# Payload Stripe Plugin

A plugin for [Payload](https://github.com/payloadcms/payload) to connect [Stripe](https://stripe.com) and Payload.

- [Source code](https://github.com/payloadcms/payload/tree/main/packages/plugin-stripe)
- [Documentation](https://payloadcms.com/docs/plugins/stripe)
- [Documentation source](https://github.com/payloadcms/payload/tree/main/docs/plugins/stripe.mdx)
npm package: @ruya.sa/richtext-lexical
Description: The officially supported Lexical richtext adapter for Payload
Author: Payload
Latest version: 3.71.7

# Payload Lexical Rich Text Editor

Lexical Rich Text Editor for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/richtext-lexical
```

## Usage

```ts
import { buildConfig } from 'payload'
import { lexicalEditor } from '@payloadcms/richtext-lexical'

export default buildConfig({
  editor: lexicalEditor({}),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/richtext-slate
Description: The officially supported Slate richtext adapter for Payload
Author: Payload
Latest version: 3.71.4

# Payload Slate Rich Text Editor

Slate Rich Text Editor for [Payload](https://payloadcms.com).

- [Main Repository](https://github.com/payloadcms/payload)
- [Payload Docs](https://payloadcms.com/docs)

## Installation

```bash
npm install @payloadcms/richtext-slate
```

## Usage

```ts
import { buildConfig } from 'payload'
import { slateEditor } from '@payloadcms/richtext-slate'

export default buildConfig({
  editor: slateEditor({}),
  // ...rest of config
})
```

More detailed usage can be found in the [Payload Docs](https://payloadcms.com/docs/configuration/overview).
npm package: @ruya.sa/storage-azure
Description: Payload storage adapter for Azure Blob Storage
Author: Payload
Latest version: 3.71.3

# Azure Blob Storage for Payload

This package provides a simple way to use [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) with Payload.

**NOTE:** This package removes the need to use `@payloadcms/plugin-cloud-storage` as was needed in Payload 2.x.

## Installation

```sh
pnpm add @payloadcms/storage-azure
```

## Usage

- Configure the `collections` object to specify which collections should use the Azure Blob Storage adapter. The slug _must_ match one of your existing collection slugs.
- When enabled, this package will automatically set `disableLocalStorage` to `true` for each collection.
- When deploying to Vercel, server uploads are limited with 4.5MB. Set `clientUploads` to `true` to do uploads directly on the client. You must allow CORS PUT method to your website.

```ts
import { azureStorage } from '@payloadcms/storage-azure'
import { Media } from './collections/Media'
import { MediaWithPrefix } from './collections/MediaWithPrefix'

export default buildConfig({
  collections: [Media, MediaWithPrefix],
  plugins: [
    azureStorage({
      collections: {
        media: true,
        'media-with-prefix': {
          prefix,
        },
      },
      allowContainerCreate: process.env.AZURE_STORAGE_ALLOW_CONTAINER_CREATE === 'true',
      baseURL: process.env.AZURE_STORAGE_ACCOUNT_BASEURL,
      connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
      containerName: process.env.AZURE_STORAGE_CONTAINER_NAME,
    }),
  ],
})
```

### Configuration Options

| Option                 | Description                                                              | Default |
| ---------------------- | ------------------------------------------------------------------------ | ------- |
| `enabled`              | Whether or not to enable the plugin                                      | `true`  |
| `collections`          | Collections to apply the Azure Blob adapter to                           |         |
| `allowContainerCreate` | Whether or not to allow the container to be created if it does not exist | `false` |
| `baseURL`              | Base URL for the Azure Blob storage account                              |         |
| `connectionString`     | Azure Blob storage connection string                                     |         |
| `containerName`        | Azure Blob storage container name                                        |         |
| `clientUploads`        | Do uploads directly on the client to bypass limits on Vercel.            |         |
npm package: @ruya.sa/storage-gcs
Description: Payload storage adapter for Google Cloud Storage
Author: Payload
Latest version: 3.71.3

# Google Cloud Storage for Payload

This package provides a simple way to use [Google Cloud Storage](https://cloud.google.com/storage) with Payload.

**NOTE:** This package removes the need to use `@payloadcms/plugin-cloud-storage` as was needed in Payload 2.x.

## Installation

```sh
pnpm add @payloadcms/storage-gcs
```

## Usage

- Configure the `collections` object to specify which collections should use the Google Cloud Storage adapter. The slug _must_ match one of your existing collection slugs.
- When enabled, this package will automatically set `disableLocalStorage` to `true` for each collection.
- When deploying to Vercel, server uploads are limited with 4.5MB. Set `clientUploads` to `true` to do uploads directly on the client. You must allow CORS PUT method for the bucket to your website.

```ts
import { gcsStorage } from '@payloadcms/storage-gcs'
import { Media } from './collections/Media'
import { MediaWithPrefix } from './collections/MediaWithPrefix'

export default buildConfig({
  collections: [Media, MediaWithPrefix],
  plugins: [
    gcsStorage({
      collections: {
        media: true,
        'media-with-prefix': {
          prefix,
        },
      },
      bucket: process.env.GCS_BUCKET,
      options: {
        apiEndpoint: process.env.GCS_ENDPOINT,
        projectId: process.env.GCS_PROJECT_ID,
      },
    }),
  ],
})
```

### Configuration Options

| Option        | Description                                                                                         | Default   |
| ------------- | --------------------------------------------------------------------------------------------------- | --------- |
| `enabled`     | Whether or not to enable the plugin                                                                 | `true`    |
| `collections` | Collections to apply the storage to                                                                 |           |
| `bucket`      | The name of the bucket to use                                                                       |           |
| `options`     | Google Cloud Storage client configuration. See [Docs](https://github.com/googleapis/nodejs-storage) |           |
| `acl`         | Access control list for files that are uploaded                                                     | `Private` |
npm package: @ruya.sa/storage-uploadthing
Description: Payload storage adapter for uploadthing
Author: Payload
Latest version: 3.71.3

# Uploadthing Storage for Payload (beta)

This package provides a way to use [uploadthing](https://uploadthing.com) with Payload.

## Installation

```sh
pnpm add @payloadcms/storage-uploadthing
```

## Usage

- Configure the `collections` object to specify which collections should use uploadthing. The slug _must_ match one of your existing collection slugs and be an `upload` type.
- Get an API key from Uploadthing and set it as `apiKey` in the `options` object.
- `acl` is optional and defaults to `public-read`.
- When deploying to Vercel, server uploads are limited with 4.5MB. Set `clientUploads` to `true` to do uploads directly on the client.

```ts
export default buildConfig({
  collections: [Media],
  plugins: [
    uploadthingStorage({
      collections: {
        media: true,
      },
      options: {
        token: process.env.UPLOADTHING_TOKEN,
        acl: 'public-read',
      },
    }),
  ],
})
```
npm package: @ruya.sa/storage-vercel-blob
Description: Payload storage adapter for Vercel Blob Storage
Author: Payload
Latest version: 3.71.3

# Vercel Blob Storage for Payload

This package provides a simple way to use [Vercel Blob](https://vercel.com/docs/storage/vercel-blob) storage with Payload.

**NOTE:** This package removes the need to use `@payloadcms/plugin-cloud-storage` as was needed in Payload 2.x.

## Installation

```sh
pnpm add @payloadcms/storage-vercel-blob
```

## Usage

- Configure the `collections` object to specify which collections should use the Vercel Blob adapter. The slug _must_ match one of your existing collection slugs.
- Ensure you have `BLOB_READ_WRITE_TOKEN` set in your Vercel environment variables. This is usually set by Vercel automatically after adding blob storage to your project.
- When enabled, this package will automatically set `disableLocalStorage` to `true` for each collection.
- When deploying to Vercel, server uploads are limited with 4.5MB. Set `clientUploads` to `true` to do uploads directly on the client.

```ts
import { vercelBlobStorage } from '@payloadcms/storage-vercel-blob'
import { Media } from './collections/Media'
import { MediaWithPrefix } from './collections/MediaWithPrefix'

export default buildConfig({
  collections: [Media, MediaWithPrefix],
  plugins: [
    vercelBlobStorage({
      enabled: true, // Optional, defaults to true
      // Specify which collections should use Vercel Blob
      collections: {
        media: true,
        'media-with-prefix': {
          prefix: 'my-prefix',
        },
      },
      // Token provided by Vercel once Blob storage is added to your Vercel project
      token: process.env.BLOB_READ_WRITE_TOKEN,
    }),
  ],
})
```

| Option               | Description                                                          | Default                       |
| -------------------- | -------------------------------------------------------------------- | ----------------------------- |
| `enabled`            | Whether or not to enable the plugin                                  | `true`                        |
| `collections`        | Collections to apply the Vercel Blob adapter to                      |                               |
| `addRandomSuffix`    | Add a random suffix to the uploaded file name in Vercel Blob storage | `false`                       |
| `cacheControlMaxAge` | Cache-Control max-age in seconds                                     | `365 * 24 * 60 * 60` (1 Year) |
| `token`              | Vercel Blob storage read/write token                                 | `''`                          |
| `clientUploads`      | Do uploads directly on the client to bypass limits on Vercel         |                               |
npm package: @ruyadorno/create-100-workshop
Description: The road to 100% test coverage workshop
Author: Ruy Adorno
Latest version: 1.0.4

# The Road to 100% test coverage workshop

This repo contains the code generator for the session **The Road to 100% test
coverage workshop** presented at NodeConf EU 2023.

## Prerequisites

`node18+`, make sure the `npm` and `npx` commands are available.

## Usage

Create a new empty folder in a suitable location on your machine, then using a
terminal, navigate to that folder and run:

```sh
npm init @ruyadorno/100-workshop
```

Or alternatively you can also run using `npx`:

```sh
npx @ruyadorno/create-100-workshop
```

### Navigating the workshop steps

The workshop is composed by 10 steps which add missing tests and refactor the
initial module generated. In order to execute a specific step, run:

```sh
npx @ruyadorno/create-100-workshop --step=1
```

## License

[MIT](LICENSE) © 2023 [Ruy Adorno](http://ruyadorno.com)
npm package: @ruyadorno/outdated
Description: Shortcut to interactively update your deps using npm + ipt
Author: Ruy Adorno
Latest version: 1.0.0

# outdated

[![NPM version](https://img.shields.io/npm/v/@ruyadorno/outdated)](https://www.npmjs.com/package/@ruyadorno/outdated)
[![License](https://img.shields.io/github/license/ruyadorno/outdated)](https://github.com/ruyadorno/outdated/blob/master/LICENSE)

Shortcut to interactively update your deps using npm + ipt

> An [iPipeTo](https://github.com/ruyadorno/ipt) workflow

<br />
<br />

<p align="center">
<img alt="demo animation" width="600" src="https://ruyadorno.github.io/svg-demos/outdated/outdated.svg" />
</a>
</p>

<br />

## Install

Get it with **npm**:

```sh
npm install -g @ruyadorno/outdated ipt
```

### Run

In any npm project you want to update a dependency, run:

```
outdated
```

**OR**

bypass **npm install** and run it at once using **npx**:

```sh
npx @ruyadorno/outdated
```

## Features

- Interactively list top-level dependencies that needs updating
- `outdated latest` will build an interactive list using the **Latest**
option from `npm outdated`

### Note on Wanted vs Warning versions:

**npm outdated** will provide two targets to update to: Wanted/Warning:
  - A **Wanted** version is a newer version that satisfies the current
  semver-range defined in your `package.json`
  - A **Latest** version is whatever is the latest version of that dependency
  published to the configured registry for that project.

## Requirements

- [npm cli](https://github.com/npm/cli)
- [ipt](https://www.npmjs.com/package/ipt)

## Help

```
outdated

Options:
        outdated                Open interactive menu updating deps to a "Wanted" version
        outdated latest Open interactive menu updating deps to a "Latest" version
        --help                  Show this help menu
        --version               Prints version number
```

### Equivalent bash alias

Although less powerful, this bash alias achieves roughly the same base usage of
pipping the result of `npm outdated` into `ipt` for a interactive experience.

```sh
alias outdated="npm install $(npm outdated --parseable | cut -d ':' -f 2 | ipt)"
```

## License

[MIT](LICENSE) © 2021 [Ruy Adorno](https://ruyadorno.com)
npm package: @ruyadorno/redact
Description: Small cli util that redacts path refs from stdin
Author: Ruy Adorno
Latest version: 1.0.0

# redact

[![npm version](https://img.shields.io/npm/v/@ruyadorno/redact.svg)](https://www.npmjs.com/@ruyadorno/redact)
[![License](https://img.shields.io/github/license/ruyadorno/redact)](https://github.com/ruyadorno/redact/blob/master/LICENSE)
[![GitHub Actions](https://github.com/ruyadorno/redact/workflows/node-ci/badge.svg)](https://github.com/ruyadorno/redact/actions?query=workflow%3Anode-ci)

Small cli util that redacts path refs from stdin.

It will also clean up:

- References to **node** executable path will be replaced with `node`
- Any `$HOME` env variable will be replaced with a literal string
- Normalize paths (windows `\\` will be replaced with `/`)

It can also be used with positional arguments to customize what word should be
redact and what should be the replacement text by default.

## Usage

You may install this package in the global system space and pipe any output
into `redact` for cleaned up output:

```sh
$ npm install -g @ruyadorno/redact
$ my_cmd | redact
```

OR alternatively, install+run on demand using `npm exec`:

```sh
$ my_cmd | npm exec @ruyadorno/redact
```

### Customizing

You may also customize what word to be redacted and define a new replacement
by providing additional positional arguments to `redact`, e.g:

```sh
$ my_cmd
Foo bar baz
$ my_cmd | redact bar REDACTED
Foo REDACTED baz
```

> Note: this might or might not be simpler than trying to remember `sed`'s syntax

## Example

Cleaning up your system path from **npm** logs so that you can better share
them with the world:

```sh
$ npm i 2>&1 --loglevel=verbose | redact

npm verb cli [
npm verb cli   'node',
npm verb cli   '<path>/main',
npm verb cli   'i',
npm verb cli   '--loglevel=verbose'
npm verb cli ]
npm info using npm@7.10.0
npm info using node@v16.0.0
...
npm timing command:install Completed in 0ms
npm verb stack TypeError: Cannot read property 'bar' of undefined
npm verb stack     at Install.install (<path>/main/lib/install.js:113:40)
npm verb stack     at Install.exec (<path>/main/lib/install.js:108:10)
npm verb stack     at Object.[_runCmd] (<path>/main/lib/npm.js:116:12)
npm verb stack     at <path>/main/lib/npm.js:28:35
npm verb stack     at Object.<anonymous> (<path>/main/lib/cli.js:61:7)
npm verb cwd <path>/main
npm verb Darwin 19.6.0
npm verb argv "node" "<path>/main" "i" "--loglevel=verbose"
npm verb node v16.0.0
npm verb npm  v7.10.0
npm ERR! Cannot read property 'bar' of undefined
npm verb exit 1
npm timing npm Completed in 198ms
npm verb code 1

npm ERR! A complete log of this run can be found in:
npm ERR!     $HOME/.npm/_logs/2021-04-20T20_06_13_794Z-debug.log
```

## License

MIT
npm package: @ruykin/gitprint
Description: AI code attribution for pull requests — powered by Git Notes
Author: Harpreet Singh
Latest version: 0.2.1

# Gitprint

AI code attribution for pull requests.

## Quick Start

```bash
npm install -g @ruykin/gitprint
```

```bash
cd your-project
gitprint init
git add .claude .github && git commit -m "chore: add gitprint"
git push
```

## CLI Commands

| Command | Description |
|---------|-------------|
| `gitprint init` | Install hooks + workflow in current repo |
| `gitprint status` | Show AI stats for current branch |
| `gitprint doctor` | Check if everything is configured correctly |
| `gitprint report` | Generate markdown report with full attribution details |
| `gitprint uninstall` | Remove Gitprint from current repo |

## Configuration

### Custom base branch

The init command auto-detects your base branch. To change it later, edit `.github/workflows/gitprint.yml` and replace all instances of the base branch name.

### Custom runner

Replace `runs-on: ubuntu-latest` with your preferred runner:

```yaml
runs-on: blacksmith-4vcpu-ubuntu-2404  # or self-hosted, etc.
```

### Skip auto-PR creation

Remove the `create-pr` job from `gitprint.yml` if you don't want automatic draft PRs.

## License

MIT