open-index/open-npm huggingface dataset:
npm package: @forchange/cc-cli-plugin-babel
Description: babel
Author: forchange
Latest version: 0.1.0

## cc-cli-plugin-babel

cc babel 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-babel
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['babel']
};
```
npm package: @forchange/cc-cli-plugin-react
Description: react plugin for webpack
Author: xindongdong
Latest version: 0.1.2

## cc-cli-plugin-react

cc react 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-react
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['react']
};
```
npm package: @forchange/cc-cli-plugin-react-ts
Description: react-ts plugin for webpack
Author: xindongdong
Latest version: 0.1.2

## cc-cli-plugin-react-ts

cc react-ts 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-react-ts
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['react-ts']
};
```
npm package: @forchange/cc-cli-plugin-react-ts-eslint
Description: react-ts plugin for webpack
Author: xindongdong
Latest version: 0.1.0

## cc-cli-plugin-react-ts-eslint

cc react ts eslint 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-react-ts-eslint
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['react-ts-eslint']
};
```
npm package: @forchange/cc-cli-plugin-vue
Description: cli plugin
Author: chendaxin
Latest version: 0.1.2

## cc-cli-plugin-vue

cc vue 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-vue
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['vue']
};
```
npm package: @forchange/cc-cli-plugin-vue-ts
Description: vue ts
Author: chendaxin
Latest version: 0.1.2

## cc-cli-plugin-vue-ts

cc vue ts 插件

### Install

```bash
$ yarn add @forchange/cc-cli-plugin-vue-ts
```

### Usage

```js
// cc.config.js
module.exports = {
  plugins: ['vue-ts']
};
```
npm package: @forchange/cli
Description: 前端项目脚手架
Author: SIMDD
Latest version: 0.0.18

# @forchange/cli

[![npm version](https://img.shields.io/npm/v/@forchange/cli.svg)](https://www.npmjs.com/package/@forchange/cli)
[![license](https://img.shields.io/npm/l/@forchange/cli.svg)](https://www.npmjs.com/package/@forchange/cli)

项目模版脚手架，[@forchange/cli](https://www.npmjs.com/package/@forchange/cli)

## Features

- 一键生成
- 多套模版
- 自定义配置
- 插值替换

## Install

```bash
$ npm install @forchange/cli -g
```

## Usage

```bash
$ forchange-cli

> react-template
  react-mobile-template

? 请输入项目名[ninth-studio-mobile]：
```

## Advance

#### 如果你是模版开发者

模版需要`替换插值`时，在模版根目录新建 `.clirc` 文件进行配置，  
然后在需要替换插值的地方，用 `<$插值$>` 占位即可

```json
{
  //需要替换的README
  "readme": "INSTANCE.md",

  //插值替换
  "prompts": [
    {
      "type": "input",
      "name": "title", //name为插值变量名
      "message": "请输入项目title",
      "default": "风变编程"
    }
  ]
}
```

👉 **[如何配置 prompts](https://www.npmjs.com/package/inquirer)**

## Help

```bash
$ forchange-cli -h
```

## License

MIT
npm package: @forchange/qiniu
Description: 前端七牛上传基础服务
Author: vnues
Latest version: 0.1.1

# qiniu

基于 [qiniu-js](https://developer.qiniu.com/kodo/sdk/1283/javascript) 封装的接口管理方案，[@forchange/qiniu](https://www.npmjs.com/package/@forchange/qiniu)

## Installing

```
$ npm install @forchange/qiniu
```

## Syntax

`initQiNiu`函数会返回一个`upload`上传函数

```javascript
import initQiNiu from "@forchange/qiniu"

const upload=initQiNiu(config)
```

## Parameters

### config

> config是qiniu的基本配置，同qiniu-js的配置基本一致

1. domain 为七牛空间（bucket)对应的域名，选择某个空间后，可通过"空间设置->基本设置->域名设置"查看获取

2. token 前端通过后端接口请求以获得七牛的token信息

3. region:
      -  z0 代表华东区域
      - z1: 代表华北区域
      - z2: 代表华南区域
      - na0:代表北美区域
      - as0:代表东南亚区域
      
4. mimeType:`null || array`，用来限定上传文件类型，不传时自动判断文件类型,关于`mime`类型，可参考[常见MIME类型列表](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types)

```javascript
 const config = {
  domain: "https://base.qiniu",
  token: "your QiNiuToken",
  region: "z0",
  mimeType: ["image/png"]
}
```


## upload

> upload是initQiNiu函数的返回结果，是个上传函数,他接收两个参数`file`和`next`,返回参数是个`Promise`对象

```javascript
 upload(file,next)
```
### file 必选

file是[FormData](https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects)对象

### next 可选参数

next回调函数，是上传过程的监听函数，会接收到一个`progress`参数


```javascript
 upload(file,(progress)=>{
   console.log(progress)
 })
```

## Usage

```javascript

const config = {
  domain: "https://xxx.xx",
  token: "",
  region: "z0"
}
class UploadFile extends React.Component {
  state = {
    fileList: []
  };
  handleBeforeUpload = async () => {
    const res = await axios.get('https://xxx.xx')
    config.token = res.data.token
    this.upload = initQiNiu(config)
  }
  upLoadFile = (e) => {
    this.setState({ isLoading: true })
    this.upload(e.file).then((res) => {
      const file = {
        uid: e.file.uid,
        name: e.file.name,
        url: res
      }
      this.setState({ fileList: [...this.state.fileList, file]})
    })
  }
  render() {
    const {  fileList } = this.state;
    return (
      <div>
          <Upload
            listType="picture-card"
            fileList={fileList}
            customRequest={this.upLoadFile}
            beforeUpload={this.handleBeforeUpload}
            multiple={true}
          >
          </Upload>
      </div>
    );
  }
}

```
npm package: @forcir/commons
Description: Highly-reusable common utility functions.
Author: Forcir Engineering
Latest version: 1.0.2

<p align="center"></p>
<div align="center">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://cdn.forcir.com/oss/forcir-commons/assets/images/logos/dark.png" height="64">
        <source media="(prefers-color-scheme: light)" srcset="https://cdn.forcir.com/oss/forcir-commons/assets/images/logos/light.png" height="64">
        <img alt="Forcir Numbers Logo" src="https://cdn.forcir.com/oss/forcir-commons/assets/images/logos/light.png" height="64">
    </picture>
</div>
<p align="center"><strong>Highly-reusable common utility functions.</strong></p>
<p align="center"></p>

## Install

```bash
pnpm add @forcir/commons
```

```bash
yarn add @forcir/commons
```

```bash
npm install @forcir/commons
```
npm package: @forcir/numbers
Description: Additional functions to mutate and parse numbers.
Author: Forcir Engineering
Latest version: 1.0.2

<p align="center"></p>
<div align="center">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://cdn.forcir.com/oss/forcir-numbers/assets/images/logos/dark.png" height="64">
        <source media="(prefers-color-scheme: light)" srcset="https://cdn.forcir.com/oss/forcir-numbers/assets/images/logos/light.png" height="64">
        <img alt="Forcir Numbers Logo" src="https://cdn.forcir.com/oss/forcir-numbers/assets/images/logos/light.png" height="64">
    </picture>
</div>
<p align="center"><strong>Additional functions to mutate and parse numbers.</strong></p>
<p align="center"></p>

## Install

```bash
pnpm add @forcir/numbers
```

```bash
yarn add @forcir/numbers
```

```bash
npm install @forcir/numbers
```
npm package: @forcir/tsconfig
Description: Shared configuration for a consistent experience using TypeScript.
Latest version: 1.0.5

<p align="center"></p>
<div align="center">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://cdn.forcir.com/oss/forcir-tsconfig/assets/images/logos/dark.png" height="64">
        <source media="(prefers-color-scheme: light)" srcset="https://cdn.forcir.com/oss/forcir-tsconfig/assets/images/logos/light.png" height="64">
        <img alt="Forcir TypeScript Config Logo" src="https://cdn.forcir.com/oss/forcir-tsconfig/assets/images/logos/light.png" height="64">
    </picture>
</div>
<p align="center"><strong>Shared configuration for a consistent experience using TypeScript.</strong></p>
<p align="center"></p>

## Install

```bash
pnpm add -DE typescript @forcir/tsconfig
```

```bash
yarn add -DE typescript @forcir/tsconfig
```

```bash
npm install -DE typescript @forcir/tsconfig
```

## Basic Usage

### tsconfig.json

```jsonc
{
    "extends": "@forcir/tsconfig"
    // ...
}
```
npm package: @forcloud/client
Description: Client for Portive API
Latest version: 7.2.2

# @forcloud/client

## Usage

```typescript
import { creatAuthToken } from "@forcloud/auth"
import { Client, uploadFile } from "@forcloud/client"

const authToken = createAuthToken(API_KEY, {
  path: "on/$yyyy/$mm/$dd",
  expiresIn: "1h",
})

const client = new Client({ authToken, apiOrigin })

const uploadResult = await uploadFile({
  client,
  file,
  onProgress(e) {
    console.log(e)
  },
})
```

## Design Strategy

- Separate auth and client: Keep `@forcloud/auth` separate from `@forcloud/client` because once we've developed a component, we don't need to import `@forcloud/client` explicitly anymore.
- `authToken` option always provided on Component: When a Component is created that uses Portive, it needs to take `authToken` as part of its arguments. It is not necessary to take `apiOrigin` because that is only required if you aren't hitting the production endpoint. When an end-developer uses the Component, they will likely never be hitting a non-production endpoint.
- Don't pass in Client to Component: Because `authToken` is the only necessary argument, we don't ask the Component user to pass in a Client. It's an unnecessary extra step.
- Do have a `Client` object though. That being said, we do have a `Client` object that needs to be created. We have this because it helps the Component developer in these ways:
  1. It's obvious what options should be passed in to the Component. It is all the options on the `Client` object. For example, it takes `authToken` but taking an `apiOrigin` as optional and perhaps a `path` as optional will be really helpful as well.
  2. By forcing the Component developer to create a Client object, it will be more likely that the Component developer will create the Client object during the initialization phase and then all the options will be passed properly whenever an API call is made. For example, let's say we have the `uploadFile` call but also a `collaborate` call. We don't want to introduce an error like forgetting to pass the `apiOrigin` to `collaborate` even though we've passed it through to `uploadFile`. After using the options to create a new `Client`, we don't have to worry about forgetting to pass through correct options through.
npm package: @forcloud/date-json
Description: A lightweight (794 bytes) library to add Date support to JSON.
Author: Sunny Hirai
Latest version: 1.0.6

# DateJson

A lightweight (794 bytes) library to add Date support to JSON APIs.

Enables APIs to send database records that contain dates without having to manually transform them.

```ts
import { DateJson } from "@forcloud/date-json"

const json = DateJson.toJSON({ createdAt: new Date() })
// --> { createdAt: { $date: 1519211811670 } }

const jsonWithDates = DateJson.fromJSON(json)
// --> { createdAt: anInstanceOfADateObject }
```

## Features

- Lightweight: 795 bytes
- JSON: Transform to/from JSON
- String: Transform to/from string (stringify/parse)
- TypeScript: Keeps type integrity through transformations

## TypeScript

Keeps type integrity during encode/decode enabling type safety in API calls.

```ts
const json = DateJson.toJSON({ createdAt: new Date() })
// --> { createdAt: { $date: 1519211811670 } }
type MyJson = typeof json
// --> type: { createdAt: { $date: number }}

const jsonWithDates = DateJson.fromJSON(json)
// --> { createdAt: anInstanceOfADateObject }
type MyJsonWithDates = typeof jsonWithDates
// --> type: { createdAt: Date }
```

## No `$date` Key Allowed

The key `$date` is prohibited in `toJSON` like in `DateJson.toJSON({ $date: 'today' })`. This throws the error `Object with key $date is invalid`.

The design is intentional and is there to prevent confusion. Am I looking at a DateJson object or a plain JSON object with `$date` in it?
npm package: @forcrowd/backbone-client-core
Description: Backbone client core library
Author: forCrowd Foundation
Latest version: 0.2.3

# Backbone - Client Core Library

[![Twitter Follow](https://img.shields.io/twitter/follow/forCrowd.svg?style=social)](https://twitter.com/forCrowd)

Lightweight API service for rapid application prototyping

For more information: [Backbone](https://github.com/forCrowd/Backbone)

## License

Our project is licensed under [MIT license](https://github.com/forCrowd/Backbone/blob/master/LICENSE).

You are free to use, modify and distribute it, even in commercial activities.
npm package: @forcrypto/mcp
Description: MCP server for For Crypto — connect AI assistants to the crypto-native marketplace
Author: For Crypto
Latest version: 1.0.0

# @forcrypto/mcp

Connect AI assistants to the For Crypto marketplace via the Model Context Protocol.

Browse listings, create products, cosell for commission, earn USDC. All from Claude, ChatGPT, Cursor, or any MCP-capable AI.

## Quickstart

### 1. Get a Bot API key

Generate a `fc_bot_` key at [forcrypto.market/settings/api](https://forcrypto.market/settings/api).

### 2. Configure your AI client

**Claude Desktop** - edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "forcrypto": {
      "command": "npx",
      "args": ["-y", "@forcrypto/mcp"],
      "env": { "FORCRYPTO_API_KEY": "fc_bot_your_key_here" }
    }
  }
}
```

**Cursor** - edit `~/.cursor/mcp.json` with the same structure.

**VS Code** - add to `.vscode/mcp.json`:

```json
{
  "mcp": {
    "servers": {
      "forcrypto": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@forcrypto/mcp"],
        "env": { "FORCRYPTO_API_KEY": "fc_bot_your_key_here" }
      }
    }
  }
}
```

**OpenAI Agents SDK (Python)**:

```python
server = MCPServerStdio(params={
    "command": "npx",
    "args": ["-y", "@forcrypto/mcp"],
    "env": {"FORCRYPTO_API_KEY": "fc_bot_your_key_here"}
})
```

### 3. Start using it

Ask your AI:

- "Browse the top datasets on For Crypto"
- "Create a listing for my API at $9.99 USDC with 20% commission"
- "What are my earnings for the last 30 days?"
- "Join coselling for listing lst_abc123"

## Tools (15 total)

| Tool | Description | Scope |
|------|-------------|-------|
| get_profile | Get bot profile | profile:read |
| browse_listings | Search marketplace | marketplace:read |
| get_listing | Get listing details | marketplace:read |
| create_listing | Create a listing | offers:write |
| update_listing | Update a listing | offers:write |
| deactivate_listing | Deactivate a listing | offers:write |
| join_cosell | Join coselling program | offers:write |
| get_cosells | List cosell partnerships | marketplace:read |
| get_cosell_earnings | Get cosell earnings | marketplace:read |
| purchase_listing | Purchase on-chain | offers:write |
| get_analytics | Listing analytics | marketplace:read |
| get_earnings | Total earnings | marketplace:read |
| register_webhook | Register webhook | offers:write |
| list_webhooks | List webhooks | marketplace:read |
| delete_webhook | Delete webhook | offers:write |

## Env Vars

| Variable | Required | Default |
|----------|----------|---------|
| FORCRYPTO_API_KEY | Yes | - |
| FORCRYPTO_BASE_URL | No | https://forcrypto.market |
npm package: @forcrypto/mcp-server
Description: MCP server for managing your For Crypto store through Claude Desktop
Latest version: 0.1.1

# For Crypto MCP Server

Control your For Crypto store through Claude. Manage listings, analytics, email workflows, discounts, and more using natural language.

## Setup

### 1. Get your API key

Go to **Settings > API & Integrations** on [forcrypto.market](https://forcrypto.market) and generate a seller API key.

### 2. Add to Claude Desktop

Open your Claude Desktop config file:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

Add this configuration:

```json
{
  "mcpServers": {
    "forcrypto": {
      "command": "npx",
      "args": ["@forcrypto/mcp-server"],
      "env": {
        "FORCRYPTO_API_KEY": "fcs_your_api_key_here"
      }
    }
  }
}
```

### 3. Restart Claude Desktop

After saving the config, restart Claude Desktop. You should see "ForCrypto" in your available tools.

## Available Tools

### Listings
- **get_listings** - List all your listings with title, price, status, and category
- **get_listing** - Get full details for a specific listing
- **update_listing** - Update title, description, price, or category

### Storefront
- **get_storefront** - View your seller profile and theme configuration
- **update_theme** - Customize colors, fonts, border radius, and layout

### Analytics
- **get_analytics** - View sales data, revenue, ratings, and conversion metrics

### Email
- **get_subscribers** - List email subscribers for a listing
- **get_workflow** - View drip email workflow configuration
- **create_drip_step** - Add a new step to your drip email sequence
- **update_drip_step** - Edit an existing drip email step
- **send_broadcast** - Send an email to all opted-in subscribers

### Discounts
- **get_discounts** - View active discount codes for a listing
- **create_discount** - Create a new discount code (percentage or fixed amount)

### Reviews
- **get_reviews** - View reviews and ratings for a listing

## Example Prompts

- "Show me my listings and their sales numbers"
- "Update the price of my Python course to $29"
- "Create a 20% off discount code LAUNCH20 for my ebook"
- "Send a broadcast email to my course subscribers about the new module"
- "Set up a 3-step drip email sequence for my template pack"
- "Change my storefront theme to use a dark background with blue accents"

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `FORCRYPTO_API_KEY` | Yes | Your seller API key (starts with `fcs_`) |
| `FORCRYPTO_API_URL` | No | API base URL (defaults to `https://forcrypto.market`) |

## Rate Limits

The seller API allows 60 requests per minute per API key.

## Security

- Your API key is sent via the `X-API-Key` header over HTTPS
- Keys are stored as SHA-256 hashes on the server
- You can revoke and regenerate your key at any time in Settings
- Each seller account can have one active API key