# proto-mock

> 根据proto文件定义，mock对应的json数据

Latest version **1.2.0** (published 2023-05-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install proto-mock
pnpm add proto-mock
yarn add proto-mock
bun add proto-mock
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2023-05-15 |
| First published | 2023-04-16 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 15.3 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 3 |
| Author | sullay |
| Maintainers | sullay |

## Links

- npm: https://www.npmjs.com/package/proto-mock
- Repository: https://github.com/sullay/proto-mock
- Homepage: https://github.com/sullay/proto-mock#readme
- Issues: https://github.com/sullay/proto-mock/issues
- npm.io page: https://npm.io/package/proto-mock

## Dependencies (4)

- [mockjs](https://npm.io/package/mockjs.md) ^1.1.0
- [protobufjs](https://npm.io/package/protobufjs.md) ^7.2.3
- [protobufjs-cli](https://npm.io/package/protobufjs-cli.md) ^1.1.1
- [@faker-js/faker](https://npm.io/package/@faker-js/faker.md) ^7.6.0

## Recent versions

- 1.2.0 (latest) — 2023-05-15
- 1.1.0 — 2023-04-22
- 1.0.2 — 2023-04-18
- 1.0.1 — 2023-04-18
- 1.0.0 — 2023-04-18
- 0.4.0 — 2023-04-17
- 0.3.3 — 2023-04-17
- 0.3.2 — 2023-04-17
- 0.3.1 — 2023-04-17
- 0.3.0 — 2023-04-17
- 0.1.0 — 2023-04-16
- 0.0.1 — 2023-04-16

## README

# proto-mock

[English Version](./README.en.md)

`proto-mock` 是一个能够为给定的 Protobuf 消息类型生成随机数据的 Node.js 库。

## 安装

```bash
npm install proto-mock
```

## 使用

```typescript
import { generateMockData } from 'proto-mock';

const mockData = await generateMockData('path/to/proto/file.proto', 'MyMessageType');
console.log(mockData);
```

### `generateMockData(protoFilePath: string, messageType: string, options?: GenerateMockDataOptions): Promise<any>`

*   `protoFilePath` - 必选参数，Protobuf 文件的路径。
*   `messageType` - 必选参数，消息类型的名称。
*   `options` - 可选参数，生成随机数据的设置。

返回值：一个 Promise，用于异步返回生成的随机数据。

### `GenerateMockDataOptions`

*   `maxRepeatedLength` - 可选参数，指定生成的数组的最大长度，默认为 3。
*   `maxMapEntries` - 可选参数，指定生成的Map数据类型的最大长度，默认为 3。
*   `keepCase` - 可选参数，指定是否保留字段名的大小写，默认为 false（驼峰命名）。
*   `keyValueRange` - 可选参数，指定特定字段的取值范围，默认为 {}。

## 示例

假设有一个 `person.proto` 文件，定义了一个 `Person` 消息类型：

```protobuf
syntax = "proto3";

package example;

message Person {
  string name = 1;
  int32 age = 2;
  repeated string email = 3;
}
```

使用 `proto-mock` 可以为 `Person` 类型生成随机数据：

```typescript
import { generateMockData } from 'proto-mock';

const mockData = await generateMockData('path/to/person.proto', 'Person');
console.log(mockData);
// 输出类似如下的随机数据：
// {
//   name: 'Lola Hudson',
//   age: -12713,
//   email: [ 'calvinkoch@example.com', 'jakefernandez@example.com' ]
// }
```

通过 keyValueRange 可以控制特定字段的取值范围，确保生成的随机数据符合预期。

``` typescript
import { generateMockData } from 'proto-mock';

const options = {
  keyValueRange: {
    name: ['Alice', 'Bob'],
    age: [18, 21, 30]
  }
};

const mockData = await generateMockData('path/to/person.proto', 'Person', options);
console.log(mockData);
// 输出类似如下的随机数据：
// {
//   name: 'Alice',
//   age: 21,
//   email: [ 'calvinkoch@example.com', 'jakefernandez@example.com' ]
// }

```

---
_Source: https://npm.io/package/proto-mock · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
