@interactive-inc/docs-client 0.0.10 → 0.0.13

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,113 @@ 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
+ z.null()
157
+ ]);
158
+ var zDocFileMdMeta = z.record(z.string(), zDocMetaField);
159
+ var zDocFileMdMetaInput = z.record(
140
160
  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
- ])
161
+ zDocMetaField.or(z.undefined())
151
162
  );
152
- var zDocSchema = z.record(z.string(), zDocSchemaField);
153
- var zDocSchemaFieldMinimal = z.object({
154
- type: zDocSchemaFieldType,
163
+ var zDocFileIndexSchema = z.record(
164
+ z.string(),
165
+ zDocFileIndexSchemaField
166
+ );
167
+ var zDocFileIndexSchemaInput = z.record(
168
+ z.string(),
169
+ zDocFileIndexSchemaField.or(z.undefined())
170
+ );
171
+ var zDocCustomSchemaFieldText = z.object({
172
+ type: zDocMetaFieldTypeText,
155
173
  required: z.boolean()
156
174
  });
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
175
+ var zDocCustomSchemaFieldNumber = z.object({
176
+ type: zDocMetaFieldTypeNumber,
177
+ required: z.boolean()
178
+ });
179
+ var zDocCustomSchemaFieldBoolean = z.object({
180
+ type: zDocMetaFieldTypeBoolean,
181
+ required: z.boolean()
182
+ });
183
+ var zDocCustomSchemaFieldRelation = z.object({
184
+ type: zDocMetaFieldTypeRelation,
185
+ required: z.boolean()
186
+ });
187
+ var zDocCustomSchemaFieldSelectText = z.object({
188
+ type: zDocMetaFieldTypeSelectText,
189
+ required: z.boolean()
190
+ });
191
+ var zDocCustomSchemaFieldSelectNumber = z.object({
192
+ type: zDocMetaFieldTypeSelectNumber,
193
+ required: z.boolean()
194
+ });
195
+ var zDocCustomSchemaFieldMultiText = z.object({
196
+ type: zDocMetaFieldTypeMultiText,
197
+ required: z.boolean()
198
+ });
199
+ var zDocCustomSchemaFieldMultiNumber = z.object({
200
+ type: zDocMetaFieldTypeMultiNumber,
201
+ required: z.boolean()
202
+ });
203
+ var zDocCustomSchemaFieldMultiRelation = z.object({
204
+ type: zDocMetaFieldTypeMultiRelation,
205
+ required: z.boolean()
206
+ });
207
+ var zDocCustomSchemaFieldMultiSelectText = z.object({
208
+ type: zDocMetaFieldTypeMultiSelectText,
209
+ required: z.boolean()
210
+ });
211
+ var zDocCustomSchemaFieldMultiSelectNumber = z.object({
212
+ type: zDocMetaFieldTypeMultiSelectNumber,
213
+ required: z.boolean()
214
+ });
215
+ var zDocCustomSchemaField = z.union([
216
+ zDocCustomSchemaFieldText,
217
+ zDocCustomSchemaFieldNumber,
218
+ zDocCustomSchemaFieldBoolean,
219
+ zDocCustomSchemaFieldRelation,
220
+ zDocCustomSchemaFieldSelectText,
221
+ zDocCustomSchemaFieldSelectNumber,
222
+ zDocCustomSchemaFieldMultiText,
223
+ zDocCustomSchemaFieldMultiNumber,
224
+ zDocCustomSchemaFieldMultiRelation,
225
+ zDocCustomSchemaFieldMultiSelectText,
226
+ zDocCustomSchemaFieldMultiSelectNumber
227
+ ]);
228
+ var zDocCustomSchema = z.record(z.string(), zDocCustomSchemaField);
229
+ var zDocFileIndexMeta = z.object({
230
+ type: z.literal("index-meta"),
231
+ icon: z.string().nullable(),
232
+ schema: zDocFileIndexSchema
233
+ });
234
+ var zDocFileIndexMetaInput = z.object({
235
+ type: z.literal("index-meta"),
236
+ icon: z.string().nullable().or(z.undefined()),
237
+ schema: zDocFileIndexSchemaInput
162
238
  });
163
239
  var zDocRelationField = z.object({
164
240
  fieldName: z.string(),
@@ -175,24 +251,31 @@ var zDocRelation = z.object({
175
251
  path: z.string(),
176
252
  files: z.array(zDocRelationFile)
177
253
  });
178
- var zDocFileContentMd = z.object({
254
+ var zDocFileMdContent = z.object({
179
255
  type: z.literal("markdown-content"),
180
256
  body: z.string(),
181
257
  title: z.string(),
182
258
  description: z.string(),
183
- frontMatter: zDocFileMdFrontMatter
259
+ meta: zDocFileMdMeta
184
260
  });
185
- var zDocFileContentIndex = z.object({
261
+ var zDocFileMdContentInput = z.object({
262
+ type: z.literal("markdown-content"),
263
+ body: z.string(),
264
+ title: z.string(),
265
+ description: z.string(),
266
+ meta: zDocFileMdMetaInput
267
+ });
268
+ var zDocFileIndexContent = z.object({
186
269
  type: z.literal("markdown-index"),
187
270
  body: z.string(),
188
271
  title: z.string(),
189
272
  description: z.string(),
190
- frontMatter: zDocFileIndexFrontMatter
273
+ meta: zDocFileIndexMeta
191
274
  });
192
275
  var zDocFileIndex = z.object({
193
276
  type: z.literal("index"),
194
277
  path: zDocFilePath,
195
- content: zDocFileContentIndex,
278
+ content: zDocFileIndexContent,
196
279
  isArchived: z.boolean()
197
280
  });
198
281
  var zDocFileUnknown = z.object({
@@ -205,7 +288,13 @@ var zDocFileUnknown = z.object({
205
288
  var zDocFileMd = z.object({
206
289
  type: z.literal("markdown"),
207
290
  path: zDocFilePath,
208
- content: zDocFileContentMd,
291
+ content: zDocFileMdContent,
292
+ isArchived: z.boolean()
293
+ });
294
+ var zDocFileMdInput = z.object({
295
+ type: z.literal("markdown"),
296
+ path: zDocFilePath,
297
+ content: zDocFileMdContentInput,
209
298
  isArchived: z.boolean()
210
299
  });
211
300
  var zDocFile = z.union([zDocFileIndex, zDocFileMd, zDocFileUnknown]);
@@ -227,24 +316,74 @@ var zDocTreeDirectoryNode = z.lazy(() => {
227
316
  });
228
317
  });
229
318
  var zDocTreeNode = z.union([zDocTreeFileNode, zDocTreeDirectoryNode]);
319
+ var zDocClientConfig = z.object({
320
+ defaultIndexIcon: z.string(),
321
+ indexFileName: z.string(),
322
+ archiveDirectoryName: z.string(),
323
+ defaultDirectoryName: z.string(),
324
+ indexMetaIncludes: z.array(z.string()),
325
+ directoryExcludes: z.array(z.string())
326
+ });
230
327
  export {
328
+ zDocClientConfig,
329
+ zDocCustomSchema,
330
+ zDocCustomSchemaField,
331
+ zDocCustomSchemaFieldBoolean,
332
+ zDocCustomSchemaFieldMultiNumber,
333
+ zDocCustomSchemaFieldMultiRelation,
334
+ zDocCustomSchemaFieldMultiSelectNumber,
335
+ zDocCustomSchemaFieldMultiSelectText,
336
+ zDocCustomSchemaFieldMultiText,
337
+ zDocCustomSchemaFieldNumber,
338
+ zDocCustomSchemaFieldRelation,
339
+ zDocCustomSchemaFieldSelectNumber,
340
+ zDocCustomSchemaFieldSelectText,
341
+ zDocCustomSchemaFieldText,
231
342
  zDocFile,
232
- zDocFileContentIndex,
233
- zDocFileContentMd,
234
343
  zDocFileIndex,
235
- zDocFileIndexFrontMatter,
344
+ zDocFileIndexContent,
345
+ zDocFileIndexMeta,
346
+ zDocFileIndexMetaInput,
347
+ zDocFileIndexSchema,
348
+ zDocFileIndexSchemaField,
349
+ zDocFileIndexSchemaInput,
236
350
  zDocFileMd,
237
- zDocFileMdFrontMatter,
351
+ zDocFileMdContent,
352
+ zDocFileMdContentInput,
353
+ zDocFileMdInput,
354
+ zDocFileMdMeta,
355
+ zDocFileMdMetaInput,
238
356
  zDocFilePath,
239
357
  zDocFileUnknown,
358
+ zDocMetaField,
359
+ zDocMetaFieldBoolean,
360
+ zDocMetaFieldMultiBoolean,
361
+ zDocMetaFieldMultiNumber,
362
+ zDocMetaFieldMultiRelation,
363
+ zDocMetaFieldMultiSelectNumber,
364
+ zDocMetaFieldMultiSelectText,
365
+ zDocMetaFieldMultiText,
366
+ zDocMetaFieldNumber,
367
+ zDocMetaFieldRelation,
368
+ zDocMetaFieldSelectNumber,
369
+ zDocMetaFieldSelectText,
370
+ zDocMetaFieldText,
371
+ zDocMetaFieldType,
372
+ zDocMetaFieldTypeBoolean,
373
+ zDocMetaFieldTypeMultiNumber,
374
+ zDocMetaFieldTypeMultiRelation,
375
+ zDocMetaFieldTypeMultiSelectNumber,
376
+ zDocMetaFieldTypeMultiSelectText,
377
+ zDocMetaFieldTypeMultiText,
378
+ zDocMetaFieldTypeNumber,
379
+ zDocMetaFieldTypeRelation,
380
+ zDocMetaFieldTypeSelectNumber,
381
+ zDocMetaFieldTypeSelectText,
382
+ zDocMetaFieldTypeText,
240
383
  zDocRelation,
241
384
  zDocRelationField,
242
385
  zDocRelationFile,
243
- zDocSchema,
244
- zDocSchemaField,
245
386
  zDocSchemaFieldBoolean,
246
- zDocSchemaFieldMinimal,
247
- zDocSchemaFieldMultiBoolean,
248
387
  zDocSchemaFieldMultiNumber,
249
388
  zDocSchemaFieldMultiRelation,
250
389
  zDocSchemaFieldMultiSelectNumber,
@@ -255,8 +394,6 @@ export {
255
394
  zDocSchemaFieldSelectNumber,
256
395
  zDocSchemaFieldSelectText,
257
396
  zDocSchemaFieldText,
258
- zDocSchemaFieldType,
259
- zDocSchemaMinimal,
260
397
  zDocTreeDirectoryNode,
261
398
  zDocTreeFileNode,
262
399
  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.13",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "check": "tsgo --noEmit",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "yaml": "^2.8.0",
12
- "zod": "^4.0.5"
12
+ "zod": "^4.0.10"
13
13
  },
14
14
  "publishConfig": {
15
15
  "access": "public"
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** - 型安全性の保証