-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
<!--
SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com>
SPDX-License-Identifier: AGPL-3.0-only
-->
# `proto`
このプロジェクトで取り扱う Protocol Buffers のデータ定義が全てまとまっているディレクトリ。
## 利用方法
### JavaScript API
依存パッケージとして [`@bufbuild/protobuf`](https://www.npmjs.com/package/@bufbuild/protobuf) が必要。
`peerDependencies` にバージョン要件があるため確認すること。
Protobuf のメッセージやサービス定義のファイルが 1:1 で JS/DTS に変換されており、 `@yamori/proto/path/to/file_pb.js` としてアクセスできる。
例えば以下のような Protobuf の定義ファイルがあった場合、
```protobuf
# packages/proto/yamori/foo/bar.proto
package yamori.foo.bar;
message Bar {
string value = 1;
}
```
以下のように `import` できる。
```ts
import { fromBinary } from "@bufbuild/protobuf";
import { type Bar, BarSchema } from "@yamori/proto/yamori/foo/bar_pb.js";
export function decodeBar(bytes: Uint8Array): Bar {
return fromBinary(BarSchema, bytes);
}
```
## 開発
このパッケージ自体の開発を行う場合のドキュメント。
### 品質チェック
このプロジェクトでは [Buf CLI](https://buf.build/docs/cli/) を使って Protobuf ファイルの品質をチェックしている。以下のコマンドでチェックを実行できる。
```
$ bun check
```
### コード生成
Protobuf データのデコード・エンコードを行うコードを生成するには以下のコマンドを実行する。
```
$ bun make
```