@interactive-inc/docs-client 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +228 -0
- package/build/doc-client.d.ts +59 -0
- package/build/doc-client.d.ts.map +1 -0
- package/build/doc-client.js +95 -0
- package/build/doc-client.test.d.ts +2 -0
- package/build/doc-client.test.d.ts.map +1 -0
- package/build/doc-client.test.js +38 -0
- package/build/doc-directory-reference.d.ts +65 -0
- package/build/doc-directory-reference.d.ts.map +1 -0
- package/build/doc-directory-reference.js +292 -0
- package/build/doc-directory-reference.test.d.ts +2 -0
- package/build/doc-directory-reference.test.d.ts.map +1 -0
- package/build/doc-directory-reference.test.js +100 -0
- package/build/doc-file-index-reference.d.ts +72 -0
- package/build/doc-file-index-reference.d.ts.map +1 -0
- package/build/doc-file-index-reference.js +191 -0
- package/build/doc-file-index-reference.test.d.ts +2 -0
- package/build/doc-file-index-reference.test.d.ts.map +1 -0
- package/build/doc-file-index-reference.test.js +77 -0
- package/build/doc-file-md-reference.d.ts +97 -0
- package/build/doc-file-md-reference.d.ts.map +1 -0
- package/build/doc-file-md-reference.js +297 -0
- package/build/doc-file-md-reference.test.d.ts +2 -0
- package/build/doc-file-md-reference.test.d.ts.map +1 -0
- package/build/doc-file-md-reference.test.js +465 -0
- package/build/doc-file-relation-reference.d.ts +54 -0
- package/build/doc-file-relation-reference.d.ts.map +1 -0
- package/build/doc-file-relation-reference.js +109 -0
- package/build/doc-file-system-debug.d.ts +81 -0
- package/build/doc-file-system-debug.d.ts.map +1 -0
- package/build/doc-file-system-debug.js +317 -0
- package/build/doc-file-system.d.ts +100 -0
- package/build/doc-file-system.d.ts.map +1 -0
- package/build/doc-file-system.js +210 -0
- package/build/doc-file-tree-system.d.ts +38 -0
- package/build/doc-file-tree-system.d.ts.map +1 -0
- package/build/doc-file-tree-system.js +153 -0
- package/build/doc-file-tree-system.test.d.ts +2 -0
- package/build/doc-file-tree-system.test.d.ts.map +1 -0
- package/build/doc-file-tree-system.test.js +105 -0
- package/build/doc-file-unknown-reference.d.ts +80 -0
- package/build/doc-file-unknown-reference.d.ts.map +1 -0
- package/build/doc-file-unknown-reference.js +181 -0
- package/build/doc-file-unknown-reference.test.d.ts +2 -0
- package/build/doc-file-unknown-reference.test.d.ts.map +1 -0
- package/build/doc-file-unknown-reference.test.js +73 -0
- package/build/doc-markdown-system.d.ts +44 -0
- package/build/doc-markdown-system.d.ts.map +1 -0
- package/build/doc-markdown-system.js +153 -0
- package/build/doc-markdown-system.test.d.ts +2 -0
- package/build/doc-markdown-system.test.d.ts.map +1 -0
- package/build/doc-markdown-system.test.js +124 -0
- package/build/doc-path-system.d.ts +43 -0
- package/build/doc-path-system.d.ts.map +1 -0
- package/build/doc-path-system.js +148 -0
- package/build/doc-path-system.test.d.ts +2 -0
- package/build/doc-path-system.test.d.ts.map +1 -0
- package/build/doc-path-system.test.js +67 -0
- package/build/entities/doc-file-entity.d.ts +5 -0
- package/build/entities/doc-file-entity.d.ts.map +1 -0
- package/build/entities/doc-file-entity.js +1 -0
- package/build/entities/doc-file-index-entity.d.ts +30 -0
- package/build/entities/doc-file-index-entity.d.ts.map +1 -0
- package/build/entities/doc-file-index-entity.js +49 -0
- package/build/entities/doc-file-index-entity.test.d.ts +2 -0
- package/build/entities/doc-file-index-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-index-entity.test.js +195 -0
- package/build/entities/doc-file-md-entity.d.ts +30 -0
- package/build/entities/doc-file-md-entity.d.ts.map +1 -0
- package/build/entities/doc-file-md-entity.js +49 -0
- package/build/entities/doc-file-md-entity.test.d.ts +2 -0
- package/build/entities/doc-file-md-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-md-entity.test.js +178 -0
- package/build/entities/doc-file-unknown-entity.d.ts +26 -0
- package/build/entities/doc-file-unknown-entity.d.ts.map +1 -0
- package/build/entities/doc-file-unknown-entity.js +45 -0
- package/build/entities/doc-file-unknown-entity.test.d.ts +2 -0
- package/build/entities/doc-file-unknown-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-unknown-entity.test.js +131 -0
- package/build/index.d.ts +42 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +39 -24064
- package/build/models.d.ts +818 -0
- package/build/models.d.ts.map +1 -0
- package/build/models.js +312 -0
- package/build/types.d.ts +154 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +1 -0
- package/build/values/doc-content-md-front-matter-value.d.ts +49 -0
- package/build/values/doc-content-md-front-matter-value.d.ts.map +1 -0
- package/build/values/doc-content-md-front-matter-value.js +94 -0
- package/build/values/doc-content-md-front-matter-value.test.d.ts +2 -0
- package/build/values/doc-content-md-front-matter-value.test.d.ts.map +1 -0
- package/build/values/doc-content-md-front-matter-value.test.js +73 -0
- package/build/values/doc-content-md-value.d.ts +66 -0
- package/build/values/doc-content-md-value.d.ts.map +1 -0
- package/build/values/doc-content-md-value.js +218 -0
- package/build/values/doc-content-md-value.test.d.ts +2 -0
- package/build/values/doc-content-md-value.test.d.ts.map +1 -0
- package/build/values/doc-content-md-value.test.js +179 -0
- package/build/values/doc-directory-path-value.d.ts +89 -0
- package/build/values/doc-directory-path-value.d.ts.map +1 -0
- package/build/values/doc-directory-path-value.js +145 -0
- package/build/values/doc-directory-path-value.test.d.ts +2 -0
- package/build/values/doc-directory-path-value.test.d.ts.map +1 -0
- package/build/values/doc-directory-path-value.test.js +68 -0
- package/build/values/doc-file-content-index-value.d.ts +62 -0
- package/build/values/doc-file-content-index-value.d.ts.map +1 -0
- package/build/values/doc-file-content-index-value.js +134 -0
- package/build/values/doc-file-content-index-value.test.d.ts +2 -0
- package/build/values/doc-file-content-index-value.test.d.ts.map +1 -0
- package/build/values/doc-file-content-index-value.test.js +203 -0
- package/build/values/doc-file-content-md-value.d.ts +62 -0
- package/build/values/doc-file-content-md-value.d.ts.map +1 -0
- package/build/values/doc-file-content-md-value.js +139 -0
- package/build/values/doc-file-content-md-value.test.d.ts +2 -0
- package/build/values/doc-file-content-md-value.test.d.ts.map +1 -0
- package/build/values/doc-file-content-md-value.test.js +160 -0
- package/build/values/doc-file-path-value.d.ts +47 -0
- package/build/values/doc-file-path-value.d.ts.map +1 -0
- package/build/values/doc-file-path-value.js +83 -0
- package/build/values/doc-file-path-value.test.d.ts +2 -0
- package/build/values/doc-file-path-value.test.d.ts.map +1 -0
- package/build/values/doc-file-path-value.test.js +84 -0
- package/build/values/doc-front-matter-index-value.d.ts +66 -0
- package/build/values/doc-front-matter-index-value.d.ts.map +1 -0
- package/build/values/doc-front-matter-index-value.js +185 -0
- package/build/values/doc-front-matter-index-value.test.d.ts +2 -0
- package/build/values/doc-front-matter-index-value.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-index-value.test.js +98 -0
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts +2 -0
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value-accessor.test.js +226 -0
- package/build/values/doc-front-matter-md-value.d.ts +80 -0
- package/build/values/doc-front-matter-md-value.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value.js +257 -0
- package/build/values/doc-front-matter-md-value.test.d.ts +2 -0
- package/build/values/doc-front-matter-md-value.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value.test.js +198 -0
- package/build/values/doc-relation-field-value.d.ts +57 -0
- package/build/values/doc-relation-field-value.d.ts.map +1 -0
- package/build/values/doc-relation-field-value.js +85 -0
- package/build/values/doc-relation-field-value.test.d.ts +2 -0
- package/build/values/doc-relation-field-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-field-value.test.js +115 -0
- package/build/values/doc-relation-file-value.d.ts +33 -0
- package/build/values/doc-relation-file-value.d.ts.map +1 -0
- package/build/values/doc-relation-file-value.js +55 -0
- package/build/values/doc-relation-file-value.test.d.ts +2 -0
- package/build/values/doc-relation-file-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-file-value.test.js +77 -0
- package/build/values/doc-relation-value.d.ts +34 -0
- package/build/values/doc-relation-value.d.ts.map +1 -0
- package/build/values/doc-relation-value.js +56 -0
- package/build/values/doc-relation-value.test.d.ts +2 -0
- package/build/values/doc-relation-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-value.test.js +89 -0
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-multiple-value.js +43 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.js +76 -0
- package/build/values/doc-schema-field-boolean-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-boolean-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-single-value.js +39 -0
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-single-value.test.js +73 -0
- package/build/values/doc-schema-field-factory.d.ts +37 -0
- package/build/values/doc-schema-field-factory.d.ts.map +1 -0
- package/build/values/doc-schema-field-factory.js +151 -0
- package/build/values/doc-schema-field-factory.test.d.ts +2 -0
- package/build/values/doc-schema-field-factory.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-factory.test.js +215 -0
- package/build/values/doc-schema-field-number-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-number-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-multiple-value.js +43 -0
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-multiple-value.test.js +79 -0
- package/build/values/doc-schema-field-number-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-number-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-single-value.js +39 -0
- package/build/values/doc-schema-field-number-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-number-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-single-value.test.js +77 -0
- package/build/values/doc-schema-field-relation-multiple-value.d.ts +24 -0
- package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-multiple-value.js +46 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.js +83 -0
- package/build/values/doc-schema-field-relation-single-value.d.ts +24 -0
- package/build/values/doc-schema-field-relation-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-single-value.js +42 -0
- package/build/values/doc-schema-field-relation-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-single-value.test.js +83 -0
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-multiple-value.js +48 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.js +84 -0
- package/build/values/doc-schema-field-select-number-single-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-number-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-single-value.js +45 -0
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-single-value.test.js +96 -0
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-multiple-value.js +48 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.js +84 -0
- package/build/values/doc-schema-field-select-text-single-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-text-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-single-value.js +47 -0
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-single-value.test.js +96 -0
- package/build/values/doc-schema-field-text-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-text-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-multiple-value.js +43 -0
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-multiple-value.test.js +78 -0
- package/build/values/doc-schema-field-text-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-text-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-single-value.js +39 -0
- package/build/values/doc-schema-field-text-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-text-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-single-value.test.js +76 -0
- package/build/values/doc-schema-field-type-value.d.ts +61 -0
- package/build/values/doc-schema-field-type-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-type-value.js +134 -0
- package/build/values/doc-schema-field-type-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-type-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-type-value.test.js +101 -0
- package/build/values/doc-schema-field-value.d.ts +45 -0
- package/build/values/doc-schema-field-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-value.js +1 -0
- package/build/values/doc-schema-value.d.ts +99 -0
- package/build/values/doc-schema-value.d.ts.map +1 -0
- package/build/values/doc-schema-value.js +269 -0
- package/build/values/doc-schema-value.test.d.ts +2 -0
- package/build/values/doc-schema-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-value.test.js +301 -0
- package/build/values/doc-tree-directory-node-value.d.ts +36 -0
- package/build/values/doc-tree-directory-node-value.d.ts.map +1 -0
- package/build/values/doc-tree-directory-node-value.js +71 -0
- package/build/values/doc-tree-directory-node-value.test.d.ts +2 -0
- package/build/values/doc-tree-directory-node-value.test.d.ts.map +1 -0
- package/build/values/doc-tree-directory-node-value.test.js +162 -0
- package/build/values/doc-tree-file-node-value.d.ts +33 -0
- package/build/values/doc-tree-file-node-value.d.ts.map +1 -0
- package/build/values/doc-tree-file-node-value.js +56 -0
- package/build/values/doc-tree-file-node-value.test.d.ts +2 -0
- package/build/values/doc-tree-file-node-value.test.d.ts.map +1 -0
- package/build/values/doc-tree-file-node-value.test.js +113 -0
- package/debug/debug.ts +108 -0
- package/package.json +7 -45
- package/bin/docs.js +0 -3
- package/build/assets/index.css +0 -1
- package/build/assets/index.js +0 -298
- package/build/index.html +0 -13
package/README.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# @interactive-inc/docs-client
|
|
2
|
+
|
|
3
|
+
技術仕様書、製品資料など、Markdownで記述された資料をリポジトリで管理する際に、それらを効率的に読み書きするためのAPIを提供します。
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { DocClient, DocFileSystem, DocPathSystem } from "@interactive-inc/docs-client"
|
|
7
|
+
|
|
8
|
+
const docClient = new DocClient({
|
|
9
|
+
fileSystem: new DocFileSystem({
|
|
10
|
+
basePath: "/docs", // リポジトリ内のドキュメントルート
|
|
11
|
+
pathSystem: new DocPathSystem(),
|
|
12
|
+
}),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const ref = docClient
|
|
16
|
+
.directory("products/product-1/features")
|
|
17
|
+
.file("login.md")
|
|
18
|
+
|
|
19
|
+
const entity = await ref.read()
|
|
20
|
+
|
|
21
|
+
if (entity instanceof Error) throw entity
|
|
22
|
+
|
|
23
|
+
console.log(entity.content.title)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## インストール
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
bun add @interactive-inc/docs
|
|
30
|
+
# または
|
|
31
|
+
npm install @interactive-inc/docs
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 設計
|
|
35
|
+
|
|
36
|
+
このライブラリは、Markdownファイルを構造化されたディレクトリでの動作を想定しています。
|
|
37
|
+
|
|
38
|
+
以下は製品仕様書を管理する場合の一例です。ディレクトリ構造は自由に設計できます:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
docs/ # ドキュメントルート(任意の名前)
|
|
42
|
+
├── products/ # 製品ドキュメント(例)
|
|
43
|
+
│ ├── product-a/
|
|
44
|
+
│ │ ├── index.md # 製品概要
|
|
45
|
+
│ │ ├── features/ # 機能仕様
|
|
46
|
+
│ │ │ ├── login.md
|
|
47
|
+
│ │ │ └── _/ # アーカイブ(非推奨・削除予定)
|
|
48
|
+
│ │ │ └── old-feature.md
|
|
49
|
+
│ │ ├── pages/ # 画面仕様
|
|
50
|
+
│ │ └── terms/ # 製品固有の用語
|
|
51
|
+
│ └── product-b/
|
|
52
|
+
├── terms/ # 共通用語集(例)
|
|
53
|
+
├── guidelines/ # 開発ガイドライン(例)
|
|
54
|
+
└── index.md # ルートドキュメント
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 機能
|
|
58
|
+
|
|
59
|
+
### アーカイブシステム
|
|
60
|
+
|
|
61
|
+
ファイルを削除する代わりに、`_`ディレクトリに移動することで論理削除を表現できます。
|
|
62
|
+
|
|
63
|
+
- `features/login.md` → `features/_/login.md` (アーカイブ)
|
|
64
|
+
- アーカイブされたファイルも読み取り可能
|
|
65
|
+
- 必要に応じて復元可能
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
// ファイルをアーカイブする
|
|
69
|
+
const fileRef = docClient.directory("specs/v1").mdFile("deprecated-api.md")
|
|
70
|
+
await fileRef.archive()
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### メタデータ管理
|
|
74
|
+
|
|
75
|
+
各Markdownファイルの先頭にYAML形式でメタデータを記述:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
---
|
|
79
|
+
title: ログイン機能
|
|
80
|
+
milestone: 2025.01
|
|
81
|
+
features:
|
|
82
|
+
- authentication
|
|
83
|
+
- security
|
|
84
|
+
priority: high
|
|
85
|
+
is-done: false
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
# ログイン機能
|
|
89
|
+
|
|
90
|
+
説明...
|
|
91
|
+
|
|
92
|
+
本文...
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
このように操作できます。
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
// FrontMatterの読み取り
|
|
99
|
+
const fileRef = docClient.directory("features").mdFile("login.md")
|
|
100
|
+
|
|
101
|
+
const file = await fileRef.read()
|
|
102
|
+
|
|
103
|
+
if (file instanceof Error) throw file
|
|
104
|
+
|
|
105
|
+
// "ログイン機能"
|
|
106
|
+
console.log(file.content.frontMatter.title)
|
|
107
|
+
|
|
108
|
+
// ["authentication", "security"]
|
|
109
|
+
console.log(file.content.frontMatter.features)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### ファイル間のリレーション
|
|
113
|
+
|
|
114
|
+
FrontMatterとスキーマを使用して、ドキュメント間の関連を定義できます。
|
|
115
|
+
|
|
116
|
+
#### スキーマの定義(index.md)
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
---
|
|
120
|
+
title: 機能一覧
|
|
121
|
+
schema:
|
|
122
|
+
page:
|
|
123
|
+
type: relation
|
|
124
|
+
path: "../pages"
|
|
125
|
+
title: 関連ページ
|
|
126
|
+
required: false
|
|
127
|
+
tags:
|
|
128
|
+
type: multi-relation
|
|
129
|
+
path: "../tags"
|
|
130
|
+
title: タグ
|
|
131
|
+
required: false
|
|
132
|
+
---
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### リレーションの使用
|
|
136
|
+
|
|
137
|
+
features/login.md
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
---
|
|
141
|
+
title: ログイン機能
|
|
142
|
+
page: login-page
|
|
143
|
+
tags:
|
|
144
|
+
- authentication
|
|
145
|
+
- security
|
|
146
|
+
---
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### 使い方
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
const featureRef = docClient.directory("features").mdFile("login.md")
|
|
153
|
+
|
|
154
|
+
const relatedTags = await featureRef.relations("tags")
|
|
155
|
+
|
|
156
|
+
for (const tagRef of relatedTags) {
|
|
157
|
+
const tagEntity = await tagRef.read()
|
|
158
|
+
if (tagEntity instanceof Error) continue
|
|
159
|
+
console.log(tagEntity.content.title)
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 使い方
|
|
164
|
+
|
|
165
|
+
### 初期設定
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
import { DocClient, DocFileSystem, DocPathSystem } from "@interactive-inc/docs-client"
|
|
169
|
+
|
|
170
|
+
const docClient = new DocClient({
|
|
171
|
+
fileSystem: new DocFileSystem({
|
|
172
|
+
basePath: "/path/to/your-repo/docs",
|
|
173
|
+
pathSystem: new DocPathSystem(),
|
|
174
|
+
}),
|
|
175
|
+
})
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### ファイルの読み書き
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
// ファイル読み取り
|
|
182
|
+
const fileRef = docClient
|
|
183
|
+
.directory("specifications/api")
|
|
184
|
+
.mdFile("authentication.md")
|
|
185
|
+
|
|
186
|
+
const entity = await fileRef.read()
|
|
187
|
+
if (entity instanceof Error) throw entity
|
|
188
|
+
|
|
189
|
+
console.log(entity.content.body)
|
|
190
|
+
console.log(entity.content.frontMatter.value)
|
|
191
|
+
|
|
192
|
+
// ファイル作成・更新
|
|
193
|
+
await fileRef.writeContent(`---
|
|
194
|
+
title: 認証API仕様
|
|
195
|
+
version: 2.0.0
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
# 認証API仕様
|
|
199
|
+
|
|
200
|
+
POST /api/v2/auth/login
|
|
201
|
+
`)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### FrontMatterの操作
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
const entity = await fileRef.read()
|
|
208
|
+
if (entity instanceof Error) throw entity
|
|
209
|
+
|
|
210
|
+
// メタデータ更新
|
|
211
|
+
const newFrontMatter = new DocFrontMatterMdValue({
|
|
212
|
+
...entity.content.frontMatter.value,
|
|
213
|
+
milestone: "2025.02",
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
const newContent = entity.content.withFrontMatter(newFrontMatter)
|
|
217
|
+
await fileRef.writeContent(newContent.toText())
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### アーカイブ操作
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
// ファイルをアーカイブ
|
|
224
|
+
const fileRef = docClient
|
|
225
|
+
.directory("specifications/api/v1")
|
|
226
|
+
.mdFile("legacy-endpoints.md")
|
|
227
|
+
await fileRef.archive()
|
|
228
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { DocDirectoryReference } from "./doc-directory-reference";
|
|
2
|
+
import { DocFileIndexReference } from "./doc-file-index-reference";
|
|
3
|
+
import { DocFileMdReference } from "./doc-file-md-reference";
|
|
4
|
+
import type { DocFileSystem } from "./doc-file-system";
|
|
5
|
+
import { DocFileTreeSystem } from "./doc-file-tree-system";
|
|
6
|
+
import { DocFileUnknownReference } from "./doc-file-unknown-reference";
|
|
7
|
+
import { DocMarkdownSystem } from "./doc-markdown-system";
|
|
8
|
+
import { DocPathSystem } from "./doc-path-system";
|
|
9
|
+
import type { DocTreeDirectoryNode, DocTreeFileNode } from "./types";
|
|
10
|
+
type Props = {
|
|
11
|
+
fileSystem: DocFileSystem;
|
|
12
|
+
pathSystem?: DocPathSystem;
|
|
13
|
+
markdownSystem?: DocMarkdownSystem;
|
|
14
|
+
fileTreeSystem?: DocFileTreeSystem;
|
|
15
|
+
/**
|
|
16
|
+
* default: "index.md"
|
|
17
|
+
*/
|
|
18
|
+
indexFileName?: string;
|
|
19
|
+
/**
|
|
20
|
+
* default: "_"
|
|
21
|
+
*/
|
|
22
|
+
archiveDirectoryName?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare class DocClient {
|
|
25
|
+
readonly fileSystem: DocFileSystem;
|
|
26
|
+
readonly pathSystem: DocPathSystem;
|
|
27
|
+
readonly markdownSystem: DocMarkdownSystem;
|
|
28
|
+
readonly fileTreeSystem: DocFileTreeSystem;
|
|
29
|
+
readonly indexFileName: string;
|
|
30
|
+
readonly archiveDirectoryName: string;
|
|
31
|
+
constructor(props: Props);
|
|
32
|
+
basePath(): string;
|
|
33
|
+
/**
|
|
34
|
+
* ファイル参照を取得
|
|
35
|
+
*/
|
|
36
|
+
file(relativePath: string): DocFileMdReference | DocFileUnknownReference;
|
|
37
|
+
/**
|
|
38
|
+
* Markdownファイル参照を取得
|
|
39
|
+
*/
|
|
40
|
+
mdFile(relativePath: string): DocFileMdReference;
|
|
41
|
+
/**
|
|
42
|
+
* インデックスファイル参照を取得
|
|
43
|
+
*/
|
|
44
|
+
indexFile(directoryPath: string): DocFileIndexReference;
|
|
45
|
+
/**
|
|
46
|
+
* ディレクトリ参照を取得
|
|
47
|
+
*/
|
|
48
|
+
directory(relativePath: string): DocDirectoryReference;
|
|
49
|
+
/**
|
|
50
|
+
* ファイルツリーを取得
|
|
51
|
+
*/
|
|
52
|
+
fileTree(directoryPath?: string): Promise<(DocTreeFileNode | DocTreeDirectoryNode)[]>;
|
|
53
|
+
/**
|
|
54
|
+
* ディレクトリツリーを取得(ディレクトリのみ)
|
|
55
|
+
*/
|
|
56
|
+
directoryTree(directoryPath?: string): Promise<DocTreeDirectoryNode[]>;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=doc-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-client.d.ts","sourceRoot":"","sources":["../lib/doc-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEpE,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,aAAa,CAAA;IACzB,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,cAAc,CAAC,EAAE,iBAAiB,CAAA;IAClC,cAAc,CAAC,EAAE,iBAAiB,CAAA;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IAErC,YAAY,KAAK,EAAE,KAAK,EAevB;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,uBAAuB,CAUvE;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAM/C;IAED;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB,CAWtD;IAED;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAQrD;IAED;;OAEG;IACG,QAAQ,CACZ,aAAa,SAAK,GACjB,OAAO,CAAC,CAAC,eAAe,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAGrD;IAED;;OAEG;IACG,aAAa,CAAC,aAAa,SAAK,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAGvE;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { DocDirectoryReference } from "./doc-directory-reference";
|
|
2
|
+
import { DocFileIndexReference } from "./doc-file-index-reference";
|
|
3
|
+
import { DocFileMdReference } from "./doc-file-md-reference";
|
|
4
|
+
import { DocFileTreeSystem } from "./doc-file-tree-system";
|
|
5
|
+
import { DocFileUnknownReference } from "./doc-file-unknown-reference";
|
|
6
|
+
import { DocMarkdownSystem } from "./doc-markdown-system";
|
|
7
|
+
import { DocPathSystem } from "./doc-path-system";
|
|
8
|
+
export class DocClient {
|
|
9
|
+
fileSystem;
|
|
10
|
+
pathSystem;
|
|
11
|
+
markdownSystem;
|
|
12
|
+
fileTreeSystem;
|
|
13
|
+
indexFileName;
|
|
14
|
+
archiveDirectoryName;
|
|
15
|
+
constructor(props) {
|
|
16
|
+
this.fileSystem = props.fileSystem;
|
|
17
|
+
this.pathSystem = props.pathSystem ?? new DocPathSystem();
|
|
18
|
+
this.markdownSystem = props.markdownSystem ?? new DocMarkdownSystem();
|
|
19
|
+
this.indexFileName = props.indexFileName ?? "index.md";
|
|
20
|
+
this.archiveDirectoryName = props.archiveDirectoryName ?? "_";
|
|
21
|
+
this.fileTreeSystem =
|
|
22
|
+
props.fileTreeSystem ??
|
|
23
|
+
new DocFileTreeSystem({
|
|
24
|
+
fileSystem: this.fileSystem,
|
|
25
|
+
pathSystem: this.pathSystem,
|
|
26
|
+
indexFileName: this.indexFileName,
|
|
27
|
+
archiveDirectoryName: this.archiveDirectoryName,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
basePath() {
|
|
31
|
+
return this.fileSystem.getBasePath();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* ファイル参照を取得
|
|
35
|
+
*/
|
|
36
|
+
file(relativePath) {
|
|
37
|
+
if (relativePath.endsWith(".md")) {
|
|
38
|
+
return this.mdFile(relativePath);
|
|
39
|
+
}
|
|
40
|
+
return new DocFileUnknownReference({
|
|
41
|
+
path: relativePath,
|
|
42
|
+
fileSystem: this.fileSystem,
|
|
43
|
+
pathSystem: this.pathSystem,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Markdownファイル参照を取得
|
|
48
|
+
*/
|
|
49
|
+
mdFile(relativePath) {
|
|
50
|
+
return new DocFileMdReference({
|
|
51
|
+
path: relativePath,
|
|
52
|
+
fileSystem: this.fileSystem,
|
|
53
|
+
pathSystem: this.pathSystem,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* インデックスファイル参照を取得
|
|
58
|
+
*/
|
|
59
|
+
indexFile(directoryPath) {
|
|
60
|
+
const indexPath = directoryPath === ""
|
|
61
|
+
? this.indexFileName
|
|
62
|
+
: `${directoryPath}/${this.indexFileName}`;
|
|
63
|
+
return new DocFileIndexReference({
|
|
64
|
+
path: indexPath,
|
|
65
|
+
fileSystem: this.fileSystem,
|
|
66
|
+
pathSystem: this.pathSystem,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ディレクトリ参照を取得
|
|
71
|
+
*/
|
|
72
|
+
directory(relativePath) {
|
|
73
|
+
return new DocDirectoryReference({
|
|
74
|
+
path: relativePath,
|
|
75
|
+
indexFileName: this.indexFileName,
|
|
76
|
+
archiveDirectoryName: this.archiveDirectoryName,
|
|
77
|
+
fileSystem: this.fileSystem,
|
|
78
|
+
pathSystem: this.pathSystem,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* ファイルツリーを取得
|
|
83
|
+
*/
|
|
84
|
+
async fileTree(directoryPath = "") {
|
|
85
|
+
const results = await this.fileTreeSystem.buildFileTree(directoryPath);
|
|
86
|
+
return results.map((node) => node.toJson());
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* ディレクトリツリーを取得(ディレクトリのみ)
|
|
90
|
+
*/
|
|
91
|
+
async directoryTree(directoryPath = "") {
|
|
92
|
+
const results = await this.fileTreeSystem.buildDirectoryTree(directoryPath);
|
|
93
|
+
return results.map((node) => node.toJson());
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-client.test.d.ts","sourceRoot":"","sources":["../lib/doc-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { DocClient } from "./doc-client";
|
|
3
|
+
import { DocFileSystem } from "./doc-file-system";
|
|
4
|
+
import { DocMarkdownSystem } from "./doc-markdown-system";
|
|
5
|
+
import { DocPathSystem } from "./doc-path-system";
|
|
6
|
+
test("DocClient - デフォルト値でインスタンスを作成", () => {
|
|
7
|
+
const pathSystem = new DocPathSystem();
|
|
8
|
+
const fileSystem = new DocFileSystem({ basePath: "/test", pathSystem });
|
|
9
|
+
const client = new DocClient({ fileSystem });
|
|
10
|
+
expect(client.fileSystem).toBe(fileSystem);
|
|
11
|
+
expect(client.pathSystem).toBeInstanceOf(DocPathSystem);
|
|
12
|
+
expect(client.markdownSystem).toBeInstanceOf(DocMarkdownSystem);
|
|
13
|
+
expect(client.indexFileName).toBe("index.md");
|
|
14
|
+
expect(client.archiveDirectoryName).toBe("_");
|
|
15
|
+
});
|
|
16
|
+
test("DocClient - カスタム値でインスタンスを作成", () => {
|
|
17
|
+
const pathSystem = new DocPathSystem();
|
|
18
|
+
const fileSystem = new DocFileSystem({ basePath: "/test", pathSystem });
|
|
19
|
+
const markdownSystem = new DocMarkdownSystem();
|
|
20
|
+
const client = new DocClient({
|
|
21
|
+
fileSystem,
|
|
22
|
+
pathSystem,
|
|
23
|
+
markdownSystem,
|
|
24
|
+
indexFileName: "README.md",
|
|
25
|
+
archiveDirectoryName: ".archive",
|
|
26
|
+
});
|
|
27
|
+
expect(client.fileSystem).toBe(fileSystem);
|
|
28
|
+
expect(client.pathSystem).toBe(pathSystem);
|
|
29
|
+
expect(client.markdownSystem).toBe(markdownSystem);
|
|
30
|
+
expect(client.indexFileName).toBe("README.md");
|
|
31
|
+
expect(client.archiveDirectoryName).toBe(".archive");
|
|
32
|
+
});
|
|
33
|
+
test("DocClient - basePathを取得", () => {
|
|
34
|
+
const pathSystem = new DocPathSystem();
|
|
35
|
+
const fileSystem = new DocFileSystem({ basePath: "/test/docs", pathSystem });
|
|
36
|
+
const client = new DocClient({ fileSystem });
|
|
37
|
+
expect(client.basePath()).toBe("/test/docs");
|
|
38
|
+
});
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { DocFileIndexReference } from "./doc-file-index-reference";
|
|
2
|
+
import { DocFileMdReference } from "./doc-file-md-reference";
|
|
3
|
+
import type { DocFileSystem } from "./doc-file-system";
|
|
4
|
+
import { DocFileUnknownReference } from "./doc-file-unknown-reference";
|
|
5
|
+
import type { DocPathSystem } from "./doc-path-system";
|
|
6
|
+
import { DocFileIndexEntity } from "./entities/doc-file-index-entity";
|
|
7
|
+
import { DocFileMdEntity } from "./entities/doc-file-md-entity";
|
|
8
|
+
import { DocFileUnknownEntity } from "./entities/doc-file-unknown-entity";
|
|
9
|
+
type Props = {
|
|
10
|
+
path: string;
|
|
11
|
+
indexFileName: string;
|
|
12
|
+
archiveDirectoryName: string;
|
|
13
|
+
fileSystem: DocFileSystem;
|
|
14
|
+
pathSystem: DocPathSystem;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* ディレクトリの参照
|
|
18
|
+
*/
|
|
19
|
+
export declare class DocDirectoryReference {
|
|
20
|
+
private readonly props;
|
|
21
|
+
private readonly pathSystem;
|
|
22
|
+
constructor(props: Props);
|
|
23
|
+
get fileSystem(): DocFileSystem;
|
|
24
|
+
get basePath(): string;
|
|
25
|
+
get relativePath(): string;
|
|
26
|
+
get absolutePath(): string;
|
|
27
|
+
get indexFileName(): string;
|
|
28
|
+
get indexFilePath(): string;
|
|
29
|
+
get archiveDirectoryName(): string;
|
|
30
|
+
fileNames(): Promise<string[]>;
|
|
31
|
+
archivedFileNames(): Promise<string[]>;
|
|
32
|
+
filesGenerator(): AsyncGenerator<DocFileMdReference | DocFileUnknownReference, void, unknown>;
|
|
33
|
+
mdFilesGenerator(): AsyncGenerator<DocFileMdReference, void, unknown>;
|
|
34
|
+
files(): Promise<(DocFileMdReference | DocFileUnknownReference)[]>;
|
|
35
|
+
mdFiles(): Promise<DocFileMdReference[]>;
|
|
36
|
+
file(fileName: string): DocFileMdReference | DocFileUnknownReference;
|
|
37
|
+
mdFile(fileName: string): DocFileMdReference;
|
|
38
|
+
readFiles(): Promise<(DocFileMdEntity | DocFileUnknownEntity)[]>;
|
|
39
|
+
readMdFiles(): Promise<DocFileMdEntity[]>;
|
|
40
|
+
readUnknownFiles(): Promise<DocFileUnknownEntity[]>;
|
|
41
|
+
/**
|
|
42
|
+
* サブディレクトリ名の一覧を取得
|
|
43
|
+
*/
|
|
44
|
+
directoryNames(): Promise<string[]>;
|
|
45
|
+
/**
|
|
46
|
+
* サブディレクトリの参照を取得
|
|
47
|
+
*/
|
|
48
|
+
directories(): Promise<DocDirectoryReference[]>;
|
|
49
|
+
/**
|
|
50
|
+
* 単一のサブディレクトリ参照を取得
|
|
51
|
+
*/
|
|
52
|
+
directory(directoryName: string): DocDirectoryReference;
|
|
53
|
+
indexFile(): DocFileIndexReference;
|
|
54
|
+
readIndexFile(): Promise<DocFileIndexEntity>;
|
|
55
|
+
writeFile(entity: DocFileIndexEntity | DocFileUnknownEntity | DocFileMdEntity): Promise<Error | null>;
|
|
56
|
+
exists(): Promise<boolean>;
|
|
57
|
+
private generateUniqueFileName;
|
|
58
|
+
private fileExists;
|
|
59
|
+
/**
|
|
60
|
+
* 新しいMarkdownファイルを作成する
|
|
61
|
+
*/
|
|
62
|
+
createMdFile(fileName?: string): Promise<DocFileMdReference>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=doc-directory-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-directory-reference.d.ts","sourceRoot":"","sources":["../lib/doc-directory-reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAEzE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,UAAU,EAAE,aAAa,CAAA;IACzB,UAAU,EAAE,aAAa,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAE1C,YAA6B,KAAK,EAAE,KAAK,EAGxC;IAED,IAAI,UAAU,IAAI,aAAa,CAE9B;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,IAAI,MAAM,CAM1B;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAEK,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnC;IAEK,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW3C;IAEM,cAAc,IAAI,cAAc,CACrC,kBAAkB,GAAG,uBAAuB,EAC5C,IAAI,EACJ,OAAO,CACR,CA+CA;IAEM,gBAAgB,IAAI,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAQ3E;IAEK,KAAK,IAAI,OAAO,CAAC,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAQvE;IAEK,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAS7C;IAED,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,uBAAuB,CAgBnE;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAM3C;IAEK,SAAS,IAAI,OAAO,CAAC,CAAC,eAAe,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAUrE;IAEK,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAW9C;IAEK,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAWxD;IAED;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBxC;IAED;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAcpD;IAED;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB,CAUtD;IAED,SAAS,IAAI,qBAAqB,CAMjC;IAEK,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIjD;IAEK,SAAS,CACb,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,eAAe,GAClE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAuBvB;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;YAKa,sBAAsB;YAmBtB,UAAU;IAKxB;;OAEG;IACG,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqBjE;CACF"}
|