@interactive-inc/docs-client 0.0.6 → 0.0.8
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 +0 -228
- package/build/index.d.ts +1921 -42
- package/build/index.js +4617 -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
- package/debug/debug.ts +0 -108
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { zDocSchemaFieldType } from "../models";
|
|
2
|
-
/**
|
|
3
|
-
* スキーマフィールドタイプ
|
|
4
|
-
*/
|
|
5
|
-
export class DocSchemaFieldTypeValue {
|
|
6
|
-
value;
|
|
7
|
-
constructor(value) {
|
|
8
|
-
this.value = value;
|
|
9
|
-
zDocSchemaFieldType.parse(value);
|
|
10
|
-
Object.freeze(this);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* タイプ値を取得
|
|
14
|
-
*/
|
|
15
|
-
get type() {
|
|
16
|
-
return this.value;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* テキスト型かどうか
|
|
20
|
-
*/
|
|
21
|
-
get isText() {
|
|
22
|
-
return this.value === "text";
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 数値型かどうか
|
|
26
|
-
*/
|
|
27
|
-
get isNumber() {
|
|
28
|
-
return this.value === "number";
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* ブール型かどうか
|
|
32
|
-
*/
|
|
33
|
-
get isBoolean() {
|
|
34
|
-
return this.value === "boolean";
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* 選択型(単一)かどうか
|
|
38
|
-
*/
|
|
39
|
-
get isSelect() {
|
|
40
|
-
return this.value === "select-text" || this.value === "select-number";
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* リレーション型かどうか
|
|
44
|
-
*/
|
|
45
|
-
get isRelation() {
|
|
46
|
-
return this.value === "relation" || this.value === "multi-relation";
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 配列型かどうか
|
|
50
|
-
*/
|
|
51
|
-
get isArray() {
|
|
52
|
-
return (this.value === "multi-text" ||
|
|
53
|
-
this.value === "multi-number" ||
|
|
54
|
-
this.value === "multi-boolean" ||
|
|
55
|
-
this.value === "multi-relation" ||
|
|
56
|
-
this.value === "multi-select-text" ||
|
|
57
|
-
this.value === "multi-select-number");
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* 単一値型かどうか
|
|
61
|
-
*/
|
|
62
|
-
get isSingle() {
|
|
63
|
-
return !this.isArray;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* 基本型を取得(multi-textの場合はtext)
|
|
67
|
-
*/
|
|
68
|
-
get baseType() {
|
|
69
|
-
if (this.value.startsWith("multi-")) {
|
|
70
|
-
return this.value.replace("multi-", "");
|
|
71
|
-
}
|
|
72
|
-
if (this.value.startsWith("select-")) {
|
|
73
|
-
return this.value.replace("select-", "");
|
|
74
|
-
}
|
|
75
|
-
return this.value;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* デフォルト値を取得
|
|
79
|
-
*/
|
|
80
|
-
getDefaultValue() {
|
|
81
|
-
if (this.isArray)
|
|
82
|
-
return [];
|
|
83
|
-
if (this.isText)
|
|
84
|
-
return "";
|
|
85
|
-
if (this.isNumber)
|
|
86
|
-
return 0;
|
|
87
|
-
if (this.isBoolean)
|
|
88
|
-
return false;
|
|
89
|
-
if (this.isRelation)
|
|
90
|
-
return "";
|
|
91
|
-
return "";
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 値の検証
|
|
95
|
-
*/
|
|
96
|
-
validateValue(value) {
|
|
97
|
-
if (this.isArray) {
|
|
98
|
-
if (!Array.isArray(value))
|
|
99
|
-
return false;
|
|
100
|
-
const baseType = this.baseType;
|
|
101
|
-
return value.every((item) => {
|
|
102
|
-
if (baseType === "text")
|
|
103
|
-
return typeof item === "string";
|
|
104
|
-
if (baseType === "number")
|
|
105
|
-
return typeof item === "number";
|
|
106
|
-
if (baseType === "boolean")
|
|
107
|
-
return typeof item === "boolean";
|
|
108
|
-
return true;
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
if (this.isText)
|
|
112
|
-
return typeof value === "string";
|
|
113
|
-
if (this.isNumber)
|
|
114
|
-
return typeof value === "number";
|
|
115
|
-
if (this.isBoolean)
|
|
116
|
-
return typeof value === "boolean";
|
|
117
|
-
if (this.isRelation)
|
|
118
|
-
return typeof value === "string";
|
|
119
|
-
return true;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* 文字列から生成
|
|
123
|
-
*/
|
|
124
|
-
static from(type) {
|
|
125
|
-
const validatedType = zDocSchemaFieldType.parse(type);
|
|
126
|
-
return new DocSchemaFieldTypeValue(validatedType);
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* JSON形式に変換
|
|
130
|
-
*/
|
|
131
|
-
toJson() {
|
|
132
|
-
return this.value;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-schema-field-type-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-type-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { expect, test } from "bun:test";
|
|
2
|
-
import { DocSchemaFieldTypeValue } from "./doc-schema-field-type-value";
|
|
3
|
-
test("各種フィールドタイプを正しく判定できる", () => {
|
|
4
|
-
const textType = new DocSchemaFieldTypeValue("text");
|
|
5
|
-
expect(textType.isText).toBe(true);
|
|
6
|
-
expect(textType.isNumber).toBe(false);
|
|
7
|
-
expect(textType.isBoolean).toBe(false);
|
|
8
|
-
expect(textType.isSelect).toBe(false);
|
|
9
|
-
expect(textType.isRelation).toBe(false);
|
|
10
|
-
const numberType = new DocSchemaFieldTypeValue("number");
|
|
11
|
-
expect(numberType.isNumber).toBe(true);
|
|
12
|
-
expect(numberType.isText).toBe(false);
|
|
13
|
-
const booleanType = new DocSchemaFieldTypeValue("boolean");
|
|
14
|
-
expect(booleanType.isBoolean).toBe(true);
|
|
15
|
-
expect(booleanType.isText).toBe(false);
|
|
16
|
-
});
|
|
17
|
-
test("選択型を正しく判定できる", () => {
|
|
18
|
-
const selectText = new DocSchemaFieldTypeValue("select-text");
|
|
19
|
-
expect(selectText.isSelect).toBe(true);
|
|
20
|
-
expect(selectText.isText).toBe(false);
|
|
21
|
-
const selectNumber = new DocSchemaFieldTypeValue("select-number");
|
|
22
|
-
expect(selectNumber.isSelect).toBe(true);
|
|
23
|
-
expect(selectNumber.isNumber).toBe(false);
|
|
24
|
-
});
|
|
25
|
-
test("リレーション型を正しく判定できる", () => {
|
|
26
|
-
const relation = new DocSchemaFieldTypeValue("relation");
|
|
27
|
-
expect(relation.isRelation).toBe(true);
|
|
28
|
-
expect(relation.isArray).toBe(false);
|
|
29
|
-
const multiRelation = new DocSchemaFieldTypeValue("multi-relation");
|
|
30
|
-
expect(multiRelation.isRelation).toBe(true);
|
|
31
|
-
expect(multiRelation.isArray).toBe(true);
|
|
32
|
-
});
|
|
33
|
-
test("配列型を正しく判定できる", () => {
|
|
34
|
-
const multiText = new DocSchemaFieldTypeValue("multi-text");
|
|
35
|
-
expect(multiText.isArray).toBe(true);
|
|
36
|
-
expect(multiText.isSingle).toBe(false);
|
|
37
|
-
const multiNumber = new DocSchemaFieldTypeValue("multi-number");
|
|
38
|
-
expect(multiNumber.isArray).toBe(true);
|
|
39
|
-
const multiBoolean = new DocSchemaFieldTypeValue("multi-boolean");
|
|
40
|
-
expect(multiBoolean.isArray).toBe(true);
|
|
41
|
-
const multiSelectText = new DocSchemaFieldTypeValue("multi-select-text");
|
|
42
|
-
expect(multiSelectText.isArray).toBe(true);
|
|
43
|
-
const multiSelectNumber = new DocSchemaFieldTypeValue("multi-select-number");
|
|
44
|
-
expect(multiSelectNumber.isArray).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
test("単一値型を正しく判定できる", () => {
|
|
47
|
-
const text = new DocSchemaFieldTypeValue("text");
|
|
48
|
-
expect(text.isSingle).toBe(true);
|
|
49
|
-
expect(text.isArray).toBe(false);
|
|
50
|
-
const number = new DocSchemaFieldTypeValue("number");
|
|
51
|
-
expect(number.isSingle).toBe(true);
|
|
52
|
-
});
|
|
53
|
-
test("基本型を正しく取得できる", () => {
|
|
54
|
-
expect(new DocSchemaFieldTypeValue("multi-text").baseType).toBe("text");
|
|
55
|
-
expect(new DocSchemaFieldTypeValue("multi-number").baseType).toBe("number");
|
|
56
|
-
expect(new DocSchemaFieldTypeValue("multi-boolean").baseType).toBe("boolean");
|
|
57
|
-
expect(new DocSchemaFieldTypeValue("select-text").baseType).toBe("text");
|
|
58
|
-
expect(new DocSchemaFieldTypeValue("select-number").baseType).toBe("number");
|
|
59
|
-
expect(new DocSchemaFieldTypeValue("text").baseType).toBe("text");
|
|
60
|
-
expect(new DocSchemaFieldTypeValue("relation").baseType).toBe("relation");
|
|
61
|
-
});
|
|
62
|
-
test("デフォルト値を正しく取得できる", () => {
|
|
63
|
-
expect(new DocSchemaFieldTypeValue("text").getDefaultValue()).toBe("");
|
|
64
|
-
expect(new DocSchemaFieldTypeValue("number").getDefaultValue()).toBe(0);
|
|
65
|
-
expect(new DocSchemaFieldTypeValue("boolean").getDefaultValue()).toBe(false);
|
|
66
|
-
expect(new DocSchemaFieldTypeValue("relation").getDefaultValue()).toBe("");
|
|
67
|
-
expect(new DocSchemaFieldTypeValue("multi-text").getDefaultValue()).toEqual([]);
|
|
68
|
-
expect(new DocSchemaFieldTypeValue("multi-number").getDefaultValue()).toEqual([]);
|
|
69
|
-
});
|
|
70
|
-
test("値の検証が正しく動作する", () => {
|
|
71
|
-
const textType = new DocSchemaFieldTypeValue("text");
|
|
72
|
-
expect(textType.validateValue("hello")).toBe(true);
|
|
73
|
-
expect(textType.validateValue(123)).toBe(false);
|
|
74
|
-
const numberType = new DocSchemaFieldTypeValue("number");
|
|
75
|
-
expect(numberType.validateValue(123)).toBe(true);
|
|
76
|
-
expect(numberType.validateValue("123")).toBe(false);
|
|
77
|
-
const booleanType = new DocSchemaFieldTypeValue("boolean");
|
|
78
|
-
expect(booleanType.validateValue(true)).toBe(true);
|
|
79
|
-
expect(booleanType.validateValue(1)).toBe(false);
|
|
80
|
-
const multiTextType = new DocSchemaFieldTypeValue("multi-text");
|
|
81
|
-
expect(multiTextType.validateValue(["a", "b"])).toBe(true);
|
|
82
|
-
expect(multiTextType.validateValue([1, 2])).toBe(false);
|
|
83
|
-
expect(multiTextType.validateValue("not array")).toBe(false);
|
|
84
|
-
const multiNumberType = new DocSchemaFieldTypeValue("multi-number");
|
|
85
|
-
expect(multiNumberType.validateValue([1, 2, 3])).toBe(true);
|
|
86
|
-
expect(multiNumberType.validateValue(["1", "2"])).toBe(false);
|
|
87
|
-
});
|
|
88
|
-
test("fromメソッドでインスタンスを生成できる", () => {
|
|
89
|
-
const type = DocSchemaFieldTypeValue.from("text");
|
|
90
|
-
expect(type.type).toBe("text");
|
|
91
|
-
expect(type.isText).toBe(true);
|
|
92
|
-
});
|
|
93
|
-
test("JSON形式に変換できる", () => {
|
|
94
|
-
const type = new DocSchemaFieldTypeValue("multi-relation");
|
|
95
|
-
expect(type.toJson()).toBe("multi-relation");
|
|
96
|
-
});
|
|
97
|
-
test("無効なタイプでエラーが発生する", () => {
|
|
98
|
-
expect(() => {
|
|
99
|
-
new DocSchemaFieldTypeValue("invalid-type");
|
|
100
|
-
}).toThrow();
|
|
101
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { DocSchemaFieldBooleanMultipleValue } from "./doc-schema-field-boolean-multiple-value";
|
|
2
|
-
import type { DocSchemaFieldBooleanSingleValue } from "./doc-schema-field-boolean-single-value";
|
|
3
|
-
import type { DocSchemaFieldNumberMultipleValue } from "./doc-schema-field-number-multiple-value";
|
|
4
|
-
import type { DocSchemaFieldNumberSingleValue } from "./doc-schema-field-number-single-value";
|
|
5
|
-
import type { DocSchemaFieldRelationMultipleValue } from "./doc-schema-field-relation-multiple-value";
|
|
6
|
-
import type { DocSchemaFieldRelationSingleValue } from "./doc-schema-field-relation-single-value";
|
|
7
|
-
import type { DocSchemaFieldSelectNumberMultipleValue } from "./doc-schema-field-select-number-multiple-value";
|
|
8
|
-
import type { DocSchemaFieldSelectNumberSingleValue } from "./doc-schema-field-select-number-single-value";
|
|
9
|
-
import type { DocSchemaFieldSelectTextMultipleValue } from "./doc-schema-field-select-text-multiple-value";
|
|
10
|
-
import type { DocSchemaFieldSelectTextSingleValue } from "./doc-schema-field-select-text-single-value";
|
|
11
|
-
import type { DocSchemaFieldTextMultipleValue } from "./doc-schema-field-text-multiple-value";
|
|
12
|
-
import type { DocSchemaFieldTextSingleValue } from "./doc-schema-field-text-single-value";
|
|
13
|
-
/**
|
|
14
|
-
* テキスト型フィールド
|
|
15
|
-
*/
|
|
16
|
-
export type DocSchemaFieldTextTypes = DocSchemaFieldTextSingleValue | DocSchemaFieldTextMultipleValue;
|
|
17
|
-
/**
|
|
18
|
-
* 数値型フィールド
|
|
19
|
-
*/
|
|
20
|
-
export type DocSchemaFieldNumberTypes = DocSchemaFieldNumberSingleValue | DocSchemaFieldNumberMultipleValue;
|
|
21
|
-
/**
|
|
22
|
-
* ブール型フィールド
|
|
23
|
-
*/
|
|
24
|
-
export type DocSchemaFieldBooleanTypes = DocSchemaFieldBooleanSingleValue | DocSchemaFieldBooleanMultipleValue;
|
|
25
|
-
/**
|
|
26
|
-
* 選択型フィールド
|
|
27
|
-
*/
|
|
28
|
-
export type DocSchemaFieldSelectTypes = DocSchemaFieldSelectTextSingleValue | DocSchemaFieldSelectTextMultipleValue | DocSchemaFieldSelectNumberSingleValue | DocSchemaFieldSelectNumberMultipleValue;
|
|
29
|
-
/**
|
|
30
|
-
* リレーション型フィールド
|
|
31
|
-
*/
|
|
32
|
-
export type DocSchemaFieldRelationTypes = DocSchemaFieldRelationSingleValue | DocSchemaFieldRelationMultipleValue;
|
|
33
|
-
/**
|
|
34
|
-
* 複数値型フィールド(multi-*系)
|
|
35
|
-
*/
|
|
36
|
-
export type DocSchemaFieldMultipleTypes = DocSchemaFieldTextMultipleValue | DocSchemaFieldNumberMultipleValue | DocSchemaFieldBooleanMultipleValue | DocSchemaFieldSelectTextMultipleValue | DocSchemaFieldSelectNumberMultipleValue | DocSchemaFieldRelationMultipleValue;
|
|
37
|
-
/**
|
|
38
|
-
* 単一値型フィールド
|
|
39
|
-
*/
|
|
40
|
-
export type DocSchemaFieldSingleTypes = DocSchemaFieldTextSingleValue | DocSchemaFieldNumberSingleValue | DocSchemaFieldBooleanSingleValue | DocSchemaFieldSelectTextSingleValue | DocSchemaFieldSelectNumberSingleValue | DocSchemaFieldRelationSingleValue;
|
|
41
|
-
/**
|
|
42
|
-
* スキーマフィールドの型共用体
|
|
43
|
-
*/
|
|
44
|
-
export type DocSchemaFieldValue = DocSchemaFieldTextTypes | DocSchemaFieldNumberTypes | DocSchemaFieldBooleanTypes | DocSchemaFieldSelectTypes | DocSchemaFieldRelationTypes;
|
|
45
|
-
//# sourceMappingURL=doc-schema-field-value.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-schema-field-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,2CAA2C,CAAA;AACnG,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAA;AAC/F,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AACjG,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAA;AAC7F,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AACjG,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,iDAAiD,CAAA;AAC9G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAC1G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,+CAA+C,CAAA;AAC1G,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,6CAA6C,CAAA;AACtG,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAA;AAC7F,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAA;AAEzF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,+BAA+B,CAAA;AAEnC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACjC,+BAA+B,GAC/B,iCAAiC,CAAA;AAErC;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,gCAAgC,GAChC,kCAAkC,CAAA;AAEtC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACjC,mCAAmC,GACnC,qCAAqC,GACrC,qCAAqC,GACrC,uCAAuC,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,2BAA2B,GACnC,iCAAiC,GACjC,mCAAmC,CAAA;AAEvC;;GAEG;AACH,MAAM,MAAM,2BAA2B,GACnC,+BAA+B,GAC/B,iCAAiC,GACjC,kCAAkC,GAClC,qCAAqC,GACrC,uCAAuC,GACvC,mCAAmC,CAAA;AAEvC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACjC,6BAA6B,GAC7B,+BAA+B,GAC/B,gCAAgC,GAChC,mCAAmC,GACnC,qCAAqC,GACrC,iCAAiC,CAAA;AAErC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,uBAAuB,GACvB,yBAAyB,GACzB,0BAA0B,GAC1B,yBAAyB,GACzB,2BAA2B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import type { DocFileMdFrontMatter, DocRelationFile, DocSchemaRecord } from "../types";
|
|
2
|
-
import { DocSchemaFieldRelationMultipleValue } from "./doc-schema-field-relation-multiple-value";
|
|
3
|
-
import { DocSchemaFieldRelationSingleValue } from "./doc-schema-field-relation-single-value";
|
|
4
|
-
import type { DocSchemaFieldValue } from "./doc-schema-field-value";
|
|
5
|
-
/**
|
|
6
|
-
* スキーマとリレーション
|
|
7
|
-
*/
|
|
8
|
-
export declare class DocSchemaValue {
|
|
9
|
-
readonly value: DocSchemaRecord;
|
|
10
|
-
constructor(value: DocSchemaRecord);
|
|
11
|
-
/**
|
|
12
|
-
* フィールド名の一覧を取得
|
|
13
|
-
*/
|
|
14
|
-
get fieldNames(): string[];
|
|
15
|
-
/**
|
|
16
|
-
* 指定されたフィールド名のフィールドを取得
|
|
17
|
-
*/
|
|
18
|
-
field(name: string): DocSchemaFieldValue | null;
|
|
19
|
-
get fields(): DocSchemaFieldValue[];
|
|
20
|
-
get relationFields(): (DocSchemaFieldRelationSingleValue | DocSchemaFieldRelationMultipleValue)[];
|
|
21
|
-
/**
|
|
22
|
-
* 空のスキーマエンティティを作成
|
|
23
|
-
*/
|
|
24
|
-
static empty(): DocSchemaValue;
|
|
25
|
-
/**
|
|
26
|
-
* スキーマからリレーションパスを抽出
|
|
27
|
-
*/
|
|
28
|
-
extractRelationPaths(): Set<string>;
|
|
29
|
-
/**
|
|
30
|
-
* フィールドがリレーション型かどうかを判定
|
|
31
|
-
*/
|
|
32
|
-
private isRelationField;
|
|
33
|
-
/**
|
|
34
|
-
* リレーションオプションを作成
|
|
35
|
-
*/
|
|
36
|
-
createRelationOption(filePath: string, title: string | null): DocRelationFile;
|
|
37
|
-
/**
|
|
38
|
-
* ファイルをスキップすべきかどうかを判定
|
|
39
|
-
*/
|
|
40
|
-
shouldSkipFile(filePath: string): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* 値を指定された型に変換する(デフォルト値フォールバック付き)
|
|
43
|
-
*/
|
|
44
|
-
convertValue(value: unknown, targetType: string, defaultValue: unknown): unknown;
|
|
45
|
-
/**
|
|
46
|
-
* 型別の変換処理
|
|
47
|
-
*/
|
|
48
|
-
private convertByType;
|
|
49
|
-
/**
|
|
50
|
-
* 文字列型への変換
|
|
51
|
-
*/
|
|
52
|
-
private convertToString;
|
|
53
|
-
/**
|
|
54
|
-
* 数値型への変換
|
|
55
|
-
*/
|
|
56
|
-
private convertToNumber;
|
|
57
|
-
/**
|
|
58
|
-
* ブール型への変換
|
|
59
|
-
*/
|
|
60
|
-
private convertToBoolean;
|
|
61
|
-
/**
|
|
62
|
-
* 配列型への変換
|
|
63
|
-
*/
|
|
64
|
-
private convertToArray;
|
|
65
|
-
/**
|
|
66
|
-
* リレーション型への変換
|
|
67
|
-
*/
|
|
68
|
-
private convertToRelation;
|
|
69
|
-
/**
|
|
70
|
-
* マルチリレーション型への変換
|
|
71
|
-
*/
|
|
72
|
-
private convertToMultiRelation;
|
|
73
|
-
/**
|
|
74
|
-
* パスからファイル名を抽出(拡張子除去)
|
|
75
|
-
*/
|
|
76
|
-
private extractFileNameFromPath;
|
|
77
|
-
/**
|
|
78
|
-
* スキーマベースでFrontMatterを補完する
|
|
79
|
-
*/
|
|
80
|
-
getCompleteFrontMatter(rawFrontMatter: unknown): DocFileMdFrontMatter;
|
|
81
|
-
/**
|
|
82
|
-
* スキーマからデフォルトFrontMatterを生成
|
|
83
|
-
*/
|
|
84
|
-
private generateDefaultFrontMatter;
|
|
85
|
-
/**
|
|
86
|
-
* 既存の値を保持しながらマージ
|
|
87
|
-
*/
|
|
88
|
-
private mergePreservingExistingValues;
|
|
89
|
-
/**
|
|
90
|
-
* ファイルパスからファイル名を抽出(拡張子なし)
|
|
91
|
-
*/
|
|
92
|
-
private extractFileName;
|
|
93
|
-
/**
|
|
94
|
-
* nullまundefinedのチェック
|
|
95
|
-
*/
|
|
96
|
-
private isNullOrUndefined;
|
|
97
|
-
toJson(): DocSchemaRecord;
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=doc-schema-value.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-schema-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAEf,eAAe,EAEhB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAA;AAChG,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE;;GAEG;AACH,qBAAa,cAAc;IACb,QAAQ,CAAC,KAAK,EAAE,eAAe;IAA3C,YAAqB,KAAK,EAAE,eAAe,EAI1C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,EAAE,CAEzB;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAU9C;IAED,IAAI,MAAM,0BAUT;IAED,IAAI,cAAc,IAAI,CAClB,iCAAiC,GACjC,mCAAmC,CACtC,EAAE,CAOF;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,cAAc,CAE7B;IAED;;OAEG;IACH,oBAAoB,IAAI,GAAG,CAAC,MAAM,CAAC,CAYlC;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,eAAe,CAQjB;IAED;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExC;IAED;;OAEG;IACH,YAAY,CACV,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,GACpB,OAAO,CAUT;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,sBAAsB,CAAC,cAAc,EAAE,OAAO,GAAG,oBAAoB,CAMpE;IAED;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAalC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB,MAAM,IAAI,eAAe,CAExB;CACF"}
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import { zDocFileMdFrontMatter, zDocRelationFile, zDocSchema } from "../models";
|
|
2
|
-
import { DocFrontMatterMdValue } from "./doc-front-matter-md-value";
|
|
3
|
-
import { DocSchemaFieldFactory } from "./doc-schema-field-factory";
|
|
4
|
-
import { DocSchemaFieldRelationMultipleValue } from "./doc-schema-field-relation-multiple-value";
|
|
5
|
-
import { DocSchemaFieldRelationSingleValue } from "./doc-schema-field-relation-single-value";
|
|
6
|
-
/**
|
|
7
|
-
* スキーマとリレーション
|
|
8
|
-
*/
|
|
9
|
-
export class DocSchemaValue {
|
|
10
|
-
value;
|
|
11
|
-
constructor(value) {
|
|
12
|
-
this.value = value;
|
|
13
|
-
zDocSchema.parse(value);
|
|
14
|
-
Object.freeze(this.value);
|
|
15
|
-
Object.freeze(this);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* フィールド名の一覧を取得
|
|
19
|
-
*/
|
|
20
|
-
get fieldNames() {
|
|
21
|
-
return Object.keys(this.value);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 指定されたフィールド名のフィールドを取得
|
|
25
|
-
*/
|
|
26
|
-
field(name) {
|
|
27
|
-
const fieldDef = this.value[name];
|
|
28
|
-
if (fieldDef === undefined) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
const factory = new DocSchemaFieldFactory();
|
|
32
|
-
return factory.fromSchemaEntry(name, fieldDef);
|
|
33
|
-
}
|
|
34
|
-
get fields() {
|
|
35
|
-
const factory = new DocSchemaFieldFactory();
|
|
36
|
-
return this.fieldNames.map((name) => {
|
|
37
|
-
const fieldValue = this.value[name];
|
|
38
|
-
if (!fieldValue) {
|
|
39
|
-
throw new Error(`Field ${name} not found in schema`);
|
|
40
|
-
}
|
|
41
|
-
return factory.fromSchemaEntry(name, fieldValue);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
get relationFields() {
|
|
45
|
-
return this.fields.filter((t) => {
|
|
46
|
-
return (t instanceof DocSchemaFieldRelationSingleValue ||
|
|
47
|
-
t instanceof DocSchemaFieldRelationMultipleValue);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 空のスキーマエンティティを作成
|
|
52
|
-
*/
|
|
53
|
-
static empty() {
|
|
54
|
-
return new DocSchemaValue({});
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* スキーマからリレーションパスを抽出
|
|
58
|
-
*/
|
|
59
|
-
extractRelationPaths() {
|
|
60
|
-
if (!this.value)
|
|
61
|
-
return new Set();
|
|
62
|
-
const uniqueRelationPaths = new Set();
|
|
63
|
-
for (const field of Object.values(this.value)) {
|
|
64
|
-
if (this.isRelationField(field) && "path" in field) {
|
|
65
|
-
uniqueRelationPaths.add(field.path);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return uniqueRelationPaths;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* フィールドがリレーション型かどうかを判定
|
|
72
|
-
*/
|
|
73
|
-
isRelationField(field) {
|
|
74
|
-
return field.type === "relation" || field.type === "multi-relation";
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* リレーションオプションを作成
|
|
78
|
-
*/
|
|
79
|
-
createRelationOption(filePath, title) {
|
|
80
|
-
const fileName = this.extractFileName(filePath);
|
|
81
|
-
return zDocRelationFile.parse({
|
|
82
|
-
name: fileName,
|
|
83
|
-
label: title || fileName,
|
|
84
|
-
value: fileName,
|
|
85
|
-
path: filePath,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* ファイルをスキップすべきかどうかを判定
|
|
90
|
-
*/
|
|
91
|
-
shouldSkipFile(filePath) {
|
|
92
|
-
return filePath.endsWith("index.md") || filePath.endsWith("README.md");
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* 値を指定された型に変換する(デフォルト値フォールバック付き)
|
|
96
|
-
*/
|
|
97
|
-
convertValue(value, targetType, defaultValue) {
|
|
98
|
-
if (this.isNullOrUndefined(value)) {
|
|
99
|
-
return defaultValue;
|
|
100
|
-
}
|
|
101
|
-
try {
|
|
102
|
-
return this.convertByType(value, targetType, defaultValue);
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return defaultValue;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* 型別の変換処理
|
|
110
|
-
*/
|
|
111
|
-
convertByType(value, targetType, defaultValue) {
|
|
112
|
-
if (targetType === "text") {
|
|
113
|
-
return this.convertToString(value, defaultValue);
|
|
114
|
-
}
|
|
115
|
-
if (targetType === "number") {
|
|
116
|
-
return this.convertToNumber(value, defaultValue);
|
|
117
|
-
}
|
|
118
|
-
if (targetType === "boolean") {
|
|
119
|
-
return this.convertToBoolean(value, defaultValue);
|
|
120
|
-
}
|
|
121
|
-
if (targetType === "multi-text" || targetType === "array") {
|
|
122
|
-
return this.convertToArray(value, defaultValue);
|
|
123
|
-
}
|
|
124
|
-
if (targetType === "relation") {
|
|
125
|
-
return this.convertToRelation(value, defaultValue);
|
|
126
|
-
}
|
|
127
|
-
if (targetType === "multi-relation") {
|
|
128
|
-
return this.convertToMultiRelation(value, defaultValue);
|
|
129
|
-
}
|
|
130
|
-
return defaultValue;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* 文字列型への変換
|
|
134
|
-
*/
|
|
135
|
-
convertToString(value, defaultValue) {
|
|
136
|
-
if (typeof value === "string")
|
|
137
|
-
return value;
|
|
138
|
-
if (typeof value === "number")
|
|
139
|
-
return String(value);
|
|
140
|
-
if (typeof value === "boolean")
|
|
141
|
-
return String(value);
|
|
142
|
-
return defaultValue;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* 数値型への変換
|
|
146
|
-
*/
|
|
147
|
-
convertToNumber(value, defaultValue) {
|
|
148
|
-
if (typeof value === "number")
|
|
149
|
-
return value;
|
|
150
|
-
if (typeof value === "string") {
|
|
151
|
-
const parsed = Number(value);
|
|
152
|
-
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
153
|
-
}
|
|
154
|
-
if (typeof value === "boolean")
|
|
155
|
-
return value ? 1 : 0;
|
|
156
|
-
return defaultValue;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* ブール型への変換
|
|
160
|
-
*/
|
|
161
|
-
convertToBoolean(value, defaultValue) {
|
|
162
|
-
if (typeof value === "boolean")
|
|
163
|
-
return value;
|
|
164
|
-
if (typeof value === "string") {
|
|
165
|
-
const lower = value.toLowerCase();
|
|
166
|
-
if (lower === "true" || lower === "1")
|
|
167
|
-
return true;
|
|
168
|
-
if (lower === "false" || lower === "0")
|
|
169
|
-
return false;
|
|
170
|
-
return defaultValue;
|
|
171
|
-
}
|
|
172
|
-
if (typeof value === "number")
|
|
173
|
-
return value !== 0;
|
|
174
|
-
return defaultValue;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 配列型への変換
|
|
178
|
-
*/
|
|
179
|
-
convertToArray(value, defaultValue) {
|
|
180
|
-
if (Array.isArray(value))
|
|
181
|
-
return value;
|
|
182
|
-
if (typeof value === "string") {
|
|
183
|
-
return value.split(",").map((item) => item.trim());
|
|
184
|
-
}
|
|
185
|
-
return defaultValue;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* リレーション型への変換
|
|
189
|
-
*/
|
|
190
|
-
convertToRelation(value, defaultValue) {
|
|
191
|
-
if (typeof value === "string") {
|
|
192
|
-
return this.extractFileNameFromPath(value);
|
|
193
|
-
}
|
|
194
|
-
return defaultValue;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* マルチリレーション型への変換
|
|
198
|
-
*/
|
|
199
|
-
convertToMultiRelation(value, defaultValue) {
|
|
200
|
-
if (Array.isArray(value)) {
|
|
201
|
-
return value
|
|
202
|
-
.filter((item) => typeof item === "string")
|
|
203
|
-
.map((item) => this.extractFileNameFromPath(item));
|
|
204
|
-
}
|
|
205
|
-
if (typeof value === "string") {
|
|
206
|
-
return value
|
|
207
|
-
.split(",")
|
|
208
|
-
.map((item) => this.extractFileNameFromPath(item.trim()));
|
|
209
|
-
}
|
|
210
|
-
return defaultValue;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* パスからファイル名を抽出(拡張子除去)
|
|
214
|
-
*/
|
|
215
|
-
extractFileNameFromPath(path) {
|
|
216
|
-
const fileName = path.split("/").pop() || path;
|
|
217
|
-
return fileName.replace(/\.md$/, "");
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* スキーマベースでFrontMatterを補完する
|
|
221
|
-
*/
|
|
222
|
-
getCompleteFrontMatter(rawFrontMatter) {
|
|
223
|
-
const defaultFrontMatter = this.generateDefaultFrontMatter();
|
|
224
|
-
return this.mergePreservingExistingValues(defaultFrontMatter, rawFrontMatter);
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* スキーマからデフォルトFrontMatterを生成
|
|
228
|
-
*/
|
|
229
|
-
generateDefaultFrontMatter() {
|
|
230
|
-
if (!this.value)
|
|
231
|
-
return {};
|
|
232
|
-
const defaultFrontMatter = {};
|
|
233
|
-
for (const [key, field] of Object.entries(this.value)) {
|
|
234
|
-
defaultFrontMatter[key] =
|
|
235
|
-
DocFrontMatterMdValue.generateDefaultValueFromSchemaField(field);
|
|
236
|
-
}
|
|
237
|
-
return zDocFileMdFrontMatter.parse(defaultFrontMatter);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* 既存の値を保持しながらマージ
|
|
241
|
-
*/
|
|
242
|
-
mergePreservingExistingValues(defaults, existing) {
|
|
243
|
-
const result = { ...defaults };
|
|
244
|
-
if (existing && typeof existing === "object") {
|
|
245
|
-
const validatedData = zDocFileMdFrontMatter.parse(existing);
|
|
246
|
-
for (const [key, value] of Object.entries(validatedData)) {
|
|
247
|
-
if (value !== undefined && value !== null) {
|
|
248
|
-
result[key] = value;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return result;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* ファイルパスからファイル名を抽出(拡張子なし)
|
|
256
|
-
*/
|
|
257
|
-
extractFileName(filePath) {
|
|
258
|
-
return filePath.split("/").pop()?.replace(".md", "") || filePath;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* nullまundefinedのチェック
|
|
262
|
-
*/
|
|
263
|
-
isNullOrUndefined(value) {
|
|
264
|
-
return value === null || value === undefined;
|
|
265
|
-
}
|
|
266
|
-
toJson() {
|
|
267
|
-
return this.value;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-schema-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-value.test.ts"],"names":[],"mappings":""}
|