@interactive-inc/docs-client 0.0.10 → 0.0.11

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/build/models.js CHANGED
@@ -6,76 +6,69 @@ var zDocFilePath = z.object({
6
6
  fullPath: z.string(),
7
7
  nameWithExtension: z.string()
8
8
  });
9
- var zDocSchemaFieldTypeText = z.literal("text");
10
- var zDocSchemaFieldTypeNumber = z.literal("number");
11
- var zDocSchemaFieldTypeBoolean = z.literal("boolean");
12
- var zDocSchemaFieldTypeMultiText = z.literal("multi-text");
13
- var zDocSchemaFieldTypeMultiNumber = z.literal("multi-number");
14
- var zDocSchemaFieldTypeMultiBoolean = z.literal("multi-boolean");
15
- var zDocSchemaFieldTypeRelation = z.literal("relation");
16
- var zDocSchemaFieldTypeMultiRelation = z.literal("multi-relation");
17
- var zDocSchemaFieldTypeSelectText = z.literal("select-text");
18
- var zDocSchemaFieldTypeSelectNumber = z.literal("select-number");
19
- var zDocSchemaFieldTypeMultiSelectText = z.literal("multi-select-text");
20
- var zDocSchemaFieldTypeMultiSelectNumber = z.literal("multi-select-number");
21
- var zDocSchemaFieldType = z.union([
22
- zDocSchemaFieldTypeText,
23
- zDocSchemaFieldTypeNumber,
24
- zDocSchemaFieldTypeBoolean,
25
- zDocSchemaFieldTypeMultiText,
26
- zDocSchemaFieldTypeMultiNumber,
27
- zDocSchemaFieldTypeMultiBoolean,
28
- zDocSchemaFieldTypeRelation,
29
- zDocSchemaFieldTypeMultiRelation,
30
- zDocSchemaFieldTypeSelectText,
31
- zDocSchemaFieldTypeSelectNumber,
32
- zDocSchemaFieldTypeMultiSelectText,
33
- zDocSchemaFieldTypeMultiSelectNumber
9
+ var zDocMetaFieldTypeText = z.literal("text");
10
+ var zDocMetaFieldTypeNumber = z.literal("number");
11
+ var zDocMetaFieldTypeBoolean = z.literal("boolean");
12
+ var zDocMetaFieldTypeSelectText = z.literal("select-text");
13
+ var zDocMetaFieldTypeSelectNumber = z.literal("select-number");
14
+ var zDocMetaFieldTypeRelation = z.literal("relation");
15
+ var zDocMetaFieldTypeMultiText = z.literal("multi-text");
16
+ var zDocMetaFieldTypeMultiNumber = z.literal("multi-number");
17
+ var zDocMetaFieldTypeMultiRelation = z.literal("multi-relation");
18
+ var zDocMetaFieldTypeMultiSelectText = z.literal("multi-select-text");
19
+ var zDocMetaFieldTypeMultiSelectNumber = z.literal(
20
+ "multi-select-number"
21
+ );
22
+ var zDocMetaFieldType = z.union([
23
+ zDocMetaFieldTypeText,
24
+ zDocMetaFieldTypeNumber,
25
+ zDocMetaFieldTypeBoolean,
26
+ zDocMetaFieldTypeMultiText,
27
+ zDocMetaFieldTypeMultiNumber,
28
+ zDocMetaFieldTypeRelation,
29
+ zDocMetaFieldTypeMultiRelation,
30
+ zDocMetaFieldTypeSelectText,
31
+ zDocMetaFieldTypeSelectNumber,
32
+ zDocMetaFieldTypeMultiSelectText,
33
+ zDocMetaFieldTypeMultiSelectNumber
34
34
  ]);
35
35
  var zDocSchemaFieldText = z.object({
36
- type: zDocSchemaFieldTypeText,
36
+ type: zDocMetaFieldTypeText,
37
37
  required: z.boolean(),
38
38
  title: z.string().nullable(),
39
39
  description: z.string().nullable(),
40
40
  default: z.string().nullable()
41
41
  });
42
42
  var zDocSchemaFieldNumber = z.object({
43
- type: zDocSchemaFieldTypeNumber,
43
+ type: zDocMetaFieldTypeNumber,
44
44
  required: z.boolean(),
45
45
  title: z.string().nullable(),
46
46
  description: z.string().nullable(),
47
47
  default: z.number().nullable()
48
48
  });
49
49
  var zDocSchemaFieldBoolean = z.object({
50
- type: zDocSchemaFieldTypeBoolean,
50
+ type: zDocMetaFieldTypeBoolean,
51
51
  required: z.boolean(),
52
52
  title: z.string().nullable(),
53
53
  description: z.string().nullable(),
54
54
  default: z.boolean().nullable()
55
55
  });
56
56
  var zDocSchemaFieldMultiText = z.object({
57
- type: zDocSchemaFieldTypeMultiText,
57
+ type: zDocMetaFieldTypeMultiText,
58
58
  required: z.boolean(),
59
59
  title: z.string().nullable(),
60
60
  description: z.string().nullable(),
61
61
  default: z.array(z.string()).nullable()
62
62
  });
63
63
  var zDocSchemaFieldMultiNumber = z.object({
64
- type: zDocSchemaFieldTypeMultiNumber,
64
+ type: zDocMetaFieldTypeMultiNumber,
65
65
  required: z.boolean(),
66
66
  title: z.string().nullable(),
67
67
  description: z.string().nullable(),
68
68
  default: z.array(z.number()).nullable()
69
69
  });
70
- var zDocSchemaFieldMultiBoolean = z.object({
71
- type: zDocSchemaFieldTypeMultiBoolean,
72
- required: z.boolean(),
73
- title: z.string().nullable(),
74
- description: z.string().nullable(),
75
- default: z.array(z.boolean()).nullable()
76
- });
77
70
  var zDocSchemaFieldRelation = z.object({
78
- type: zDocSchemaFieldTypeRelation,
71
+ type: zDocMetaFieldTypeRelation,
79
72
  required: z.boolean(),
80
73
  title: z.string().nullable(),
81
74
  description: z.string().nullable(),
@@ -83,7 +76,7 @@ var zDocSchemaFieldRelation = z.object({
83
76
  default: z.string().nullable()
84
77
  });
85
78
  var zDocSchemaFieldMultiRelation = z.object({
86
- type: zDocSchemaFieldTypeMultiRelation,
79
+ type: zDocMetaFieldTypeMultiRelation,
87
80
  required: z.boolean(),
88
81
  title: z.string().nullable(),
89
82
  description: z.string().nullable(),
@@ -91,7 +84,7 @@ var zDocSchemaFieldMultiRelation = z.object({
91
84
  default: z.array(z.string()).nullable()
92
85
  });
93
86
  var zDocSchemaFieldSelectText = z.object({
94
- type: zDocSchemaFieldTypeSelectText,
87
+ type: zDocMetaFieldTypeSelectText,
95
88
  required: z.boolean(),
96
89
  title: z.string().nullable(),
97
90
  description: z.string().nullable(),
@@ -99,7 +92,7 @@ var zDocSchemaFieldSelectText = z.object({
99
92
  default: z.string().nullable()
100
93
  });
101
94
  var zDocSchemaFieldSelectNumber = z.object({
102
- type: zDocSchemaFieldTypeSelectNumber,
95
+ type: zDocMetaFieldTypeSelectNumber,
103
96
  required: z.boolean(),
104
97
  title: z.string().nullable(),
105
98
  description: z.string().nullable(),
@@ -107,7 +100,7 @@ var zDocSchemaFieldSelectNumber = z.object({
107
100
  default: z.number().nullable()
108
101
  });
109
102
  var zDocSchemaFieldMultiSelectText = z.object({
110
- type: zDocSchemaFieldTypeMultiSelectText,
103
+ type: zDocMetaFieldTypeMultiSelectText,
111
104
  required: z.boolean(),
112
105
  title: z.string().nullable(),
113
106
  description: z.string().nullable(),
@@ -115,20 +108,19 @@ var zDocSchemaFieldMultiSelectText = z.object({
115
108
  default: z.array(z.string()).nullable()
116
109
  });
117
110
  var zDocSchemaFieldMultiSelectNumber = z.object({
118
- type: zDocSchemaFieldTypeMultiSelectNumber,
111
+ type: zDocMetaFieldTypeMultiSelectNumber,
119
112
  required: z.boolean(),
120
113
  title: z.string().nullable(),
121
114
  description: z.string().nullable(),
122
115
  options: z.array(z.number()),
123
116
  default: z.array(z.number()).nullable()
124
117
  });
125
- var zDocSchemaField = z.union([
118
+ var zDocFileIndexSchemaField = z.union([
126
119
  zDocSchemaFieldText,
127
120
  zDocSchemaFieldNumber,
128
121
  zDocSchemaFieldBoolean,
129
122
  zDocSchemaFieldMultiText,
130
123
  zDocSchemaFieldMultiNumber,
131
- zDocSchemaFieldMultiBoolean,
132
124
  zDocSchemaFieldRelation,
133
125
  zDocSchemaFieldMultiRelation,
134
126
  zDocSchemaFieldSelectText,
@@ -136,29 +128,99 @@ var zDocSchemaField = z.union([
136
128
  zDocSchemaFieldMultiSelectText,
137
129
  zDocSchemaFieldMultiSelectNumber
138
130
  ]);
139
- var zDocFileMdFrontMatter = z.record(
131
+ var zDocMetaFieldText = z.string().nullable();
132
+ var zDocMetaFieldBoolean = z.boolean().nullable();
133
+ var zDocMetaFieldNumber = z.number().nullable();
134
+ var zDocMetaFieldSelectText = z.string().nullable();
135
+ var zDocMetaFieldSelectNumber = z.number().nullable();
136
+ var zDocMetaFieldRelation = z.string().nullable();
137
+ var zDocMetaFieldMultiText = z.string().array();
138
+ var zDocMetaFieldMultiNumber = z.number().array();
139
+ var zDocMetaFieldMultiBoolean = z.boolean().array();
140
+ var zDocMetaFieldMultiSelectText = z.string().array();
141
+ var zDocMetaFieldMultiSelectNumber = z.number().array();
142
+ var zDocMetaFieldMultiRelation = z.string().array();
143
+ var zDocMetaField = z.union([
144
+ zDocMetaFieldText,
145
+ zDocMetaFieldBoolean,
146
+ zDocMetaFieldNumber,
147
+ zDocMetaFieldSelectText,
148
+ zDocMetaFieldSelectNumber,
149
+ zDocMetaFieldRelation,
150
+ zDocMetaFieldMultiText,
151
+ zDocMetaFieldMultiNumber,
152
+ zDocMetaFieldMultiBoolean,
153
+ zDocMetaFieldMultiSelectText,
154
+ zDocMetaFieldMultiSelectNumber,
155
+ zDocMetaFieldMultiRelation
156
+ ]);
157
+ var zDocFileMdMeta = z.record(z.string(), zDocMetaField);
158
+ var zDocFileIndexSchema = z.record(
140
159
  z.string(),
141
- z.union([
142
- z.string(),
143
- z.boolean(),
144
- z.number(),
145
- z.array(z.string()),
146
- z.array(z.number()),
147
- z.array(z.boolean()),
148
- z.record(z.string(), z.unknown()),
149
- z.null()
150
- ])
160
+ zDocFileIndexSchemaField
151
161
  );
152
- var zDocSchema = z.record(z.string(), zDocSchemaField);
153
- var zDocSchemaFieldMinimal = z.object({
154
- type: zDocSchemaFieldType,
162
+ var zDocCustomSchemaFieldText = z.object({
163
+ type: zDocMetaFieldTypeText,
155
164
  required: z.boolean()
156
165
  });
157
- var zDocSchemaMinimal = z.record(z.string(), zDocSchemaFieldMinimal);
158
- var zDocFileIndexFrontMatter = z.object({
159
- type: z.literal("index-frontmatter"),
160
- icon: z.string(),
161
- schema: zDocSchema
166
+ var zDocCustomSchemaFieldNumber = z.object({
167
+ type: zDocMetaFieldTypeNumber,
168
+ required: z.boolean()
169
+ });
170
+ var zDocCustomSchemaFieldBoolean = z.object({
171
+ type: zDocMetaFieldTypeBoolean,
172
+ required: z.boolean()
173
+ });
174
+ var zDocCustomSchemaFieldRelation = z.object({
175
+ type: zDocMetaFieldTypeRelation,
176
+ required: z.boolean()
177
+ });
178
+ var zDocCustomSchemaFieldSelectText = z.object({
179
+ type: zDocMetaFieldTypeSelectText,
180
+ required: z.boolean()
181
+ });
182
+ var zDocCustomSchemaFieldSelectNumber = z.object({
183
+ type: zDocMetaFieldTypeSelectNumber,
184
+ required: z.boolean()
185
+ });
186
+ var zDocCustomSchemaFieldMultiText = z.object({
187
+ type: zDocMetaFieldTypeMultiText,
188
+ required: z.boolean()
189
+ });
190
+ var zDocCustomSchemaFieldMultiNumber = z.object({
191
+ type: zDocMetaFieldTypeMultiNumber,
192
+ required: z.boolean()
193
+ });
194
+ var zDocCustomSchemaFieldMultiRelation = z.object({
195
+ type: zDocMetaFieldTypeMultiRelation,
196
+ required: z.boolean()
197
+ });
198
+ var zDocCustomSchemaFieldMultiSelectText = z.object({
199
+ type: zDocMetaFieldTypeMultiSelectText,
200
+ required: z.boolean()
201
+ });
202
+ var zDocCustomSchemaFieldMultiSelectNumber = z.object({
203
+ type: zDocMetaFieldTypeMultiSelectNumber,
204
+ required: z.boolean()
205
+ });
206
+ var zDocCustomSchemaField = z.union([
207
+ zDocCustomSchemaFieldText,
208
+ zDocCustomSchemaFieldNumber,
209
+ zDocCustomSchemaFieldBoolean,
210
+ zDocCustomSchemaFieldRelation,
211
+ zDocCustomSchemaFieldSelectText,
212
+ zDocCustomSchemaFieldSelectNumber,
213
+ zDocCustomSchemaFieldMultiText,
214
+ zDocCustomSchemaFieldMultiNumber,
215
+ zDocCustomSchemaFieldMultiRelation,
216
+ zDocCustomSchemaFieldMultiSelectText,
217
+ zDocCustomSchemaFieldMultiSelectNumber
218
+ ]);
219
+ var zDocCustomSchema = z.record(z.string(), zDocCustomSchemaField);
220
+ var zDocFileIndexMeta = z.object({
221
+ type: z.literal("index-meta"),
222
+ icon: z.string().nullable(),
223
+ schema: zDocFileIndexSchema
162
224
  });
163
225
  var zDocRelationField = z.object({
164
226
  fieldName: z.string(),
@@ -175,24 +237,24 @@ var zDocRelation = z.object({
175
237
  path: z.string(),
176
238
  files: z.array(zDocRelationFile)
177
239
  });
178
- var zDocFileContentMd = z.object({
240
+ var zDocFileMdContent = z.object({
179
241
  type: z.literal("markdown-content"),
180
242
  body: z.string(),
181
243
  title: z.string(),
182
244
  description: z.string(),
183
- frontMatter: zDocFileMdFrontMatter
245
+ meta: zDocFileMdMeta
184
246
  });
185
- var zDocFileContentIndex = z.object({
247
+ var zDocFileIndexContent = z.object({
186
248
  type: z.literal("markdown-index"),
187
249
  body: z.string(),
188
250
  title: z.string(),
189
251
  description: z.string(),
190
- frontMatter: zDocFileIndexFrontMatter
252
+ meta: zDocFileIndexMeta
191
253
  });
192
254
  var zDocFileIndex = z.object({
193
255
  type: z.literal("index"),
194
256
  path: zDocFilePath,
195
- content: zDocFileContentIndex,
257
+ content: zDocFileIndexContent,
196
258
  isArchived: z.boolean()
197
259
  });
198
260
  var zDocFileUnknown = z.object({
@@ -205,7 +267,7 @@ var zDocFileUnknown = z.object({
205
267
  var zDocFileMd = z.object({
206
268
  type: z.literal("markdown"),
207
269
  path: zDocFilePath,
208
- content: zDocFileContentMd,
270
+ content: zDocFileMdContent,
209
271
  isArchived: z.boolean()
210
272
  });
211
273
  var zDocFile = z.union([zDocFileIndex, zDocFileMd, zDocFileUnknown]);
@@ -227,24 +289,76 @@ var zDocTreeDirectoryNode = z.lazy(() => {
227
289
  });
228
290
  });
229
291
  var zDocTreeNode = z.union([zDocTreeFileNode, zDocTreeDirectoryNode]);
292
+ var zDocClientConfig = z.object({
293
+ defaultIndexIcon: z.string().optional(),
294
+ indexFileName: z.string().optional(),
295
+ archiveDirectoryName: z.string().optional(),
296
+ defaultDirectoryName: z.string().optional(),
297
+ indexMetaIncludes: z.array(z.string()).optional(),
298
+ directoryExcludes: z.array(z.string()).optional()
299
+ }).transform((data) => ({
300
+ defaultIndexIcon: data.defaultIndexIcon ?? "\u{1F4C3}",
301
+ indexFileName: data.indexFileName ?? "index.md",
302
+ archiveDirectoryName: data.archiveDirectoryName ?? "_",
303
+ defaultDirectoryName: data.defaultDirectoryName ?? "Directory",
304
+ indexMetaIncludes: data.indexMetaIncludes ?? [],
305
+ directoryExcludes: data.directoryExcludes ?? [".vitepress"]
306
+ }));
230
307
  export {
308
+ zDocClientConfig,
309
+ zDocCustomSchema,
310
+ zDocCustomSchemaField,
311
+ zDocCustomSchemaFieldBoolean,
312
+ zDocCustomSchemaFieldMultiNumber,
313
+ zDocCustomSchemaFieldMultiRelation,
314
+ zDocCustomSchemaFieldMultiSelectNumber,
315
+ zDocCustomSchemaFieldMultiSelectText,
316
+ zDocCustomSchemaFieldMultiText,
317
+ zDocCustomSchemaFieldNumber,
318
+ zDocCustomSchemaFieldRelation,
319
+ zDocCustomSchemaFieldSelectNumber,
320
+ zDocCustomSchemaFieldSelectText,
321
+ zDocCustomSchemaFieldText,
231
322
  zDocFile,
232
- zDocFileContentIndex,
233
- zDocFileContentMd,
234
323
  zDocFileIndex,
235
- zDocFileIndexFrontMatter,
324
+ zDocFileIndexContent,
325
+ zDocFileIndexMeta,
326
+ zDocFileIndexSchema,
327
+ zDocFileIndexSchemaField,
236
328
  zDocFileMd,
237
- zDocFileMdFrontMatter,
329
+ zDocFileMdContent,
330
+ zDocFileMdMeta,
238
331
  zDocFilePath,
239
332
  zDocFileUnknown,
333
+ zDocMetaField,
334
+ zDocMetaFieldBoolean,
335
+ zDocMetaFieldMultiBoolean,
336
+ zDocMetaFieldMultiNumber,
337
+ zDocMetaFieldMultiRelation,
338
+ zDocMetaFieldMultiSelectNumber,
339
+ zDocMetaFieldMultiSelectText,
340
+ zDocMetaFieldMultiText,
341
+ zDocMetaFieldNumber,
342
+ zDocMetaFieldRelation,
343
+ zDocMetaFieldSelectNumber,
344
+ zDocMetaFieldSelectText,
345
+ zDocMetaFieldText,
346
+ zDocMetaFieldType,
347
+ zDocMetaFieldTypeBoolean,
348
+ zDocMetaFieldTypeMultiNumber,
349
+ zDocMetaFieldTypeMultiRelation,
350
+ zDocMetaFieldTypeMultiSelectNumber,
351
+ zDocMetaFieldTypeMultiSelectText,
352
+ zDocMetaFieldTypeMultiText,
353
+ zDocMetaFieldTypeNumber,
354
+ zDocMetaFieldTypeRelation,
355
+ zDocMetaFieldTypeSelectNumber,
356
+ zDocMetaFieldTypeSelectText,
357
+ zDocMetaFieldTypeText,
240
358
  zDocRelation,
241
359
  zDocRelationField,
242
360
  zDocRelationFile,
243
- zDocSchema,
244
- zDocSchemaField,
245
361
  zDocSchemaFieldBoolean,
246
- zDocSchemaFieldMinimal,
247
- zDocSchemaFieldMultiBoolean,
248
362
  zDocSchemaFieldMultiNumber,
249
363
  zDocSchemaFieldMultiRelation,
250
364
  zDocSchemaFieldMultiSelectNumber,
@@ -255,8 +369,6 @@ export {
255
369
  zDocSchemaFieldSelectNumber,
256
370
  zDocSchemaFieldSelectText,
257
371
  zDocSchemaFieldText,
258
- zDocSchemaFieldType,
259
- zDocSchemaMinimal,
260
372
  zDocTreeDirectoryNode,
261
373
  zDocTreeFileNode,
262
374
  zDocTreeNode
package/debug/debug.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { DocClient } from "@/doc-client"
2
+ import { DocFileSystem } from "@/doc-file-system"
3
+
4
+ const client = new DocClient({
5
+ fileSystem: new DocFileSystem({ basePath: "../../docs" }),
6
+ })
7
+
8
+ const pagesRef = client.directory("docs-studio/pages", {
9
+ features: {
10
+ type: "multi-relation",
11
+ required: true,
12
+ },
13
+ })
14
+
15
+ const mdFileRef = await pagesRef.mdFile("document-editor")
16
+
17
+ const mdFile = await mdFileRef.read()
18
+
19
+ if (mdFile instanceof Error) {
20
+ throw mdFile
21
+ }
22
+
23
+ mdFile.withContent(
24
+ mdFile.content.withMetaProperty("features", [
25
+ "edit-document-content",
26
+ "delete-document",
27
+ "foo",
28
+ ]),
29
+ )
30
+
31
+ const relations = await mdFileRef.relations("features", {
32
+ "is-done": {
33
+ required: true,
34
+ type: "boolean",
35
+ },
36
+ })
37
+
38
+ const file = await relations[0].read()
39
+
40
+ console.log("relations", file)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interactive-inc/docs-client",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "check": "tsgo --noEmit",
package/PRODUCT.md DELETED
@@ -1,108 +0,0 @@
1
- # docs-client
2
-
3
- ドキュメント管理システムのクライアントライブラリ。Markdownファイルを構造化された形式で管理し、フロントマターによるメタデータ管理、スキーマベースのバリデーション、ファイル間のリレーション機能を提供するゆ🥹
4
-
5
- ## 主要機能
6
-
7
- ### ドキュメント管理
8
-
9
- - Markdownファイルの読み書き
10
- - フロントマター(YAML形式)の解析と生成
11
- - ファイルのアーカイブと復元
12
- - 階層的なディレクトリ構造の管理
13
-
14
- ### スキーマシステム
15
-
16
- - index.mdファイルでのスキーマ定義
17
- - Zodを使用した型安全なスキーマバリデーション
18
- - デフォルト値の自動適用
19
- - 動的なスキーマ生成(Zodスキーマ未定義時)
20
-
21
- ### リレーション機能
22
-
23
- - ファイル間の参照関係を定義
24
- - 単一リレーション(relation)と複数リレーション(multi-relation)
25
- - スキーマベースの型安全な参照
26
-
27
- ### ファイルツリー
28
-
29
- - ディレクトリ構造の再帰的探索
30
- - ファイルツリーとディレクトリツリーの生成
31
- - アーカイブディレクトリの特別扱い
32
-
33
- ## アーキテクチャ
34
-
35
- ### エンティティ(entities/)
36
-
37
- - **DocFileMdEntity** - Markdownファイルの表現
38
- - **DocDirectoryEntity** - ディレクトリの表現
39
- - **DocTreeFileNode/DocTreeDirectoryNode** - ツリー構造のノード
40
-
41
- ### 値オブジェクト(values/)
42
-
43
- - **DocFileContentMdValue** - Markdownコンテンツ(フロントマター + 本文)
44
- - **DocFrontMatterIndexValue** - index.mdのフロントマター
45
- - **DocFrontMatterMdValue** - 通常のMarkdownファイルのフロントマター
46
- - **DocSchemaValue** - スキーマ定義と検証機能
47
- - **DocSchemaFieldValue** - スキーマフィールドの定義
48
- - **DocSchemaBuilder** - 動的スキーマ生成
49
-
50
- ### リファレンス(references/)
51
-
52
- - **DocFileIndexReference** - index.mdファイルの参照
53
- - **DocFileMdReference** - Markdownファイルの参照
54
- - **DocDirectoryReference** - ディレクトリの参照
55
-
56
- ### システム
57
-
58
- - **DocFileTreeSystem** - ファイルツリーの構築
59
- - **DocClient** - クライアントAPI
60
- - **DocEngine** - ドキュメント処理エンジンのクライアント側統合
61
-
62
- ## 使用例
63
-
64
- ```typescript
65
- // クライアントの初期化
66
- const client = new DocClient(cwd)
67
-
68
- // Markdownファイルの読み込み
69
- const fileRef = client.mdFile("products/example.md")
70
- const entity = await fileRef.read()
71
-
72
- // スキーマの取得と検証
73
- const indexRef = client.indexFile("products")
74
- const indexEntity = await indexRef.read()
75
- const schema = indexEntity.content.frontMatter.schema()
76
-
77
- // リレーションの取得
78
- const categoryRef = await fileRef.relation("category")
79
-
80
- // ファイルツリーの構築
81
- const fileTree = await client.fileTree("products")
82
- ```
83
-
84
- ## 特徴
85
-
86
- ### 型安全性
87
-
88
- - TypeScriptのジェネリクスを活用
89
- - Zodスキーマによる実行時検証
90
- - 型推論による開発体験の向上
91
-
92
- ### 不変性
93
-
94
- - すべての値オブジェクトは不変
95
- - Object.freeze()による状態の固定
96
- - Fluent APIによる操作
97
-
98
- ### 拡張性
99
-
100
- - 依存性注入(DI)パターン
101
- - 明確な責任分離
102
- - カスタムスキーマフィールドの追加が容易
103
-
104
- ## 依存関係
105
-
106
- - **@packages/server** - サーバー側のドキュメント処理エンジン
107
- - **zod** - スキーマ定義とバリデーション
108
- - **TypeScript** - 型安全性の保証