<p align="center">
  <img src="https://intl-image.yzcdn.cn/images/icons/allvalue-logo/colorful.png" alt="AllValue" height="48" />
</p>

<h1 align="center">allvalue-open</h1>

<p align="center">
  <strong>简体中文</strong> | <a href="./README.en.md">English</a>
</p>

---

## 安装

```bash
npm install -g allvalue-open
```

## 快速开始

```bash
# 设置 Access Token
allvalue-open config set-token

# 列出所有可用命令
allvalue-open admin --list

# 查看某个命令的参数说明
allvalue-open admin collections

# 执行查询
allvalue-open admin collections --variables '{"first":10}'
```

## 命令

### `allvalue-open admin --list` / `-l`
列出所有可用的 Query 和 Mutation 命令（简洁模式）。

### `allvalue-open admin --help` / `-h`
显示用法说明。

### `allvalue-open admin schema`
显示本地 schema 缓存文件路径。如缓存不存在，自动拉取。

### `allvalue-open admin <命令名>`
显示该命令的详细参数说明和可返回字段，并生成可复制的示例命令。

```bash
allvalue-open admin collections
allvalue-open admin products
allvalue-open admin orders
```

### `allvalue-open admin <命令名> --variables '<json>'`
执行命名查询，传入 variables JSON。

```bash
allvalue-open admin collections --variables '{"first":10}'
allvalue-open admin products --variables '{"first":5,"query":"title:T恤"}'

# 从文件读取
allvalue-open admin collections --variable-file ./vars.json
```

### `allvalue-open admin query`
原始模式，直接传入 GraphQL 语句执行（不做参数校验）。

```bash
allvalue-open admin query --query 'query { shop { name } }'

# 从文件读取
allvalue-open admin query --query-file ./my-query.graphql --variable-file ./vars.json
```

### Mutation 安全门控
Mutation 操作默认禁止，需显式添加 `--allow-mutations`。

```bash
allvalue-open admin productCreate --variables '{...}' --allow-mutations
```

### `allvalue-open config set-token`
设置 Access Token（保存到 `~/.allvalue-open.json`）。

```bash
allvalue-open config set-token
allvalue-open config set-token --profile admin --token <your-token>
```

### `allvalue-open config show`
查看当前已保存的 token 配置。

## Token 优先级

| 优先级 | 来源 |
|---|---|
| 1 | `--token <token>` 命令行参数 |
| 2 | `ALLVALUE_TOKEN` 环境变量 |
| 3 | `~/.allvalue-open.json` 配置文件 |
| 4 | 交互式输入（自动保存） |

## Schema 缓存

首次执行命令时自动从 API 拉取 schema 并缓存到 `~/.allvalue-open/admin-schema.json`。

强制刷新：
```bash
rm ~/.allvalue-open/admin-schema.json
allvalue-open admin --list
```

## 环境要求

- Node.js >= 22
