@interactive-inc/docs-client 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +228 -0
- package/build/doc-client.d.ts +59 -0
- package/build/doc-client.d.ts.map +1 -0
- package/build/doc-client.js +95 -0
- package/build/doc-client.test.d.ts +2 -0
- package/build/doc-client.test.d.ts.map +1 -0
- package/build/doc-client.test.js +38 -0
- package/build/doc-directory-reference.d.ts +65 -0
- package/build/doc-directory-reference.d.ts.map +1 -0
- package/build/doc-directory-reference.js +292 -0
- package/build/doc-directory-reference.test.d.ts +2 -0
- package/build/doc-directory-reference.test.d.ts.map +1 -0
- package/build/doc-directory-reference.test.js +100 -0
- package/build/doc-file-index-reference.d.ts +72 -0
- package/build/doc-file-index-reference.d.ts.map +1 -0
- package/build/doc-file-index-reference.js +191 -0
- package/build/doc-file-index-reference.test.d.ts +2 -0
- package/build/doc-file-index-reference.test.d.ts.map +1 -0
- package/build/doc-file-index-reference.test.js +77 -0
- package/build/doc-file-md-reference.d.ts +97 -0
- package/build/doc-file-md-reference.d.ts.map +1 -0
- package/build/doc-file-md-reference.js +297 -0
- package/build/doc-file-md-reference.test.d.ts +2 -0
- package/build/doc-file-md-reference.test.d.ts.map +1 -0
- package/build/doc-file-md-reference.test.js +465 -0
- package/build/doc-file-relation-reference.d.ts +54 -0
- package/build/doc-file-relation-reference.d.ts.map +1 -0
- package/build/doc-file-relation-reference.js +109 -0
- package/build/doc-file-system-debug.d.ts +81 -0
- package/build/doc-file-system-debug.d.ts.map +1 -0
- package/build/doc-file-system-debug.js +317 -0
- package/build/doc-file-system.d.ts +100 -0
- package/build/doc-file-system.d.ts.map +1 -0
- package/build/doc-file-system.js +210 -0
- package/build/doc-file-tree-system.d.ts +38 -0
- package/build/doc-file-tree-system.d.ts.map +1 -0
- package/build/doc-file-tree-system.js +153 -0
- package/build/doc-file-tree-system.test.d.ts +2 -0
- package/build/doc-file-tree-system.test.d.ts.map +1 -0
- package/build/doc-file-tree-system.test.js +105 -0
- package/build/doc-file-unknown-reference.d.ts +80 -0
- package/build/doc-file-unknown-reference.d.ts.map +1 -0
- package/build/doc-file-unknown-reference.js +181 -0
- package/build/doc-file-unknown-reference.test.d.ts +2 -0
- package/build/doc-file-unknown-reference.test.d.ts.map +1 -0
- package/build/doc-file-unknown-reference.test.js +73 -0
- package/build/doc-markdown-system.d.ts +44 -0
- package/build/doc-markdown-system.d.ts.map +1 -0
- package/build/doc-markdown-system.js +153 -0
- package/build/doc-markdown-system.test.d.ts +2 -0
- package/build/doc-markdown-system.test.d.ts.map +1 -0
- package/build/doc-markdown-system.test.js +124 -0
- package/build/doc-path-system.d.ts +43 -0
- package/build/doc-path-system.d.ts.map +1 -0
- package/build/doc-path-system.js +148 -0
- package/build/doc-path-system.test.d.ts +2 -0
- package/build/doc-path-system.test.d.ts.map +1 -0
- package/build/doc-path-system.test.js +67 -0
- package/build/entities/doc-file-entity.d.ts +5 -0
- package/build/entities/doc-file-entity.d.ts.map +1 -0
- package/build/entities/doc-file-entity.js +1 -0
- package/build/entities/doc-file-index-entity.d.ts +30 -0
- package/build/entities/doc-file-index-entity.d.ts.map +1 -0
- package/build/entities/doc-file-index-entity.js +49 -0
- package/build/entities/doc-file-index-entity.test.d.ts +2 -0
- package/build/entities/doc-file-index-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-index-entity.test.js +195 -0
- package/build/entities/doc-file-md-entity.d.ts +30 -0
- package/build/entities/doc-file-md-entity.d.ts.map +1 -0
- package/build/entities/doc-file-md-entity.js +49 -0
- package/build/entities/doc-file-md-entity.test.d.ts +2 -0
- package/build/entities/doc-file-md-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-md-entity.test.js +178 -0
- package/build/entities/doc-file-unknown-entity.d.ts +26 -0
- package/build/entities/doc-file-unknown-entity.d.ts.map +1 -0
- package/build/entities/doc-file-unknown-entity.js +45 -0
- package/build/entities/doc-file-unknown-entity.test.d.ts +2 -0
- package/build/entities/doc-file-unknown-entity.test.d.ts.map +1 -0
- package/build/entities/doc-file-unknown-entity.test.js +131 -0
- package/build/index.d.ts +42 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +39 -24064
- package/build/models.d.ts +818 -0
- package/build/models.d.ts.map +1 -0
- package/build/models.js +312 -0
- package/build/types.d.ts +154 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +1 -0
- package/build/values/doc-content-md-front-matter-value.d.ts +49 -0
- package/build/values/doc-content-md-front-matter-value.d.ts.map +1 -0
- package/build/values/doc-content-md-front-matter-value.js +94 -0
- package/build/values/doc-content-md-front-matter-value.test.d.ts +2 -0
- package/build/values/doc-content-md-front-matter-value.test.d.ts.map +1 -0
- package/build/values/doc-content-md-front-matter-value.test.js +73 -0
- package/build/values/doc-content-md-value.d.ts +66 -0
- package/build/values/doc-content-md-value.d.ts.map +1 -0
- package/build/values/doc-content-md-value.js +218 -0
- package/build/values/doc-content-md-value.test.d.ts +2 -0
- package/build/values/doc-content-md-value.test.d.ts.map +1 -0
- package/build/values/doc-content-md-value.test.js +179 -0
- package/build/values/doc-directory-path-value.d.ts +89 -0
- package/build/values/doc-directory-path-value.d.ts.map +1 -0
- package/build/values/doc-directory-path-value.js +145 -0
- package/build/values/doc-directory-path-value.test.d.ts +2 -0
- package/build/values/doc-directory-path-value.test.d.ts.map +1 -0
- package/build/values/doc-directory-path-value.test.js +68 -0
- package/build/values/doc-file-content-index-value.d.ts +62 -0
- package/build/values/doc-file-content-index-value.d.ts.map +1 -0
- package/build/values/doc-file-content-index-value.js +134 -0
- package/build/values/doc-file-content-index-value.test.d.ts +2 -0
- package/build/values/doc-file-content-index-value.test.d.ts.map +1 -0
- package/build/values/doc-file-content-index-value.test.js +203 -0
- package/build/values/doc-file-content-md-value.d.ts +62 -0
- package/build/values/doc-file-content-md-value.d.ts.map +1 -0
- package/build/values/doc-file-content-md-value.js +139 -0
- package/build/values/doc-file-content-md-value.test.d.ts +2 -0
- package/build/values/doc-file-content-md-value.test.d.ts.map +1 -0
- package/build/values/doc-file-content-md-value.test.js +160 -0
- package/build/values/doc-file-path-value.d.ts +47 -0
- package/build/values/doc-file-path-value.d.ts.map +1 -0
- package/build/values/doc-file-path-value.js +83 -0
- package/build/values/doc-file-path-value.test.d.ts +2 -0
- package/build/values/doc-file-path-value.test.d.ts.map +1 -0
- package/build/values/doc-file-path-value.test.js +84 -0
- package/build/values/doc-front-matter-index-value.d.ts +66 -0
- package/build/values/doc-front-matter-index-value.d.ts.map +1 -0
- package/build/values/doc-front-matter-index-value.js +185 -0
- package/build/values/doc-front-matter-index-value.test.d.ts +2 -0
- package/build/values/doc-front-matter-index-value.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-index-value.test.js +98 -0
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts +2 -0
- package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value-accessor.test.js +226 -0
- package/build/values/doc-front-matter-md-value.d.ts +80 -0
- package/build/values/doc-front-matter-md-value.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value.js +257 -0
- package/build/values/doc-front-matter-md-value.test.d.ts +2 -0
- package/build/values/doc-front-matter-md-value.test.d.ts.map +1 -0
- package/build/values/doc-front-matter-md-value.test.js +198 -0
- package/build/values/doc-relation-field-value.d.ts +57 -0
- package/build/values/doc-relation-field-value.d.ts.map +1 -0
- package/build/values/doc-relation-field-value.js +85 -0
- package/build/values/doc-relation-field-value.test.d.ts +2 -0
- package/build/values/doc-relation-field-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-field-value.test.js +115 -0
- package/build/values/doc-relation-file-value.d.ts +33 -0
- package/build/values/doc-relation-file-value.d.ts.map +1 -0
- package/build/values/doc-relation-file-value.js +55 -0
- package/build/values/doc-relation-file-value.test.d.ts +2 -0
- package/build/values/doc-relation-file-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-file-value.test.js +77 -0
- package/build/values/doc-relation-value.d.ts +34 -0
- package/build/values/doc-relation-value.d.ts.map +1 -0
- package/build/values/doc-relation-value.js +56 -0
- package/build/values/doc-relation-value.test.d.ts +2 -0
- package/build/values/doc-relation-value.test.d.ts.map +1 -0
- package/build/values/doc-relation-value.test.js +89 -0
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-multiple-value.js +43 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-multiple-value.test.js +76 -0
- package/build/values/doc-schema-field-boolean-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-boolean-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-single-value.js +39 -0
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-boolean-single-value.test.js +73 -0
- package/build/values/doc-schema-field-factory.d.ts +37 -0
- package/build/values/doc-schema-field-factory.d.ts.map +1 -0
- package/build/values/doc-schema-field-factory.js +151 -0
- package/build/values/doc-schema-field-factory.test.d.ts +2 -0
- package/build/values/doc-schema-field-factory.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-factory.test.js +215 -0
- package/build/values/doc-schema-field-number-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-number-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-multiple-value.js +43 -0
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-multiple-value.test.js +79 -0
- package/build/values/doc-schema-field-number-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-number-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-single-value.js +39 -0
- package/build/values/doc-schema-field-number-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-number-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-number-single-value.test.js +77 -0
- package/build/values/doc-schema-field-relation-multiple-value.d.ts +24 -0
- package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-multiple-value.js +46 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-multiple-value.test.js +83 -0
- package/build/values/doc-schema-field-relation-single-value.d.ts +24 -0
- package/build/values/doc-schema-field-relation-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-single-value.js +42 -0
- package/build/values/doc-schema-field-relation-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-relation-single-value.test.js +83 -0
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-multiple-value.js +48 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-multiple-value.test.js +84 -0
- package/build/values/doc-schema-field-select-number-single-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-number-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-single-value.js +45 -0
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-number-single-value.test.js +96 -0
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-multiple-value.js +48 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-multiple-value.test.js +84 -0
- package/build/values/doc-schema-field-select-text-single-value.d.ts +25 -0
- package/build/values/doc-schema-field-select-text-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-single-value.js +47 -0
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-select-text-single-value.test.js +96 -0
- package/build/values/doc-schema-field-text-multiple-value.d.ts +23 -0
- package/build/values/doc-schema-field-text-multiple-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-multiple-value.js +43 -0
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-multiple-value.test.js +78 -0
- package/build/values/doc-schema-field-text-single-value.d.ts +23 -0
- package/build/values/doc-schema-field-text-single-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-single-value.js +39 -0
- package/build/values/doc-schema-field-text-single-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-text-single-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-text-single-value.test.js +76 -0
- package/build/values/doc-schema-field-type-value.d.ts +61 -0
- package/build/values/doc-schema-field-type-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-type-value.js +134 -0
- package/build/values/doc-schema-field-type-value.test.d.ts +2 -0
- package/build/values/doc-schema-field-type-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-field-type-value.test.js +101 -0
- package/build/values/doc-schema-field-value.d.ts +45 -0
- package/build/values/doc-schema-field-value.d.ts.map +1 -0
- package/build/values/doc-schema-field-value.js +1 -0
- package/build/values/doc-schema-value.d.ts +99 -0
- package/build/values/doc-schema-value.d.ts.map +1 -0
- package/build/values/doc-schema-value.js +269 -0
- package/build/values/doc-schema-value.test.d.ts +2 -0
- package/build/values/doc-schema-value.test.d.ts.map +1 -0
- package/build/values/doc-schema-value.test.js +301 -0
- package/build/values/doc-tree-directory-node-value.d.ts +36 -0
- package/build/values/doc-tree-directory-node-value.d.ts.map +1 -0
- package/build/values/doc-tree-directory-node-value.js +71 -0
- package/build/values/doc-tree-directory-node-value.test.d.ts +2 -0
- package/build/values/doc-tree-directory-node-value.test.d.ts.map +1 -0
- package/build/values/doc-tree-directory-node-value.test.js +162 -0
- package/build/values/doc-tree-file-node-value.d.ts +33 -0
- package/build/values/doc-tree-file-node-value.d.ts.map +1 -0
- package/build/values/doc-tree-file-node-value.js +56 -0
- package/build/values/doc-tree-file-node-value.test.d.ts +2 -0
- package/build/values/doc-tree-file-node-value.test.d.ts.map +1 -0
- package/build/values/doc-tree-file-node-value.test.js +113 -0
- package/debug/debug.ts +108 -0
- package/package.json +7 -45
- package/bin/docs.js +0 -3
- package/build/assets/index.css +0 -1
- package/build/assets/index.js +0 -298
- package/build/index.html +0 -13
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* テキスト複数型スキーマフィールド
|
|
3
|
+
*/
|
|
4
|
+
export class DocSchemaFieldTextMultipleValue {
|
|
5
|
+
key;
|
|
6
|
+
value;
|
|
7
|
+
constructor(key, value) {
|
|
8
|
+
this.key = key;
|
|
9
|
+
this.value = value;
|
|
10
|
+
Object.freeze(this);
|
|
11
|
+
Object.freeze(this.value);
|
|
12
|
+
if (this.value.default) {
|
|
13
|
+
Object.freeze(this.value.default);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get type() {
|
|
17
|
+
return this.value.type;
|
|
18
|
+
}
|
|
19
|
+
get required() {
|
|
20
|
+
return this.value.required;
|
|
21
|
+
}
|
|
22
|
+
get title() {
|
|
23
|
+
return this.value.title ?? "";
|
|
24
|
+
}
|
|
25
|
+
get description() {
|
|
26
|
+
return this.value.description ?? "";
|
|
27
|
+
}
|
|
28
|
+
get default() {
|
|
29
|
+
return this.value.default;
|
|
30
|
+
}
|
|
31
|
+
isArray = true;
|
|
32
|
+
isSingle = false;
|
|
33
|
+
isText = true;
|
|
34
|
+
toJson() {
|
|
35
|
+
return { ...this.value };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 値の型を検証する
|
|
39
|
+
*/
|
|
40
|
+
validate(value) {
|
|
41
|
+
return Array.isArray(value) && value.every((v) => typeof v === "string");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-schema-field-text-multiple-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-text-multiple-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { DocSchemaFieldTextMultipleValue } from "./doc-schema-field-text-multiple-value";
|
|
3
|
+
test("複数テキスト型フィールドの基本プロパティを取得できる", () => {
|
|
4
|
+
const field = new DocSchemaFieldTextMultipleValue("tags", {
|
|
5
|
+
type: "multi-text",
|
|
6
|
+
required: true,
|
|
7
|
+
title: "タグ",
|
|
8
|
+
description: "記事のタグリスト",
|
|
9
|
+
default: ["技術", "プログラミング"],
|
|
10
|
+
});
|
|
11
|
+
expect(field.key).toBe("tags");
|
|
12
|
+
expect(field.type).toBe("multi-text");
|
|
13
|
+
expect(field.required).toBe(true);
|
|
14
|
+
expect(field.title).toBe("タグ");
|
|
15
|
+
expect(field.description).toBe("記事のタグリスト");
|
|
16
|
+
expect(field.default).toEqual(["技術", "プログラミング"]);
|
|
17
|
+
});
|
|
18
|
+
test("型判定メソッドが正しく動作する", () => {
|
|
19
|
+
const field = new DocSchemaFieldTextMultipleValue("keywords", {
|
|
20
|
+
type: "multi-text",
|
|
21
|
+
required: false,
|
|
22
|
+
title: null,
|
|
23
|
+
description: null,
|
|
24
|
+
default: null,
|
|
25
|
+
});
|
|
26
|
+
expect(field.isArray).toBe(true);
|
|
27
|
+
expect(field.isSingle).toBe(false);
|
|
28
|
+
expect(field.isText).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
test("値の検証メソッドが正しく動作する", () => {
|
|
31
|
+
const field = new DocSchemaFieldTextMultipleValue("categories", {
|
|
32
|
+
type: "multi-text",
|
|
33
|
+
required: true,
|
|
34
|
+
title: null,
|
|
35
|
+
description: null,
|
|
36
|
+
default: null,
|
|
37
|
+
});
|
|
38
|
+
expect(field.validate(["テキスト1", "テキスト2"])).toBe(true);
|
|
39
|
+
expect(field.validate([])).toBe(true);
|
|
40
|
+
expect(field.validate([""])).toBe(true);
|
|
41
|
+
expect(field.validate(["123", "456"])).toBe(true);
|
|
42
|
+
expect(field.validate("テキスト")).toBe(false);
|
|
43
|
+
expect(field.validate([123, 456])).toBe(false);
|
|
44
|
+
expect(field.validate([true, false])).toBe(false);
|
|
45
|
+
expect(field.validate(["valid", 123])).toBe(false);
|
|
46
|
+
expect(field.validate(null)).toBe(false);
|
|
47
|
+
expect(field.validate(undefined)).toBe(false);
|
|
48
|
+
expect(field.validate({})).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
test("オプショナルなプロパティがundefinedでも動作する", () => {
|
|
51
|
+
const field = new DocSchemaFieldTextMultipleValue("items", {
|
|
52
|
+
type: "multi-text",
|
|
53
|
+
required: true,
|
|
54
|
+
title: null,
|
|
55
|
+
description: null,
|
|
56
|
+
default: null,
|
|
57
|
+
});
|
|
58
|
+
expect(field.title).toBe("");
|
|
59
|
+
expect(field.description).toBe("");
|
|
60
|
+
expect(field.default).toBe(null);
|
|
61
|
+
});
|
|
62
|
+
test("JSON形式に変換できる", () => {
|
|
63
|
+
const field = new DocSchemaFieldTextMultipleValue("authors", {
|
|
64
|
+
type: "multi-text",
|
|
65
|
+
required: false,
|
|
66
|
+
title: "著者リスト",
|
|
67
|
+
description: null,
|
|
68
|
+
default: ["田中", "鈴木"],
|
|
69
|
+
});
|
|
70
|
+
const json = field.toJson();
|
|
71
|
+
expect(json).toEqual({
|
|
72
|
+
type: "multi-text",
|
|
73
|
+
required: false,
|
|
74
|
+
title: "著者リスト",
|
|
75
|
+
description: null,
|
|
76
|
+
default: ["田中", "鈴木"],
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DocSchemaField, DocSchemaFieldText } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* 単一テキスト型スキーマフィールド
|
|
4
|
+
*/
|
|
5
|
+
export declare class DocSchemaFieldTextSingleValue {
|
|
6
|
+
readonly key: string;
|
|
7
|
+
readonly value: DocSchemaFieldText;
|
|
8
|
+
constructor(key: string, value: DocSchemaFieldText);
|
|
9
|
+
get type(): "text";
|
|
10
|
+
get required(): boolean;
|
|
11
|
+
get title(): string;
|
|
12
|
+
get description(): string;
|
|
13
|
+
get default(): string | null;
|
|
14
|
+
readonly isArray: boolean;
|
|
15
|
+
readonly isSingle: boolean;
|
|
16
|
+
readonly isText: boolean;
|
|
17
|
+
toJson(): DocSchemaField;
|
|
18
|
+
/**
|
|
19
|
+
* 値の型を検証する
|
|
20
|
+
*/
|
|
21
|
+
validate(value: unknown): boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=doc-schema-field-text-single-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-schema-field-text-single-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-text-single-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElE;;GAEG;AACH,qBAAa,6BAA6B;IAEtC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,KAAK,EAAE,kBAAkB;IAFpC,YACW,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,kBAAkB,EAGnC;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,KAAK,WAER;IAED,IAAI,WAAW,WAEd;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED,QAAQ,CAAC,OAAO,UAAQ;IAExB,QAAQ,CAAC,QAAQ,UAAO;IAExB,QAAQ,CAAC,MAAM,UAAO;IAEtB,MAAM,IAAI,cAAc,CAEvB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 単一テキスト型スキーマフィールド
|
|
3
|
+
*/
|
|
4
|
+
export class DocSchemaFieldTextSingleValue {
|
|
5
|
+
key;
|
|
6
|
+
value;
|
|
7
|
+
constructor(key, value) {
|
|
8
|
+
this.key = key;
|
|
9
|
+
this.value = value;
|
|
10
|
+
Object.freeze(this);
|
|
11
|
+
}
|
|
12
|
+
get type() {
|
|
13
|
+
return this.value.type;
|
|
14
|
+
}
|
|
15
|
+
get required() {
|
|
16
|
+
return this.value.required;
|
|
17
|
+
}
|
|
18
|
+
get title() {
|
|
19
|
+
return this.value.title ?? "";
|
|
20
|
+
}
|
|
21
|
+
get description() {
|
|
22
|
+
return this.value.description ?? "";
|
|
23
|
+
}
|
|
24
|
+
get default() {
|
|
25
|
+
return this.value.default;
|
|
26
|
+
}
|
|
27
|
+
isArray = false;
|
|
28
|
+
isSingle = true;
|
|
29
|
+
isText = true;
|
|
30
|
+
toJson() {
|
|
31
|
+
return { ...this.value };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 値の型を検証する
|
|
35
|
+
*/
|
|
36
|
+
validate(value) {
|
|
37
|
+
return typeof value === "string";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-schema-field-text-single-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-text-single-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { DocSchemaFieldTextSingleValue } from "./doc-schema-field-text-single-value";
|
|
3
|
+
test("単一テキスト型フィールドの基本プロパティを取得できる", () => {
|
|
4
|
+
const field = new DocSchemaFieldTextSingleValue("title", {
|
|
5
|
+
type: "text",
|
|
6
|
+
required: true,
|
|
7
|
+
title: "タイトル",
|
|
8
|
+
description: "記事のタイトル",
|
|
9
|
+
default: "無題",
|
|
10
|
+
});
|
|
11
|
+
expect(field.key).toBe("title");
|
|
12
|
+
expect(field.type).toBe("text");
|
|
13
|
+
expect(field.required).toBe(true);
|
|
14
|
+
expect(field.title).toBe("タイトル");
|
|
15
|
+
expect(field.description).toBe("記事のタイトル");
|
|
16
|
+
expect(field.default).toBe("無題");
|
|
17
|
+
});
|
|
18
|
+
test("型判定メソッドが正しく動作する", () => {
|
|
19
|
+
const field = new DocSchemaFieldTextSingleValue("name", {
|
|
20
|
+
type: "text",
|
|
21
|
+
required: false,
|
|
22
|
+
title: null,
|
|
23
|
+
description: null,
|
|
24
|
+
default: null,
|
|
25
|
+
});
|
|
26
|
+
expect(field.isArray).toBe(false);
|
|
27
|
+
expect(field.isSingle).toBe(true);
|
|
28
|
+
expect(field.isText).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
test("値の検証メソッドが正しく動作する", () => {
|
|
31
|
+
const field = new DocSchemaFieldTextSingleValue("description", {
|
|
32
|
+
type: "text",
|
|
33
|
+
required: true,
|
|
34
|
+
title: null,
|
|
35
|
+
description: null,
|
|
36
|
+
default: null,
|
|
37
|
+
});
|
|
38
|
+
expect(field.validate("テキスト")).toBe(true);
|
|
39
|
+
expect(field.validate("")).toBe(true);
|
|
40
|
+
expect(field.validate("123")).toBe(true);
|
|
41
|
+
expect(field.validate(123)).toBe(false);
|
|
42
|
+
expect(field.validate(true)).toBe(false);
|
|
43
|
+
expect(field.validate(null)).toBe(false);
|
|
44
|
+
expect(field.validate(undefined)).toBe(false);
|
|
45
|
+
expect(field.validate([])).toBe(false);
|
|
46
|
+
expect(field.validate({})).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
test("オプショナルなプロパティがundefinedでも動作する", () => {
|
|
49
|
+
const field = new DocSchemaFieldTextSingleValue("note", {
|
|
50
|
+
type: "text",
|
|
51
|
+
required: true,
|
|
52
|
+
title: null,
|
|
53
|
+
description: null,
|
|
54
|
+
default: null,
|
|
55
|
+
});
|
|
56
|
+
expect(field.title).toBe("");
|
|
57
|
+
expect(field.description).toBe("");
|
|
58
|
+
expect(field.default).toBe(null);
|
|
59
|
+
});
|
|
60
|
+
test("JSON形式に変換できる", () => {
|
|
61
|
+
const field = new DocSchemaFieldTextSingleValue("author", {
|
|
62
|
+
type: "text",
|
|
63
|
+
required: false,
|
|
64
|
+
title: "著者名",
|
|
65
|
+
description: null,
|
|
66
|
+
default: "匿名",
|
|
67
|
+
});
|
|
68
|
+
const json = field.toJson();
|
|
69
|
+
expect(json).toEqual({
|
|
70
|
+
type: "text",
|
|
71
|
+
required: false,
|
|
72
|
+
title: "著者名",
|
|
73
|
+
description: null,
|
|
74
|
+
default: "匿名",
|
|
75
|
+
});
|
|
76
|
+
});
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { DocSchemaFieldType } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* スキーマフィールドタイプ
|
|
4
|
+
*/
|
|
5
|
+
export declare class DocSchemaFieldTypeValue {
|
|
6
|
+
private readonly value;
|
|
7
|
+
constructor(value: DocSchemaFieldType);
|
|
8
|
+
/**
|
|
9
|
+
* タイプ値を取得
|
|
10
|
+
*/
|
|
11
|
+
get type(): "boolean" | "multi-boolean" | "multi-number" | "multi-relation" | "multi-select-number" | "multi-select-text" | "multi-text" | "number" | "relation" | "select-number" | "select-text" | "text";
|
|
12
|
+
/**
|
|
13
|
+
* テキスト型かどうか
|
|
14
|
+
*/
|
|
15
|
+
get isText(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* 数値型かどうか
|
|
18
|
+
*/
|
|
19
|
+
get isNumber(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* ブール型かどうか
|
|
22
|
+
*/
|
|
23
|
+
get isBoolean(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* 選択型(単一)かどうか
|
|
26
|
+
*/
|
|
27
|
+
get isSelect(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* リレーション型かどうか
|
|
30
|
+
*/
|
|
31
|
+
get isRelation(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 配列型かどうか
|
|
34
|
+
*/
|
|
35
|
+
get isArray(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 単一値型かどうか
|
|
38
|
+
*/
|
|
39
|
+
get isSingle(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* 基本型を取得(multi-textの場合はtext)
|
|
42
|
+
*/
|
|
43
|
+
get baseType(): string;
|
|
44
|
+
/**
|
|
45
|
+
* デフォルト値を取得
|
|
46
|
+
*/
|
|
47
|
+
getDefaultValue(): unknown;
|
|
48
|
+
/**
|
|
49
|
+
* 値の検証
|
|
50
|
+
*/
|
|
51
|
+
validateValue(value: unknown): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* 文字列から生成
|
|
54
|
+
*/
|
|
55
|
+
static from(type: string): DocSchemaFieldTypeValue;
|
|
56
|
+
/**
|
|
57
|
+
* JSON形式に変換
|
|
58
|
+
*/
|
|
59
|
+
toJson(): DocSchemaFieldType;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=doc-schema-field-type-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-schema-field-type-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-type-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD;;GAEG;AACH,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,kBAAkB,EAGrD;IAED;;OAEG;IACH,IAAI,IAAI,oMAEP;IAED;;OAEG;IACH,IAAI,MAAM,YAET;IAED;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED;;OAEG;IACH,IAAI,SAAS,YAEZ;IAED;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;OAEG;IACH,IAAI,OAAO,YASV;IAED;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAQrB;IAED;;OAEG;IACH,eAAe,IAAI,OAAO,CAOzB;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkBrC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAGjD;IAED;;OAEG;IACH,MAAM,IAAI,kBAAkB,CAE3B;CACF"}
|
|
@@ -0,0 +1,134 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
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":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|