@interactive-inc/docs-client 0.0.5 → 0.0.7
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 +3 -3
- package/build/index.d.ts +1921 -42
- package/build/index.js +4616 -39
- package/build/models.d.ts +34 -32
- package/build/models.js +219 -275
- package/package.json +4 -4
- package/tsup.config.ts +10 -0
- package/build/doc-client.d.ts +0 -59
- package/build/doc-client.d.ts.map +0 -1
- package/build/doc-client.js +0 -95
- package/build/doc-client.test.d.ts +0 -2
- package/build/doc-client.test.d.ts.map +0 -1
- package/build/doc-client.test.js +0 -38
- package/build/doc-directory-reference.d.ts +0 -65
- package/build/doc-directory-reference.d.ts.map +0 -1
- package/build/doc-directory-reference.js +0 -292
- package/build/doc-directory-reference.test.d.ts +0 -2
- package/build/doc-directory-reference.test.d.ts.map +0 -1
- package/build/doc-directory-reference.test.js +0 -100
- package/build/doc-file-index-reference.d.ts +0 -72
- package/build/doc-file-index-reference.d.ts.map +0 -1
- package/build/doc-file-index-reference.js +0 -191
- package/build/doc-file-index-reference.test.d.ts +0 -2
- package/build/doc-file-index-reference.test.d.ts.map +0 -1
- package/build/doc-file-index-reference.test.js +0 -77
- package/build/doc-file-md-reference.d.ts +0 -97
- package/build/doc-file-md-reference.d.ts.map +0 -1
- package/build/doc-file-md-reference.js +0 -297
- package/build/doc-file-md-reference.test.d.ts +0 -2
- package/build/doc-file-md-reference.test.d.ts.map +0 -1
- package/build/doc-file-md-reference.test.js +0 -465
- package/build/doc-file-relation-reference.d.ts +0 -54
- package/build/doc-file-relation-reference.d.ts.map +0 -1
- package/build/doc-file-relation-reference.js +0 -109
- package/build/doc-file-system-debug.d.ts +0 -81
- package/build/doc-file-system-debug.d.ts.map +0 -1
- package/build/doc-file-system-debug.js +0 -317
- package/build/doc-file-system.d.ts +0 -100
- package/build/doc-file-system.d.ts.map +0 -1
- package/build/doc-file-system.js +0 -210
- package/build/doc-file-tree-system.d.ts +0 -38
- package/build/doc-file-tree-system.d.ts.map +0 -1
- package/build/doc-file-tree-system.js +0 -153
- package/build/doc-file-tree-system.test.d.ts +0 -2
- package/build/doc-file-tree-system.test.d.ts.map +0 -1
- package/build/doc-file-tree-system.test.js +0 -105
- package/build/doc-file-unknown-reference.d.ts +0 -80
- package/build/doc-file-unknown-reference.d.ts.map +0 -1
- package/build/doc-file-unknown-reference.js +0 -181
- package/build/doc-file-unknown-reference.test.d.ts +0 -2
- package/build/doc-file-unknown-reference.test.d.ts.map +0 -1
- package/build/doc-file-unknown-reference.test.js +0 -73
- package/build/doc-markdown-system.d.ts +0 -44
- package/build/doc-markdown-system.d.ts.map +0 -1
- package/build/doc-markdown-system.js +0 -153
- package/build/doc-markdown-system.test.d.ts +0 -2
- package/build/doc-markdown-system.test.d.ts.map +0 -1
- package/build/doc-markdown-system.test.js +0 -124
- package/build/doc-path-system.d.ts +0 -43
- package/build/doc-path-system.d.ts.map +0 -1
- package/build/doc-path-system.js +0 -148
- package/build/doc-path-system.test.d.ts +0 -2
- package/build/doc-path-system.test.d.ts.map +0 -1
- package/build/doc-path-system.test.js +0 -67
- package/build/entities/doc-file-entity.d.ts +0 -5
- package/build/entities/doc-file-entity.d.ts.map +0 -1
- package/build/entities/doc-file-entity.js +0 -1
- package/build/entities/doc-file-index-entity.d.ts +0 -30
- package/build/entities/doc-file-index-entity.d.ts.map +0 -1
- package/build/entities/doc-file-index-entity.js +0 -49
- package/build/entities/doc-file-index-entity.test.d.ts +0 -2
- package/build/entities/doc-file-index-entity.test.d.ts.map +0 -1
- package/build/entities/doc-file-index-entity.test.js +0 -195
- package/build/entities/doc-file-md-entity.d.ts +0 -30
- package/build/entities/doc-file-md-entity.d.ts.map +0 -1
- package/build/entities/doc-file-md-entity.js +0 -49
- package/build/entities/doc-file-md-entity.test.d.ts +0 -2
- package/build/entities/doc-file-md-entity.test.d.ts.map +0 -1
- package/build/entities/doc-file-md-entity.test.js +0 -178
- package/build/entities/doc-file-unknown-entity.d.ts +0 -26
- package/build/entities/doc-file-unknown-entity.d.ts.map +0 -1
- package/build/entities/doc-file-unknown-entity.js +0 -45
- package/build/entities/doc-file-unknown-entity.test.d.ts +0 -2
- package/build/entities/doc-file-unknown-entity.test.d.ts.map +0 -1
- package/build/entities/doc-file-unknown-entity.test.js +0 -131
- package/build/index.d.ts.map +0 -1
- package/build/models.d.ts.map +0 -1
- package/build/types.d.ts +0 -154
- package/build/types.d.ts.map +0 -1
- package/build/types.js +0 -1
- package/build/values/doc-content-md-front-matter-value.d.ts +0 -49
- package/build/values/doc-content-md-front-matter-value.d.ts.map +0 -1
- package/build/values/doc-content-md-front-matter-value.js +0 -94
- package/build/values/doc-content-md-front-matter-value.test.d.ts +0 -2
- package/build/values/doc-content-md-front-matter-value.test.d.ts.map +0 -1
- package/build/values/doc-content-md-front-matter-value.test.js +0 -73
- package/build/values/doc-content-md-value.d.ts +0 -66
- package/build/values/doc-content-md-value.d.ts.map +0 -1
- package/build/values/doc-content-md-value.js +0 -218
- package/build/values/doc-content-md-value.test.d.ts +0 -2
- package/build/values/doc-content-md-value.test.d.ts.map +0 -1
- package/build/values/doc-content-md-value.test.js +0 -179
- package/build/values/doc-directory-path-value.d.ts +0 -89
- package/build/values/doc-directory-path-value.d.ts.map +0 -1
- package/build/values/doc-directory-path-value.js +0 -145
- package/build/values/doc-directory-path-value.test.d.ts +0 -2
- package/build/values/doc-directory-path-value.test.d.ts.map +0 -1
- package/build/values/doc-directory-path-value.test.js +0 -68
- package/build/values/doc-file-content-index-value.d.ts +0 -62
- package/build/values/doc-file-content-index-value.d.ts.map +0 -1
- package/build/values/doc-file-content-index-value.js +0 -134
- package/build/values/doc-file-content-index-value.test.d.ts +0 -2
- package/build/values/doc-file-content-index-value.test.d.ts.map +0 -1
- package/build/values/doc-file-content-index-value.test.js +0 -203
- package/build/values/doc-file-content-md-value.d.ts +0 -62
- package/build/values/doc-file-content-md-value.d.ts.map +0 -1
- package/build/values/doc-file-content-md-value.js +0 -139
- package/build/values/doc-file-content-md-value.test.d.ts +0 -2
- package/build/values/doc-file-content-md-value.test.d.ts.map +0 -1
- package/build/values/doc-file-content-md-value.test.js +0 -160
- package/build/values/doc-file-path-value.d.ts +0 -47
- package/build/values/doc-file-path-value.d.ts.map +0 -1
- package/build/values/doc-file-path-value.js +0 -83
- package/build/values/doc-file-path-value.test.d.ts +0 -2
- package/build/values/doc-file-path-value.test.d.ts.map +0 -1
- package/build/values/doc-file-path-value.test.js +0 -84
- package/build/values/doc-front-matter-index-value.d.ts +0 -66
- package/build/values/doc-front-matter-index-value.d.ts.map +0 -1
- package/build/values/doc-front-matter-index-value.js +0 -185
- package/build/values/doc-front-matter-index-value.test.d.ts +0 -2
- package/build/values/doc-front-matter-index-value.test.d.ts.map +0 -1
- package/build/values/doc-front-matter-index-value.test.js +0 -98
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts +0 -2
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +0 -1
- package/build/values/doc-front-matter-md-value-accessor.test.js +0 -226
- package/build/values/doc-front-matter-md-value.d.ts +0 -80
- package/build/values/doc-front-matter-md-value.d.ts.map +0 -1
- package/build/values/doc-front-matter-md-value.js +0 -257
- package/build/values/doc-front-matter-md-value.test.d.ts +0 -2
- package/build/values/doc-front-matter-md-value.test.d.ts.map +0 -1
- package/build/values/doc-front-matter-md-value.test.js +0 -198
- package/build/values/doc-relation-field-value.d.ts +0 -57
- package/build/values/doc-relation-field-value.d.ts.map +0 -1
- package/build/values/doc-relation-field-value.js +0 -85
- package/build/values/doc-relation-field-value.test.d.ts +0 -2
- package/build/values/doc-relation-field-value.test.d.ts.map +0 -1
- package/build/values/doc-relation-field-value.test.js +0 -115
- package/build/values/doc-relation-file-value.d.ts +0 -33
- package/build/values/doc-relation-file-value.d.ts.map +0 -1
- package/build/values/doc-relation-file-value.js +0 -55
- package/build/values/doc-relation-file-value.test.d.ts +0 -2
- package/build/values/doc-relation-file-value.test.d.ts.map +0 -1
- package/build/values/doc-relation-file-value.test.js +0 -77
- package/build/values/doc-relation-value.d.ts +0 -34
- package/build/values/doc-relation-value.d.ts.map +0 -1
- package/build/values/doc-relation-value.js +0 -56
- package/build/values/doc-relation-value.test.d.ts +0 -2
- package/build/values/doc-relation-value.test.d.ts.map +0 -1
- package/build/values/doc-relation-value.test.js +0 -89
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts +0 -23
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-boolean-multiple-value.js +0 -43
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-boolean-multiple-value.test.js +0 -76
- package/build/values/doc-schema-field-boolean-single-value.d.ts +0 -23
- package/build/values/doc-schema-field-boolean-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-boolean-single-value.js +0 -39
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-boolean-single-value.test.js +0 -73
- package/build/values/doc-schema-field-factory.d.ts +0 -37
- package/build/values/doc-schema-field-factory.d.ts.map +0 -1
- package/build/values/doc-schema-field-factory.js +0 -151
- package/build/values/doc-schema-field-factory.test.d.ts +0 -2
- package/build/values/doc-schema-field-factory.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-factory.test.js +0 -215
- package/build/values/doc-schema-field-number-multiple-value.d.ts +0 -23
- package/build/values/doc-schema-field-number-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-number-multiple-value.js +0 -43
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-number-multiple-value.test.js +0 -79
- package/build/values/doc-schema-field-number-single-value.d.ts +0 -23
- package/build/values/doc-schema-field-number-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-number-single-value.js +0 -39
- package/build/values/doc-schema-field-number-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-number-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-number-single-value.test.js +0 -77
- package/build/values/doc-schema-field-relation-multiple-value.d.ts +0 -24
- package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-relation-multiple-value.js +0 -46
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-relation-multiple-value.test.js +0 -83
- package/build/values/doc-schema-field-relation-single-value.d.ts +0 -24
- package/build/values/doc-schema-field-relation-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-relation-single-value.js +0 -42
- package/build/values/doc-schema-field-relation-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-relation-single-value.test.js +0 -83
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts +0 -25
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-number-multiple-value.js +0 -48
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-number-multiple-value.test.js +0 -84
- package/build/values/doc-schema-field-select-number-single-value.d.ts +0 -25
- package/build/values/doc-schema-field-select-number-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-number-single-value.js +0 -45
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-number-single-value.test.js +0 -96
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts +0 -25
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-text-multiple-value.js +0 -48
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-text-multiple-value.test.js +0 -84
- package/build/values/doc-schema-field-select-text-single-value.d.ts +0 -25
- package/build/values/doc-schema-field-select-text-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-text-single-value.js +0 -47
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-select-text-single-value.test.js +0 -96
- package/build/values/doc-schema-field-text-multiple-value.d.ts +0 -23
- package/build/values/doc-schema-field-text-multiple-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-text-multiple-value.js +0 -43
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-text-multiple-value.test.js +0 -78
- package/build/values/doc-schema-field-text-single-value.d.ts +0 -23
- package/build/values/doc-schema-field-text-single-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-text-single-value.js +0 -39
- package/build/values/doc-schema-field-text-single-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-text-single-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-text-single-value.test.js +0 -76
- package/build/values/doc-schema-field-type-value.d.ts +0 -61
- package/build/values/doc-schema-field-type-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-type-value.js +0 -134
- package/build/values/doc-schema-field-type-value.test.d.ts +0 -2
- package/build/values/doc-schema-field-type-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-field-type-value.test.js +0 -101
- package/build/values/doc-schema-field-value.d.ts +0 -45
- package/build/values/doc-schema-field-value.d.ts.map +0 -1
- package/build/values/doc-schema-field-value.js +0 -1
- package/build/values/doc-schema-value.d.ts +0 -99
- package/build/values/doc-schema-value.d.ts.map +0 -1
- package/build/values/doc-schema-value.js +0 -269
- package/build/values/doc-schema-value.test.d.ts +0 -2
- package/build/values/doc-schema-value.test.d.ts.map +0 -1
- package/build/values/doc-schema-value.test.js +0 -301
- package/build/values/doc-tree-directory-node-value.d.ts +0 -36
- package/build/values/doc-tree-directory-node-value.d.ts.map +0 -1
- package/build/values/doc-tree-directory-node-value.js +0 -71
- package/build/values/doc-tree-directory-node-value.test.d.ts +0 -2
- package/build/values/doc-tree-directory-node-value.test.d.ts.map +0 -1
- package/build/values/doc-tree-directory-node-value.test.js +0 -162
- package/build/values/doc-tree-file-node-value.d.ts +0 -33
- package/build/values/doc-tree-file-node-value.d.ts.map +0 -1
- package/build/values/doc-tree-file-node-value.js +0 -56
- package/build/values/doc-tree-file-node-value.test.d.ts +0 -2
- package/build/values/doc-tree-file-node-value.test.d.ts.map +0 -1
- package/build/values/doc-tree-file-node-value.test.js +0 -113
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { zDocFilePath } from "../models";
|
|
2
|
-
/**
|
|
3
|
-
* ファイルパス情報の値オブジェクト
|
|
4
|
-
*/
|
|
5
|
-
export class DocFilePathValue {
|
|
6
|
-
value;
|
|
7
|
-
pathSystem;
|
|
8
|
-
constructor(value, pathSystem) {
|
|
9
|
-
this.value = value;
|
|
10
|
-
zDocFilePath.parse(value);
|
|
11
|
-
this.pathSystem = pathSystem;
|
|
12
|
-
Object.freeze(this);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* ファイル名(拡張子なし)
|
|
16
|
-
*/
|
|
17
|
-
get name() {
|
|
18
|
-
return this.value.name;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* ファイルパス(相対パス)
|
|
22
|
-
*/
|
|
23
|
-
get path() {
|
|
24
|
-
return this.value.path;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* ファイル名(拡張子付き)
|
|
28
|
-
*/
|
|
29
|
-
get nameWithExtension() {
|
|
30
|
-
return this.value.nameWithExtension;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* フルパス(絶対パス)
|
|
34
|
-
*/
|
|
35
|
-
get fullPath() {
|
|
36
|
-
return this.value.fullPath;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* ディレクトリパス
|
|
40
|
-
*/
|
|
41
|
-
get directoryPath() {
|
|
42
|
-
return this.pathSystem.dirname(this.path);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* 拡張子
|
|
46
|
-
*/
|
|
47
|
-
get extension() {
|
|
48
|
-
return this.pathSystem.extname(this.nameWithExtension);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* アーカイブされているかどうか
|
|
52
|
-
*/
|
|
53
|
-
get isArchived() {
|
|
54
|
-
return this.path.includes("/.archive/");
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* 相対パスからインスタンスを生成(DI対応)
|
|
58
|
-
*/
|
|
59
|
-
static fromPathWithSystem(filePath, pathSystem, basePath) {
|
|
60
|
-
const nameWithExtension = pathSystem.basename(filePath);
|
|
61
|
-
let name = pathSystem.basename(filePath, pathSystem.extname(filePath));
|
|
62
|
-
// index.mdの場合は親ディレクトリ名を使用
|
|
63
|
-
if (name === "index" && filePath.includes("/")) {
|
|
64
|
-
const parentDir = pathSystem.dirname(filePath);
|
|
65
|
-
name = pathSystem.basename(parentDir);
|
|
66
|
-
}
|
|
67
|
-
const fullPath = basePath
|
|
68
|
-
? pathSystem.join(basePath, filePath)
|
|
69
|
-
: pathSystem.resolve(filePath);
|
|
70
|
-
return new DocFilePathValue({
|
|
71
|
-
name,
|
|
72
|
-
path: filePath,
|
|
73
|
-
fullPath,
|
|
74
|
-
nameWithExtension,
|
|
75
|
-
}, pathSystem);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* JSON形式で出力
|
|
79
|
-
*/
|
|
80
|
-
toJson() {
|
|
81
|
-
return this.value;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-file-path-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-file-path-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "bun:test";
|
|
2
|
-
import { DocPathSystem } from "../doc-path-system";
|
|
3
|
-
import { DocFilePathValue } from "./doc-file-path-value";
|
|
4
|
-
test("DocFilePathValue - 基本的な作成とプロパティアクセス", () => {
|
|
5
|
-
const pathSystem = new DocPathSystem();
|
|
6
|
-
const value = new DocFilePathValue({
|
|
7
|
-
path: "docs/example.md",
|
|
8
|
-
name: "example",
|
|
9
|
-
fullPath: "/Users/test/docs/example.md",
|
|
10
|
-
nameWithExtension: "example.md",
|
|
11
|
-
}, pathSystem);
|
|
12
|
-
expect(value.path).toBe("docs/example.md");
|
|
13
|
-
expect(value.name).toBe("example");
|
|
14
|
-
expect(value.fullPath).toBe("/Users/test/docs/example.md");
|
|
15
|
-
expect(value.nameWithExtension).toBe("example.md");
|
|
16
|
-
});
|
|
17
|
-
test("DocFilePathValue - extension getterが拡張子を返す", () => {
|
|
18
|
-
const pathSystem = new DocPathSystem();
|
|
19
|
-
const value = new DocFilePathValue({
|
|
20
|
-
path: "docs/test.md",
|
|
21
|
-
name: "test",
|
|
22
|
-
fullPath: "/Users/test/docs/test.md",
|
|
23
|
-
nameWithExtension: "test.md",
|
|
24
|
-
}, pathSystem);
|
|
25
|
-
expect(value.extension).toBe(".md");
|
|
26
|
-
});
|
|
27
|
-
test("DocFilePathValue - 拡張子のないファイル", () => {
|
|
28
|
-
const pathSystem = new DocPathSystem();
|
|
29
|
-
const value = new DocFilePathValue({
|
|
30
|
-
path: "docs/README",
|
|
31
|
-
name: "README",
|
|
32
|
-
fullPath: "/Users/test/docs/README",
|
|
33
|
-
nameWithExtension: "README",
|
|
34
|
-
}, pathSystem);
|
|
35
|
-
expect(value.extension).toBe("");
|
|
36
|
-
});
|
|
37
|
-
test("DocFilePathValue - fromPathWithSystemで相対パスから生成", () => {
|
|
38
|
-
const pathSystem = new DocPathSystem();
|
|
39
|
-
const value = DocFilePathValue.fromPathWithSystem("docs/test.md", pathSystem, "/Users/project");
|
|
40
|
-
expect(value.path).toBe("docs/test.md");
|
|
41
|
-
expect(value.name).toBe("test");
|
|
42
|
-
expect(value.fullPath).toBe("/Users/project/docs/test.md");
|
|
43
|
-
expect(value.nameWithExtension).toBe("test.md");
|
|
44
|
-
});
|
|
45
|
-
test("DocFilePathValue - fromPathWithSystemでindex.mdの場合", () => {
|
|
46
|
-
const pathSystem = new DocPathSystem();
|
|
47
|
-
const value = DocFilePathValue.fromPathWithSystem("docs/features/index.md", pathSystem, "/Users/project");
|
|
48
|
-
expect(value.path).toBe("docs/features/index.md");
|
|
49
|
-
expect(value.name).toBe("features");
|
|
50
|
-
expect(value.fullPath).toBe("/Users/project/docs/features/index.md");
|
|
51
|
-
expect(value.nameWithExtension).toBe("index.md");
|
|
52
|
-
});
|
|
53
|
-
test("DocFilePathValue - fromPathWithSystemでルートのindex.mdの場合", () => {
|
|
54
|
-
const pathSystem = new DocPathSystem();
|
|
55
|
-
const value = DocFilePathValue.fromPathWithSystem("index.md", pathSystem, "/Users/project");
|
|
56
|
-
expect(value.path).toBe("index.md");
|
|
57
|
-
expect(value.name).toBe("index");
|
|
58
|
-
expect(value.fullPath).toBe("/Users/project/index.md");
|
|
59
|
-
expect(value.nameWithExtension).toBe("index.md");
|
|
60
|
-
});
|
|
61
|
-
test("DocFilePathValue - toJsonで元のデータ構造を返す", () => {
|
|
62
|
-
const pathSystem = new DocPathSystem();
|
|
63
|
-
const data = {
|
|
64
|
-
path: "docs/test.md",
|
|
65
|
-
name: "test",
|
|
66
|
-
fullPath: "/Users/test/docs/test.md",
|
|
67
|
-
nameWithExtension: "test.md",
|
|
68
|
-
};
|
|
69
|
-
const value = new DocFilePathValue(data, pathSystem);
|
|
70
|
-
expect(value.toJson()).toEqual(data);
|
|
71
|
-
});
|
|
72
|
-
test("DocFilePathValue - 不変性の確認", () => {
|
|
73
|
-
const pathSystem = new DocPathSystem();
|
|
74
|
-
const value = new DocFilePathValue({
|
|
75
|
-
path: "docs/test.md",
|
|
76
|
-
name: "test",
|
|
77
|
-
fullPath: "/Users/test/docs/test.md",
|
|
78
|
-
nameWithExtension: "test.md",
|
|
79
|
-
}, pathSystem);
|
|
80
|
-
expect(() => {
|
|
81
|
-
// @ts-expect-error - 不変性のテスト
|
|
82
|
-
value.value = {};
|
|
83
|
-
}).toThrow();
|
|
84
|
-
});
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type { DocFileIndexFrontMatter } from "../types";
|
|
2
|
-
import { DocSchemaValue } from "../values/doc-schema-value";
|
|
3
|
-
/**
|
|
4
|
-
* FrontMatter
|
|
5
|
-
*/
|
|
6
|
-
export declare class DocFrontMatterIndexValue {
|
|
7
|
-
readonly value: DocFileIndexFrontMatter;
|
|
8
|
-
constructor(value: DocFileIndexFrontMatter);
|
|
9
|
-
/**
|
|
10
|
-
* アイコンを取得
|
|
11
|
-
*/
|
|
12
|
-
get icon(): string | null;
|
|
13
|
-
/**
|
|
14
|
-
* スキーマを取得
|
|
15
|
-
*/
|
|
16
|
-
get schema(): DocSchemaValue;
|
|
17
|
-
/**
|
|
18
|
-
* iconフィールドを更新
|
|
19
|
-
*/
|
|
20
|
-
withIcon(value: unknown): DocFrontMatterIndexValue;
|
|
21
|
-
/**
|
|
22
|
-
* schemaフィールドを更新
|
|
23
|
-
*/
|
|
24
|
-
withSchema(value: unknown): DocFrontMatterIndexValue;
|
|
25
|
-
/**
|
|
26
|
-
* JSON形式で出力
|
|
27
|
-
*/
|
|
28
|
-
toJson(): DocFileIndexFrontMatter;
|
|
29
|
-
/**
|
|
30
|
-
* YAML形式で出力
|
|
31
|
-
*/
|
|
32
|
-
toYaml(): string;
|
|
33
|
-
/**
|
|
34
|
-
* スキーマ全体を正規化
|
|
35
|
-
*/
|
|
36
|
-
private static createSchema;
|
|
37
|
-
/**
|
|
38
|
-
* スキーマフィールドを正規化
|
|
39
|
-
*/
|
|
40
|
-
private static createSchemaField;
|
|
41
|
-
/**
|
|
42
|
-
* Markdownテキストから生成(不完全なデータも処理可能)
|
|
43
|
-
*/
|
|
44
|
-
static from(markdownText: string): DocFrontMatterIndexValue;
|
|
45
|
-
/**
|
|
46
|
-
* データから直接生成(不完全なデータも処理可能)
|
|
47
|
-
*/
|
|
48
|
-
static fromRecord(record: Record<string, unknown>): DocFrontMatterIndexValue;
|
|
49
|
-
/**
|
|
50
|
-
* 空のFrontMatterを生成
|
|
51
|
-
*/
|
|
52
|
-
static empty(): DocFrontMatterIndexValue;
|
|
53
|
-
/**
|
|
54
|
-
* アイコンを抽出
|
|
55
|
-
*/
|
|
56
|
-
private static extractIcon;
|
|
57
|
-
/**
|
|
58
|
-
* スキーマを抽出
|
|
59
|
-
*/
|
|
60
|
-
private static extractSchema;
|
|
61
|
-
/**
|
|
62
|
-
* デフォルトのアイコンを取得
|
|
63
|
-
*/
|
|
64
|
-
private static getDefaultIcon;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=doc-front-matter-index-value.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-front-matter-index-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-front-matter-index-value.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EAGxB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3D;;GAEG;AACH,qBAAa,wBAAwB;IACvB,QAAQ,CAAC,KAAK,EAAE,uBAAuB;IAAnD,YAAqB,KAAK,EAAE,uBAAuB,EAGlD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,cAAc,CAE3B;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAWjD;IAED;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAWnD;IAED;;OAEG;IACH,MAAM,IAAI,uBAAuB,CAEhC;IAED;;OAEG;IACH,MAAM,IAAI,MAAM,CAOf;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAoB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAahC;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,CAoB1D;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAqB3E;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAMvC;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAkB5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { parse, stringify } from "yaml";
|
|
2
|
-
import { zDocFileIndexFrontMatter } from "../models";
|
|
3
|
-
import { DocSchemaValue } from "../values/doc-schema-value";
|
|
4
|
-
import { DocSchemaFieldFactory } from "./doc-schema-field-factory";
|
|
5
|
-
/**
|
|
6
|
-
* FrontMatter
|
|
7
|
-
*/
|
|
8
|
-
export class DocFrontMatterIndexValue {
|
|
9
|
-
value;
|
|
10
|
-
constructor(value) {
|
|
11
|
-
this.value = value;
|
|
12
|
-
zDocFileIndexFrontMatter.parse(value);
|
|
13
|
-
Object.freeze(this);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* アイコンを取得
|
|
17
|
-
*/
|
|
18
|
-
get icon() {
|
|
19
|
-
return this.value.icon;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* スキーマを取得
|
|
23
|
-
*/
|
|
24
|
-
get schema() {
|
|
25
|
-
return new DocSchemaValue(this.value.schema);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* iconフィールドを更新
|
|
29
|
-
*/
|
|
30
|
-
withIcon(value) {
|
|
31
|
-
if (typeof value !== "string") {
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
const currentData = this.toJson();
|
|
35
|
-
return DocFrontMatterIndexValue.fromRecord({
|
|
36
|
-
...currentData,
|
|
37
|
-
icon: value,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* schemaフィールドを更新
|
|
42
|
-
*/
|
|
43
|
-
withSchema(value) {
|
|
44
|
-
if (typeof value !== "object" || value === null) {
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
const currentData = this.toJson();
|
|
48
|
-
return DocFrontMatterIndexValue.fromRecord({
|
|
49
|
-
...currentData,
|
|
50
|
-
schema: DocFrontMatterIndexValue.createSchema(value),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* JSON形式で出力
|
|
55
|
-
*/
|
|
56
|
-
toJson() {
|
|
57
|
-
return this.value;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* YAML形式で出力
|
|
61
|
-
*/
|
|
62
|
-
toYaml() {
|
|
63
|
-
// iconとschemaのみを明示的に出力
|
|
64
|
-
const yamlData = {
|
|
65
|
-
icon: this.value.icon,
|
|
66
|
-
schema: this.value.schema,
|
|
67
|
-
};
|
|
68
|
-
return stringify(yamlData).trim();
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* スキーマ全体を正規化
|
|
72
|
-
*/
|
|
73
|
-
static createSchema(schema) {
|
|
74
|
-
if (typeof schema !== "object" || schema === null) {
|
|
75
|
-
return {};
|
|
76
|
-
}
|
|
77
|
-
const schemaObj = schema;
|
|
78
|
-
const record = {};
|
|
79
|
-
for (const [key, value] of Object.entries(schemaObj)) {
|
|
80
|
-
const normalizedField = DocFrontMatterIndexValue.createSchemaField(key, value);
|
|
81
|
-
if (normalizedField === null)
|
|
82
|
-
continue;
|
|
83
|
-
record[key] = normalizedField;
|
|
84
|
-
}
|
|
85
|
-
return record;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* スキーマフィールドを正規化
|
|
89
|
-
*/
|
|
90
|
-
static createSchemaField(key, value) {
|
|
91
|
-
try {
|
|
92
|
-
const factory = new DocSchemaFieldFactory();
|
|
93
|
-
const fieldValue = factory.fromUnknown(key, value);
|
|
94
|
-
return fieldValue.toJson();
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Markdownテキストから生成(不完全なデータも処理可能)
|
|
102
|
-
*/
|
|
103
|
-
static from(markdownText) {
|
|
104
|
-
// FrontMatterセクションを抽出
|
|
105
|
-
if (!markdownText.startsWith("---")) {
|
|
106
|
-
return DocFrontMatterIndexValue.empty();
|
|
107
|
-
}
|
|
108
|
-
const endIndex = markdownText.indexOf("\n---", 3);
|
|
109
|
-
if (endIndex === -1) {
|
|
110
|
-
return DocFrontMatterIndexValue.empty();
|
|
111
|
-
}
|
|
112
|
-
const frontMatterText = markdownText.slice(4, endIndex).trim();
|
|
113
|
-
try {
|
|
114
|
-
// YAMLをパース
|
|
115
|
-
const data = parse(frontMatterText) || {};
|
|
116
|
-
return DocFrontMatterIndexValue.fromRecord(data);
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
return DocFrontMatterIndexValue.empty();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* データから直接生成(不完全なデータも処理可能)
|
|
124
|
-
*/
|
|
125
|
-
static fromRecord(record) {
|
|
126
|
-
if (typeof record !== "object") {
|
|
127
|
-
return DocFrontMatterIndexValue.empty();
|
|
128
|
-
}
|
|
129
|
-
const icon = DocFrontMatterIndexValue.extractIcon(record);
|
|
130
|
-
const schema = DocFrontMatterIndexValue.extractSchema(record);
|
|
131
|
-
const frontMatter = {
|
|
132
|
-
type: "index-frontmatter",
|
|
133
|
-
icon,
|
|
134
|
-
schema,
|
|
135
|
-
};
|
|
136
|
-
try {
|
|
137
|
-
const validated = zDocFileIndexFrontMatter.parse(frontMatter);
|
|
138
|
-
return new DocFrontMatterIndexValue(validated);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
return DocFrontMatterIndexValue.empty();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* 空のFrontMatterを生成
|
|
146
|
-
*/
|
|
147
|
-
static empty() {
|
|
148
|
-
return new DocFrontMatterIndexValue({
|
|
149
|
-
type: "index-frontmatter",
|
|
150
|
-
icon: "",
|
|
151
|
-
schema: {},
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* アイコンを抽出
|
|
156
|
-
*/
|
|
157
|
-
static extractIcon(data) {
|
|
158
|
-
if ("icon" in data && typeof data.icon === "string") {
|
|
159
|
-
return data.icon;
|
|
160
|
-
}
|
|
161
|
-
return DocFrontMatterIndexValue.getDefaultIcon();
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* スキーマを抽出
|
|
165
|
-
*/
|
|
166
|
-
static extractSchema(data) {
|
|
167
|
-
const hasSchema = "schema" in data;
|
|
168
|
-
if (!hasSchema) {
|
|
169
|
-
return {};
|
|
170
|
-
}
|
|
171
|
-
if (typeof data.schema !== "object") {
|
|
172
|
-
return {};
|
|
173
|
-
}
|
|
174
|
-
if (data.schema === null) {
|
|
175
|
-
return {};
|
|
176
|
-
}
|
|
177
|
-
return DocFrontMatterIndexValue.createSchema(data.schema);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* デフォルトのアイコンを取得
|
|
181
|
-
*/
|
|
182
|
-
static getDefaultIcon() {
|
|
183
|
-
return "📃";
|
|
184
|
-
}
|
|
185
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-front-matter-index-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-front-matter-index-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "bun:test";
|
|
2
|
-
import { DocFrontMatterIndexValue } from "./doc-front-matter-index-value";
|
|
3
|
-
test("DocFrontMatterIndexValue - 基本的な作成とプロパティアクセス", () => {
|
|
4
|
-
const value = new DocFrontMatterIndexValue({
|
|
5
|
-
type: "index-frontmatter",
|
|
6
|
-
icon: "📁",
|
|
7
|
-
schema: {
|
|
8
|
-
name: {
|
|
9
|
-
type: "text",
|
|
10
|
-
required: true,
|
|
11
|
-
title: "名前",
|
|
12
|
-
description: "項目の名前",
|
|
13
|
-
default: "",
|
|
14
|
-
},
|
|
15
|
-
age: {
|
|
16
|
-
type: "number",
|
|
17
|
-
required: false,
|
|
18
|
-
title: "年齢",
|
|
19
|
-
description: "年齢の数値",
|
|
20
|
-
default: 0,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
expect(value.icon).toBe("📁");
|
|
25
|
-
const schema = value.schema.toJson();
|
|
26
|
-
expect(schema.name?.type).toBe("text");
|
|
27
|
-
expect(schema.name?.required).toBe(true);
|
|
28
|
-
expect(schema.age?.type).toBe("number");
|
|
29
|
-
expect(schema.age?.required).toBe(false);
|
|
30
|
-
});
|
|
31
|
-
test("DocFrontMatterIndexValue - 空のschemaの場合", () => {
|
|
32
|
-
const value = new DocFrontMatterIndexValue({
|
|
33
|
-
type: "index-frontmatter",
|
|
34
|
-
icon: "",
|
|
35
|
-
schema: {},
|
|
36
|
-
});
|
|
37
|
-
expect(value.icon).toBe("");
|
|
38
|
-
expect(value.schema.toJson()).toEqual({});
|
|
39
|
-
});
|
|
40
|
-
test("DocFrontMatterIndexValue - toYamlでYAML文字列を生成", () => {
|
|
41
|
-
const value = new DocFrontMatterIndexValue({
|
|
42
|
-
type: "index-frontmatter",
|
|
43
|
-
icon: "📂",
|
|
44
|
-
schema: {
|
|
45
|
-
title: {
|
|
46
|
-
type: "text",
|
|
47
|
-
required: true,
|
|
48
|
-
title: "タイトル",
|
|
49
|
-
description: "ドキュメントのタイトル",
|
|
50
|
-
default: "",
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
const yaml = value.toYaml();
|
|
55
|
-
expect(yaml).toContain("icon: 📂");
|
|
56
|
-
expect(yaml).toContain("schema:");
|
|
57
|
-
expect(yaml).toContain("title:");
|
|
58
|
-
expect(yaml).toContain("type: text");
|
|
59
|
-
expect(yaml).toContain("required: true");
|
|
60
|
-
});
|
|
61
|
-
test("DocFrontMatterIndexValue - 空のiconとschemaでtoYaml", () => {
|
|
62
|
-
const value = new DocFrontMatterIndexValue({
|
|
63
|
-
type: "index-frontmatter",
|
|
64
|
-
icon: "",
|
|
65
|
-
schema: {},
|
|
66
|
-
});
|
|
67
|
-
const yaml = value.toYaml();
|
|
68
|
-
expect(yaml).toContain('icon: ""');
|
|
69
|
-
expect(yaml).toContain("schema: {}");
|
|
70
|
-
});
|
|
71
|
-
test("DocFrontMatterIndexValue - toJsonで元のデータ構造を返す", () => {
|
|
72
|
-
const data = {
|
|
73
|
-
type: "index-frontmatter",
|
|
74
|
-
icon: "📁",
|
|
75
|
-
schema: {
|
|
76
|
-
name: {
|
|
77
|
-
type: "text",
|
|
78
|
-
required: true,
|
|
79
|
-
title: "名前",
|
|
80
|
-
description: "項目の名前",
|
|
81
|
-
default: "",
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
const value = new DocFrontMatterIndexValue(data);
|
|
86
|
-
expect(value.toJson()).toEqual(data);
|
|
87
|
-
});
|
|
88
|
-
test("DocFrontMatterIndexValue - 不変性の確認", () => {
|
|
89
|
-
const value = new DocFrontMatterIndexValue({
|
|
90
|
-
type: "index-frontmatter",
|
|
91
|
-
icon: "📁",
|
|
92
|
-
schema: {},
|
|
93
|
-
});
|
|
94
|
-
expect(() => {
|
|
95
|
-
// @ts-expect-error - 不変性のテスト
|
|
96
|
-
value.value = {};
|
|
97
|
-
}).toThrow();
|
|
98
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-front-matter-md-value-accessor.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-front-matter-md-value-accessor.test.ts"],"names":[],"mappings":""}
|