@interactive-inc/docs-client 0.0.3 → 0.0.5

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.
Files changed (268) hide show
  1. package/README.md +228 -0
  2. package/build/doc-client.d.ts +59 -0
  3. package/build/doc-client.d.ts.map +1 -0
  4. package/build/doc-client.js +95 -0
  5. package/build/doc-client.test.d.ts +2 -0
  6. package/build/doc-client.test.d.ts.map +1 -0
  7. package/build/doc-client.test.js +38 -0
  8. package/build/doc-directory-reference.d.ts +65 -0
  9. package/build/doc-directory-reference.d.ts.map +1 -0
  10. package/build/doc-directory-reference.js +292 -0
  11. package/build/doc-directory-reference.test.d.ts +2 -0
  12. package/build/doc-directory-reference.test.d.ts.map +1 -0
  13. package/build/doc-directory-reference.test.js +100 -0
  14. package/build/doc-file-index-reference.d.ts +72 -0
  15. package/build/doc-file-index-reference.d.ts.map +1 -0
  16. package/build/doc-file-index-reference.js +191 -0
  17. package/build/doc-file-index-reference.test.d.ts +2 -0
  18. package/build/doc-file-index-reference.test.d.ts.map +1 -0
  19. package/build/doc-file-index-reference.test.js +77 -0
  20. package/build/doc-file-md-reference.d.ts +97 -0
  21. package/build/doc-file-md-reference.d.ts.map +1 -0
  22. package/build/doc-file-md-reference.js +297 -0
  23. package/build/doc-file-md-reference.test.d.ts +2 -0
  24. package/build/doc-file-md-reference.test.d.ts.map +1 -0
  25. package/build/doc-file-md-reference.test.js +465 -0
  26. package/build/doc-file-relation-reference.d.ts +54 -0
  27. package/build/doc-file-relation-reference.d.ts.map +1 -0
  28. package/build/doc-file-relation-reference.js +109 -0
  29. package/build/doc-file-system-debug.d.ts +81 -0
  30. package/build/doc-file-system-debug.d.ts.map +1 -0
  31. package/build/doc-file-system-debug.js +317 -0
  32. package/build/doc-file-system.d.ts +100 -0
  33. package/build/doc-file-system.d.ts.map +1 -0
  34. package/build/doc-file-system.js +210 -0
  35. package/build/doc-file-tree-system.d.ts +38 -0
  36. package/build/doc-file-tree-system.d.ts.map +1 -0
  37. package/build/doc-file-tree-system.js +153 -0
  38. package/build/doc-file-tree-system.test.d.ts +2 -0
  39. package/build/doc-file-tree-system.test.d.ts.map +1 -0
  40. package/build/doc-file-tree-system.test.js +105 -0
  41. package/build/doc-file-unknown-reference.d.ts +80 -0
  42. package/build/doc-file-unknown-reference.d.ts.map +1 -0
  43. package/build/doc-file-unknown-reference.js +181 -0
  44. package/build/doc-file-unknown-reference.test.d.ts +2 -0
  45. package/build/doc-file-unknown-reference.test.d.ts.map +1 -0
  46. package/build/doc-file-unknown-reference.test.js +73 -0
  47. package/build/doc-markdown-system.d.ts +44 -0
  48. package/build/doc-markdown-system.d.ts.map +1 -0
  49. package/build/doc-markdown-system.js +153 -0
  50. package/build/doc-markdown-system.test.d.ts +2 -0
  51. package/build/doc-markdown-system.test.d.ts.map +1 -0
  52. package/build/doc-markdown-system.test.js +124 -0
  53. package/build/doc-path-system.d.ts +43 -0
  54. package/build/doc-path-system.d.ts.map +1 -0
  55. package/build/doc-path-system.js +148 -0
  56. package/build/doc-path-system.test.d.ts +2 -0
  57. package/build/doc-path-system.test.d.ts.map +1 -0
  58. package/build/doc-path-system.test.js +67 -0
  59. package/build/entities/doc-file-entity.d.ts +5 -0
  60. package/build/entities/doc-file-entity.d.ts.map +1 -0
  61. package/build/entities/doc-file-entity.js +1 -0
  62. package/build/entities/doc-file-index-entity.d.ts +30 -0
  63. package/build/entities/doc-file-index-entity.d.ts.map +1 -0
  64. package/build/entities/doc-file-index-entity.js +49 -0
  65. package/build/entities/doc-file-index-entity.test.d.ts +2 -0
  66. package/build/entities/doc-file-index-entity.test.d.ts.map +1 -0
  67. package/build/entities/doc-file-index-entity.test.js +195 -0
  68. package/build/entities/doc-file-md-entity.d.ts +30 -0
  69. package/build/entities/doc-file-md-entity.d.ts.map +1 -0
  70. package/build/entities/doc-file-md-entity.js +49 -0
  71. package/build/entities/doc-file-md-entity.test.d.ts +2 -0
  72. package/build/entities/doc-file-md-entity.test.d.ts.map +1 -0
  73. package/build/entities/doc-file-md-entity.test.js +178 -0
  74. package/build/entities/doc-file-unknown-entity.d.ts +26 -0
  75. package/build/entities/doc-file-unknown-entity.d.ts.map +1 -0
  76. package/build/entities/doc-file-unknown-entity.js +45 -0
  77. package/build/entities/doc-file-unknown-entity.test.d.ts +2 -0
  78. package/build/entities/doc-file-unknown-entity.test.d.ts.map +1 -0
  79. package/build/entities/doc-file-unknown-entity.test.js +131 -0
  80. package/build/index.d.ts +42 -0
  81. package/build/index.d.ts.map +1 -0
  82. package/build/index.js +39 -24064
  83. package/build/models.d.ts +818 -0
  84. package/build/models.d.ts.map +1 -0
  85. package/build/models.js +312 -0
  86. package/build/types.d.ts +154 -0
  87. package/build/types.d.ts.map +1 -0
  88. package/build/types.js +1 -0
  89. package/build/values/doc-content-md-front-matter-value.d.ts +49 -0
  90. package/build/values/doc-content-md-front-matter-value.d.ts.map +1 -0
  91. package/build/values/doc-content-md-front-matter-value.js +94 -0
  92. package/build/values/doc-content-md-front-matter-value.test.d.ts +2 -0
  93. package/build/values/doc-content-md-front-matter-value.test.d.ts.map +1 -0
  94. package/build/values/doc-content-md-front-matter-value.test.js +73 -0
  95. package/build/values/doc-content-md-value.d.ts +66 -0
  96. package/build/values/doc-content-md-value.d.ts.map +1 -0
  97. package/build/values/doc-content-md-value.js +218 -0
  98. package/build/values/doc-content-md-value.test.d.ts +2 -0
  99. package/build/values/doc-content-md-value.test.d.ts.map +1 -0
  100. package/build/values/doc-content-md-value.test.js +179 -0
  101. package/build/values/doc-directory-path-value.d.ts +89 -0
  102. package/build/values/doc-directory-path-value.d.ts.map +1 -0
  103. package/build/values/doc-directory-path-value.js +145 -0
  104. package/build/values/doc-directory-path-value.test.d.ts +2 -0
  105. package/build/values/doc-directory-path-value.test.d.ts.map +1 -0
  106. package/build/values/doc-directory-path-value.test.js +68 -0
  107. package/build/values/doc-file-content-index-value.d.ts +62 -0
  108. package/build/values/doc-file-content-index-value.d.ts.map +1 -0
  109. package/build/values/doc-file-content-index-value.js +134 -0
  110. package/build/values/doc-file-content-index-value.test.d.ts +2 -0
  111. package/build/values/doc-file-content-index-value.test.d.ts.map +1 -0
  112. package/build/values/doc-file-content-index-value.test.js +203 -0
  113. package/build/values/doc-file-content-md-value.d.ts +62 -0
  114. package/build/values/doc-file-content-md-value.d.ts.map +1 -0
  115. package/build/values/doc-file-content-md-value.js +139 -0
  116. package/build/values/doc-file-content-md-value.test.d.ts +2 -0
  117. package/build/values/doc-file-content-md-value.test.d.ts.map +1 -0
  118. package/build/values/doc-file-content-md-value.test.js +160 -0
  119. package/build/values/doc-file-path-value.d.ts +47 -0
  120. package/build/values/doc-file-path-value.d.ts.map +1 -0
  121. package/build/values/doc-file-path-value.js +83 -0
  122. package/build/values/doc-file-path-value.test.d.ts +2 -0
  123. package/build/values/doc-file-path-value.test.d.ts.map +1 -0
  124. package/build/values/doc-file-path-value.test.js +84 -0
  125. package/build/values/doc-front-matter-index-value.d.ts +66 -0
  126. package/build/values/doc-front-matter-index-value.d.ts.map +1 -0
  127. package/build/values/doc-front-matter-index-value.js +185 -0
  128. package/build/values/doc-front-matter-index-value.test.d.ts +2 -0
  129. package/build/values/doc-front-matter-index-value.test.d.ts.map +1 -0
  130. package/build/values/doc-front-matter-index-value.test.js +98 -0
  131. package/build/values/doc-front-matter-md-value-accessor.test.d.ts +2 -0
  132. package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +1 -0
  133. package/build/values/doc-front-matter-md-value-accessor.test.js +226 -0
  134. package/build/values/doc-front-matter-md-value.d.ts +80 -0
  135. package/build/values/doc-front-matter-md-value.d.ts.map +1 -0
  136. package/build/values/doc-front-matter-md-value.js +257 -0
  137. package/build/values/doc-front-matter-md-value.test.d.ts +2 -0
  138. package/build/values/doc-front-matter-md-value.test.d.ts.map +1 -0
  139. package/build/values/doc-front-matter-md-value.test.js +198 -0
  140. package/build/values/doc-relation-field-value.d.ts +57 -0
  141. package/build/values/doc-relation-field-value.d.ts.map +1 -0
  142. package/build/values/doc-relation-field-value.js +85 -0
  143. package/build/values/doc-relation-field-value.test.d.ts +2 -0
  144. package/build/values/doc-relation-field-value.test.d.ts.map +1 -0
  145. package/build/values/doc-relation-field-value.test.js +115 -0
  146. package/build/values/doc-relation-file-value.d.ts +33 -0
  147. package/build/values/doc-relation-file-value.d.ts.map +1 -0
  148. package/build/values/doc-relation-file-value.js +55 -0
  149. package/build/values/doc-relation-file-value.test.d.ts +2 -0
  150. package/build/values/doc-relation-file-value.test.d.ts.map +1 -0
  151. package/build/values/doc-relation-file-value.test.js +77 -0
  152. package/build/values/doc-relation-value.d.ts +34 -0
  153. package/build/values/doc-relation-value.d.ts.map +1 -0
  154. package/build/values/doc-relation-value.js +56 -0
  155. package/build/values/doc-relation-value.test.d.ts +2 -0
  156. package/build/values/doc-relation-value.test.d.ts.map +1 -0
  157. package/build/values/doc-relation-value.test.js +89 -0
  158. package/build/values/doc-schema-field-boolean-multiple-value.d.ts +23 -0
  159. package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +1 -0
  160. package/build/values/doc-schema-field-boolean-multiple-value.js +43 -0
  161. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +2 -0
  162. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +1 -0
  163. package/build/values/doc-schema-field-boolean-multiple-value.test.js +76 -0
  164. package/build/values/doc-schema-field-boolean-single-value.d.ts +23 -0
  165. package/build/values/doc-schema-field-boolean-single-value.d.ts.map +1 -0
  166. package/build/values/doc-schema-field-boolean-single-value.js +39 -0
  167. package/build/values/doc-schema-field-boolean-single-value.test.d.ts +2 -0
  168. package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +1 -0
  169. package/build/values/doc-schema-field-boolean-single-value.test.js +73 -0
  170. package/build/values/doc-schema-field-factory.d.ts +37 -0
  171. package/build/values/doc-schema-field-factory.d.ts.map +1 -0
  172. package/build/values/doc-schema-field-factory.js +151 -0
  173. package/build/values/doc-schema-field-factory.test.d.ts +2 -0
  174. package/build/values/doc-schema-field-factory.test.d.ts.map +1 -0
  175. package/build/values/doc-schema-field-factory.test.js +215 -0
  176. package/build/values/doc-schema-field-number-multiple-value.d.ts +23 -0
  177. package/build/values/doc-schema-field-number-multiple-value.d.ts.map +1 -0
  178. package/build/values/doc-schema-field-number-multiple-value.js +43 -0
  179. package/build/values/doc-schema-field-number-multiple-value.test.d.ts +2 -0
  180. package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +1 -0
  181. package/build/values/doc-schema-field-number-multiple-value.test.js +79 -0
  182. package/build/values/doc-schema-field-number-single-value.d.ts +23 -0
  183. package/build/values/doc-schema-field-number-single-value.d.ts.map +1 -0
  184. package/build/values/doc-schema-field-number-single-value.js +39 -0
  185. package/build/values/doc-schema-field-number-single-value.test.d.ts +2 -0
  186. package/build/values/doc-schema-field-number-single-value.test.d.ts.map +1 -0
  187. package/build/values/doc-schema-field-number-single-value.test.js +77 -0
  188. package/build/values/doc-schema-field-relation-multiple-value.d.ts +24 -0
  189. package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +1 -0
  190. package/build/values/doc-schema-field-relation-multiple-value.js +46 -0
  191. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +2 -0
  192. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +1 -0
  193. package/build/values/doc-schema-field-relation-multiple-value.test.js +83 -0
  194. package/build/values/doc-schema-field-relation-single-value.d.ts +24 -0
  195. package/build/values/doc-schema-field-relation-single-value.d.ts.map +1 -0
  196. package/build/values/doc-schema-field-relation-single-value.js +42 -0
  197. package/build/values/doc-schema-field-relation-single-value.test.d.ts +2 -0
  198. package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +1 -0
  199. package/build/values/doc-schema-field-relation-single-value.test.js +83 -0
  200. package/build/values/doc-schema-field-select-number-multiple-value.d.ts +25 -0
  201. package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +1 -0
  202. package/build/values/doc-schema-field-select-number-multiple-value.js +48 -0
  203. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +2 -0
  204. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +1 -0
  205. package/build/values/doc-schema-field-select-number-multiple-value.test.js +84 -0
  206. package/build/values/doc-schema-field-select-number-single-value.d.ts +25 -0
  207. package/build/values/doc-schema-field-select-number-single-value.d.ts.map +1 -0
  208. package/build/values/doc-schema-field-select-number-single-value.js +45 -0
  209. package/build/values/doc-schema-field-select-number-single-value.test.d.ts +2 -0
  210. package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +1 -0
  211. package/build/values/doc-schema-field-select-number-single-value.test.js +96 -0
  212. package/build/values/doc-schema-field-select-text-multiple-value.d.ts +25 -0
  213. package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +1 -0
  214. package/build/values/doc-schema-field-select-text-multiple-value.js +48 -0
  215. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +2 -0
  216. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +1 -0
  217. package/build/values/doc-schema-field-select-text-multiple-value.test.js +84 -0
  218. package/build/values/doc-schema-field-select-text-single-value.d.ts +25 -0
  219. package/build/values/doc-schema-field-select-text-single-value.d.ts.map +1 -0
  220. package/build/values/doc-schema-field-select-text-single-value.js +47 -0
  221. package/build/values/doc-schema-field-select-text-single-value.test.d.ts +2 -0
  222. package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +1 -0
  223. package/build/values/doc-schema-field-select-text-single-value.test.js +96 -0
  224. package/build/values/doc-schema-field-text-multiple-value.d.ts +23 -0
  225. package/build/values/doc-schema-field-text-multiple-value.d.ts.map +1 -0
  226. package/build/values/doc-schema-field-text-multiple-value.js +43 -0
  227. package/build/values/doc-schema-field-text-multiple-value.test.d.ts +2 -0
  228. package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +1 -0
  229. package/build/values/doc-schema-field-text-multiple-value.test.js +78 -0
  230. package/build/values/doc-schema-field-text-single-value.d.ts +23 -0
  231. package/build/values/doc-schema-field-text-single-value.d.ts.map +1 -0
  232. package/build/values/doc-schema-field-text-single-value.js +39 -0
  233. package/build/values/doc-schema-field-text-single-value.test.d.ts +2 -0
  234. package/build/values/doc-schema-field-text-single-value.test.d.ts.map +1 -0
  235. package/build/values/doc-schema-field-text-single-value.test.js +76 -0
  236. package/build/values/doc-schema-field-type-value.d.ts +61 -0
  237. package/build/values/doc-schema-field-type-value.d.ts.map +1 -0
  238. package/build/values/doc-schema-field-type-value.js +134 -0
  239. package/build/values/doc-schema-field-type-value.test.d.ts +2 -0
  240. package/build/values/doc-schema-field-type-value.test.d.ts.map +1 -0
  241. package/build/values/doc-schema-field-type-value.test.js +101 -0
  242. package/build/values/doc-schema-field-value.d.ts +45 -0
  243. package/build/values/doc-schema-field-value.d.ts.map +1 -0
  244. package/build/values/doc-schema-field-value.js +1 -0
  245. package/build/values/doc-schema-value.d.ts +99 -0
  246. package/build/values/doc-schema-value.d.ts.map +1 -0
  247. package/build/values/doc-schema-value.js +269 -0
  248. package/build/values/doc-schema-value.test.d.ts +2 -0
  249. package/build/values/doc-schema-value.test.d.ts.map +1 -0
  250. package/build/values/doc-schema-value.test.js +301 -0
  251. package/build/values/doc-tree-directory-node-value.d.ts +36 -0
  252. package/build/values/doc-tree-directory-node-value.d.ts.map +1 -0
  253. package/build/values/doc-tree-directory-node-value.js +71 -0
  254. package/build/values/doc-tree-directory-node-value.test.d.ts +2 -0
  255. package/build/values/doc-tree-directory-node-value.test.d.ts.map +1 -0
  256. package/build/values/doc-tree-directory-node-value.test.js +162 -0
  257. package/build/values/doc-tree-file-node-value.d.ts +33 -0
  258. package/build/values/doc-tree-file-node-value.d.ts.map +1 -0
  259. package/build/values/doc-tree-file-node-value.js +56 -0
  260. package/build/values/doc-tree-file-node-value.test.d.ts +2 -0
  261. package/build/values/doc-tree-file-node-value.test.d.ts.map +1 -0
  262. package/build/values/doc-tree-file-node-value.test.js +113 -0
  263. package/debug/debug.ts +108 -0
  264. package/package.json +7 -44
  265. package/bin/docs.js +0 -3
  266. package/build/assets/index.css +0 -1
  267. package/build/assets/index.js +0 -298
  268. package/build/index.html +0 -13
@@ -0,0 +1,115 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocRelationFieldValue } from "./doc-relation-field-value";
3
+ test("リレーションフィールドの基本プロパティを取得できる", () => {
4
+ const field = new DocRelationFieldValue({
5
+ fieldName: "author",
6
+ filePath: "users/authors",
7
+ isArray: false,
8
+ });
9
+ expect(field.fieldName).toBe("author");
10
+ expect(field.relationPath).toBe("users/authors");
11
+ expect(field.isArray).toBe(false);
12
+ expect(field.isSingle).toBe(true);
13
+ expect(field.isMultiple).toBe(false);
14
+ });
15
+ test("配列型のリレーションフィールドを作成できる", () => {
16
+ const field = new DocRelationFieldValue({
17
+ fieldName: "tags",
18
+ filePath: "metadata/tags",
19
+ isArray: true,
20
+ });
21
+ expect(field.isArray).toBe(true);
22
+ expect(field.isSingle).toBe(false);
23
+ expect(field.isMultiple).toBe(true);
24
+ });
25
+ test("ターゲットディレクトリ名を取得できる", () => {
26
+ const field = new DocRelationFieldValue({
27
+ fieldName: "category",
28
+ filePath: "products/categories",
29
+ isArray: false,
30
+ });
31
+ expect(field.targetDirectoryName).toBe("categories");
32
+ });
33
+ test("空のパスの場合、空のディレクトリ名を返す", () => {
34
+ const field = new DocRelationFieldValue({
35
+ fieldName: "empty",
36
+ filePath: "",
37
+ isArray: false,
38
+ });
39
+ expect(field.targetDirectoryName).toBe("");
40
+ });
41
+ test("完全なリレーションパスを生成できる", () => {
42
+ const field = new DocRelationFieldValue({
43
+ fieldName: "author",
44
+ filePath: "users/authors",
45
+ isArray: false,
46
+ });
47
+ expect(field.getFullPath("/docs")).toBe("/docs/users/authors");
48
+ });
49
+ test("絶対パスの場合はそのまま返す", () => {
50
+ const field = new DocRelationFieldValue({
51
+ fieldName: "author",
52
+ filePath: "/users/authors",
53
+ isArray: false,
54
+ });
55
+ expect(field.getFullPath("/docs")).toBe("/users/authors");
56
+ });
57
+ test("等価性を判定できる", () => {
58
+ const field1 = new DocRelationFieldValue({
59
+ fieldName: "author",
60
+ filePath: "users/authors",
61
+ isArray: false,
62
+ });
63
+ const field2 = new DocRelationFieldValue({
64
+ fieldName: "author",
65
+ filePath: "users/authors",
66
+ isArray: false,
67
+ });
68
+ const field3 = new DocRelationFieldValue({
69
+ fieldName: "author",
70
+ filePath: "users/authors",
71
+ isArray: true,
72
+ });
73
+ expect(field1.equals(field2)).toBe(true);
74
+ expect(field1.equals(field3)).toBe(false);
75
+ });
76
+ test("fromメソッドでインスタンスを生成できる", () => {
77
+ const field = DocRelationFieldValue.from({
78
+ fieldName: "author",
79
+ filePath: "users/authors",
80
+ isArray: false,
81
+ });
82
+ expect(field.fieldName).toBe("author");
83
+ expect(field.relationPath).toBe("users/authors");
84
+ });
85
+ test("fromPropsメソッドでインスタンスを生成できる", () => {
86
+ const field = DocRelationFieldValue.fromProps({
87
+ fieldName: "tags",
88
+ filePath: "metadata/tags",
89
+ isArray: true,
90
+ });
91
+ expect(field.fieldName).toBe("tags");
92
+ expect(field.isArray).toBe(true);
93
+ });
94
+ test("JSON形式に変換できる", () => {
95
+ const field = new DocRelationFieldValue({
96
+ fieldName: "author",
97
+ filePath: "users/authors",
98
+ isArray: false,
99
+ });
100
+ const json = field.toJson();
101
+ expect(json).toEqual({
102
+ fieldName: "author",
103
+ filePath: "users/authors",
104
+ isArray: false,
105
+ });
106
+ });
107
+ test("無効なデータでエラーが発生する", () => {
108
+ expect(() => {
109
+ new DocRelationFieldValue({
110
+ fieldName: "",
111
+ filePath: "users/authors",
112
+ isArray: "not-boolean",
113
+ });
114
+ }).toThrow();
115
+ });
@@ -0,0 +1,33 @@
1
+ import type { DocRelationFile } from "../types";
2
+ /**
3
+ * リレーションファイル
4
+ */
5
+ export declare class DocRelationFileValue {
6
+ private readonly value;
7
+ constructor(value: DocRelationFile);
8
+ /**
9
+ * ファイルパス
10
+ */
11
+ get id(): string;
12
+ /**
13
+ * スラッグ
14
+ */
15
+ get slug(): string;
16
+ /**
17
+ * 表示用ラベル
18
+ */
19
+ get label(): string;
20
+ /**
21
+ * ファイルパスとタイトルから生成
22
+ */
23
+ static from(filePath: string, title: string | null): DocRelationFileValue;
24
+ /**
25
+ * ファイルパスからファイル名を抽出(拡張子なし)
26
+ */
27
+ private static extractFileName;
28
+ /**
29
+ * JSON形式に変換
30
+ */
31
+ toJson(): DocRelationFile;
32
+ }
33
+ //# sourceMappingURL=doc-relation-file-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-relation-file-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-relation-file-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,eAAe,EAIlD;IAED;;OAEG;IACH,IAAI,EAAE,WAEL;IAED;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,KAAK,WAER;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,oBAAoB,CAQxE;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B;;OAEG;IACH,MAAM,IAAI,eAAe,CAExB;CACF"}
@@ -0,0 +1,55 @@
1
+ import { zDocRelationFile } from "../models";
2
+ /**
3
+ * リレーションファイル
4
+ */
5
+ export class DocRelationFileValue {
6
+ value;
7
+ constructor(value) {
8
+ this.value = value;
9
+ zDocRelationFile.parse(value);
10
+ Object.freeze(this);
11
+ Object.freeze(this.value);
12
+ }
13
+ /**
14
+ * ファイルパス
15
+ */
16
+ get id() {
17
+ return this.value.name;
18
+ }
19
+ /**
20
+ * スラッグ
21
+ */
22
+ get slug() {
23
+ return this.value.name;
24
+ }
25
+ /**
26
+ * 表示用ラベル
27
+ */
28
+ get label() {
29
+ return this.value.label || this.value.name;
30
+ }
31
+ /**
32
+ * ファイルパスとタイトルから生成
33
+ */
34
+ static from(filePath, title) {
35
+ const fileName = DocRelationFileValue.extractFileName(filePath);
36
+ return new DocRelationFileValue({
37
+ name: fileName,
38
+ label: title || fileName,
39
+ value: null,
40
+ path: null,
41
+ });
42
+ }
43
+ /**
44
+ * ファイルパスからファイル名を抽出(拡張子なし)
45
+ */
46
+ static extractFileName(filePath) {
47
+ return filePath.split("/").pop()?.replace(".md", "") || filePath;
48
+ }
49
+ /**
50
+ * JSON形式に変換
51
+ */
52
+ toJson() {
53
+ return { ...this.value };
54
+ }
55
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-relation-file-value.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-relation-file-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-relation-file-value.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocRelationFileValue } from "./doc-relation-file-value";
3
+ test("リレーションファイルの基本プロパティを取得できる", () => {
4
+ const file = new DocRelationFileValue({
5
+ name: "user-001",
6
+ label: "田中太郎",
7
+ value: null,
8
+ path: null,
9
+ });
10
+ expect(file.id).toBe("user-001");
11
+ expect(file.slug).toBe("user-001");
12
+ expect(file.label).toBe("田中太郎");
13
+ });
14
+ test("ラベルが未指定の場合はnameを使用する", () => {
15
+ const file = new DocRelationFileValue({
16
+ name: "category-tech",
17
+ label: null,
18
+ value: null,
19
+ path: null,
20
+ });
21
+ expect(file.label).toBe("category-tech");
22
+ });
23
+ test("fromメソッドでファイルパスとタイトルから生成できる", () => {
24
+ const file = DocRelationFileValue.from("docs/users/tanaka.md", "田中太郎");
25
+ expect(file.id).toBe("tanaka");
26
+ expect(file.label).toBe("田中太郎");
27
+ });
28
+ test("fromメソッドでタイトルがnullの場合はファイル名を使用する", () => {
29
+ const file = DocRelationFileValue.from("docs/categories/technology.md", null);
30
+ expect(file.id).toBe("technology");
31
+ expect(file.label).toBe("technology");
32
+ });
33
+ test("深いディレクトリ構造からもファイル名を抽出できる", () => {
34
+ const file = DocRelationFileValue.from("docs/products/client/features/login.md", "ログイン機能");
35
+ expect(file.id).toBe("login");
36
+ expect(file.label).toBe("ログイン機能");
37
+ });
38
+ test("拡張子なしのファイルパスも処理できる", () => {
39
+ const file = DocRelationFileValue.from("docs/users/admin", "管理者");
40
+ expect(file.id).toBe("admin");
41
+ expect(file.label).toBe("管理者");
42
+ });
43
+ test("ファイル名のみのパスも処理できる", () => {
44
+ const file = DocRelationFileValue.from("config.md", "設定");
45
+ expect(file.id).toBe("config");
46
+ expect(file.label).toBe("設定");
47
+ });
48
+ test("空のファイルパスの場合は元のパスを返す", () => {
49
+ const file = DocRelationFileValue.from("", "ラベル");
50
+ expect(file.id).toBe("");
51
+ expect(file.label).toBe("ラベル");
52
+ });
53
+ test("JSON形式に変換できる", () => {
54
+ const file = new DocRelationFileValue({
55
+ name: "feature-001",
56
+ label: "ログイン機能",
57
+ value: null,
58
+ path: null,
59
+ });
60
+ const json = file.toJson();
61
+ expect(json).toEqual({
62
+ name: "feature-001",
63
+ label: "ログイン機能",
64
+ value: null,
65
+ path: null,
66
+ });
67
+ });
68
+ test("無効なデータでエラーが発生する", () => {
69
+ expect(() => {
70
+ new DocRelationFileValue({
71
+ name: 123,
72
+ label: "ラベル",
73
+ value: null,
74
+ path: null,
75
+ });
76
+ }).toThrow();
77
+ });
@@ -0,0 +1,34 @@
1
+ import type { DocRelation } from "../types";
2
+ import { DocRelationFileValue } from "./doc-relation-file-value";
3
+ /**
4
+ * リレーション情報を管理する
5
+ */
6
+ export declare class DocRelationValue {
7
+ readonly value: DocRelation;
8
+ constructor(value: DocRelation);
9
+ /**
10
+ * リレーションパス
11
+ */
12
+ get path(): string;
13
+ /**
14
+ * リレーション対象ファイル一覧(値オブジェクト)
15
+ */
16
+ get files(): DocRelationFileValue[];
17
+ /**
18
+ * ファイル数を取得
19
+ */
20
+ get fileCount(): number;
21
+ /**
22
+ * 空かどうか
23
+ */
24
+ get isEmpty(): boolean;
25
+ /**
26
+ * 空のリレーションエンティティを作成
27
+ */
28
+ static empty(path: string): DocRelationValue;
29
+ /**
30
+ * JSON形式で出力
31
+ */
32
+ toJson(): DocRelation;
33
+ }
34
+ //# sourceMappingURL=doc-relation-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-relation-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-relation-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE;;GAEG;AACH,qBAAa,gBAAgB;IACf,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAvC,YAAqB,KAAK,EAAE,WAAW,EAItC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,oBAAoB,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAK3C;IAED;;OAEG;IACH,MAAM,IAAI,WAAW,CAKpB;CACF"}
@@ -0,0 +1,56 @@
1
+ import { zDocRelation } from "../models";
2
+ import { DocRelationFileValue } from "./doc-relation-file-value";
3
+ /**
4
+ * リレーション情報を管理する
5
+ */
6
+ export class DocRelationValue {
7
+ value;
8
+ constructor(value) {
9
+ this.value = value;
10
+ zDocRelation.parse(value);
11
+ Object.freeze(this);
12
+ Object.freeze(this.value);
13
+ }
14
+ /**
15
+ * リレーションパス
16
+ */
17
+ get path() {
18
+ return this.value.path;
19
+ }
20
+ /**
21
+ * リレーション対象ファイル一覧(値オブジェクト)
22
+ */
23
+ get files() {
24
+ return this.value.files.map((file) => new DocRelationFileValue(file));
25
+ }
26
+ /**
27
+ * ファイル数を取得
28
+ */
29
+ get fileCount() {
30
+ return this.files.length;
31
+ }
32
+ /**
33
+ * 空かどうか
34
+ */
35
+ get isEmpty() {
36
+ return this.files.length === 0;
37
+ }
38
+ /**
39
+ * 空のリレーションエンティティを作成
40
+ */
41
+ static empty(path) {
42
+ return new DocRelationValue({
43
+ path,
44
+ files: [],
45
+ });
46
+ }
47
+ /**
48
+ * JSON形式で出力
49
+ */
50
+ toJson() {
51
+ return {
52
+ path: this.path,
53
+ files: this.files.map((file) => file.toJson()),
54
+ };
55
+ }
56
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-relation-value.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-relation-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-relation-value.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocRelationFileValue } from "./doc-relation-file-value";
3
+ import { DocRelationValue } from "./doc-relation-value";
4
+ test("リレーションの基本プロパティを取得できる", () => {
5
+ const relation = new DocRelationValue({
6
+ path: "users/authors",
7
+ files: [
8
+ { name: "tanaka", label: "田中太郎", value: null, path: null },
9
+ { name: "suzuki", label: "鈴木次郎", value: null, path: null },
10
+ ],
11
+ });
12
+ expect(relation.path).toBe("users/authors");
13
+ expect(relation.fileCount).toBe(2);
14
+ expect(relation.isEmpty).toBe(false);
15
+ });
16
+ test("リレーションファイルを値オブジェクトとして取得できる", () => {
17
+ const relation = new DocRelationValue({
18
+ path: "categories",
19
+ files: [
20
+ { name: "tech", label: "技術", value: null, path: null },
21
+ { name: "business", label: "ビジネス", value: null, path: null },
22
+ ],
23
+ });
24
+ const files = relation.files;
25
+ expect(files.length).toBe(2);
26
+ expect(files[0]).toBeInstanceOf(DocRelationFileValue);
27
+ expect(files[0].id).toBe("tech");
28
+ expect(files[0].label).toBe("技術");
29
+ });
30
+ test("空のリレーションを作成できる", () => {
31
+ const relation = DocRelationValue.empty("users/admins");
32
+ expect(relation.path).toBe("users/admins");
33
+ expect(relation.files).toEqual([]);
34
+ expect(relation.fileCount).toBe(0);
35
+ expect(relation.isEmpty).toBe(true);
36
+ });
37
+ test("JSON形式に変換できる", () => {
38
+ const relation = new DocRelationValue({
39
+ path: "tags",
40
+ files: [
41
+ { name: "javascript", label: "JavaScript", value: null, path: null },
42
+ { name: "typescript", label: "TypeScript", value: null, path: null },
43
+ ],
44
+ });
45
+ const json = relation.toJson();
46
+ expect(json).toEqual({
47
+ path: "tags",
48
+ files: [
49
+ { name: "javascript", label: "JavaScript", value: null, path: null },
50
+ { name: "typescript", label: "TypeScript", value: null, path: null },
51
+ ],
52
+ });
53
+ });
54
+ test("ラベルが未定義のファイルも処理できる", () => {
55
+ const relation = new DocRelationValue({
56
+ path: "milestones",
57
+ files: [
58
+ { name: "2024-01", label: null, value: null, path: null },
59
+ { name: "2024-02", label: "2024年2月", value: null, path: null },
60
+ ],
61
+ });
62
+ const files = relation.files;
63
+ expect(files[0].label).toBe("2024-01");
64
+ expect(files[1].label).toBe("2024年2月");
65
+ });
66
+ test("無効なデータでエラーが発生する", () => {
67
+ expect(() => {
68
+ new DocRelationValue({
69
+ path: "invalid",
70
+ files: "not-an-array",
71
+ });
72
+ }).toThrow();
73
+ expect(() => {
74
+ new DocRelationValue({
75
+ path: 123,
76
+ files: [],
77
+ });
78
+ }).toThrow();
79
+ });
80
+ test("ファイルデータが無効な場合もエラーが発生する", () => {
81
+ expect(() => {
82
+ new DocRelationValue({
83
+ path: "users",
84
+ files: [
85
+ { name: 123, label: "Invalid", value: null, path: null },
86
+ ],
87
+ });
88
+ }).toThrow();
89
+ });
@@ -0,0 +1,23 @@
1
+ import type { DocFieldMultiBoolean, DocSchemaField } from "../types";
2
+ /**
3
+ * ブール複数型スキーマフィールド
4
+ */
5
+ export declare class DocSchemaFieldBooleanMultipleValue {
6
+ readonly key: string;
7
+ readonly value: DocFieldMultiBoolean;
8
+ constructor(key: string, value: DocFieldMultiBoolean);
9
+ get type(): "multi-boolean";
10
+ get required(): boolean;
11
+ get title(): string;
12
+ get description(): string;
13
+ get default(): boolean[] | null;
14
+ readonly isArray: boolean;
15
+ readonly isSingle: boolean;
16
+ readonly isBoolean: boolean;
17
+ /**
18
+ * 値を検証する
19
+ */
20
+ validate(value: unknown): boolean;
21
+ toJson(): DocSchemaField;
22
+ }
23
+ //# sourceMappingURL=doc-schema-field-boolean-multiple-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-schema-field-boolean-multiple-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-boolean-multiple-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEpE;;GAEG;AACH,qBAAa,kCAAkC;IAE3C,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,KAAK,EAAE,oBAAoB;IAFtC,YACW,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,oBAAoB,EAOrC;IAED,IAAI,IAAI,oBAEP;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,KAAK,WAER;IAED,IAAI,WAAW,WAEd;IAED,IAAI,OAAO,qBAEV;IAED,QAAQ,CAAC,OAAO,UAAO;IAEvB,QAAQ,CAAC,QAAQ,UAAQ;IAEzB,QAAQ,CAAC,SAAS,UAAO;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhC;IAED,MAAM,IAAI,cAAc,CAEvB;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ブール複数型スキーマフィールド
3
+ */
4
+ export class DocSchemaFieldBooleanMultipleValue {
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
+ isBoolean = true;
34
+ /**
35
+ * 値を検証する
36
+ */
37
+ validate(value) {
38
+ return Array.isArray(value) && value.every((v) => typeof v === "boolean");
39
+ }
40
+ toJson() {
41
+ return { ...this.value };
42
+ }
43
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-schema-field-boolean-multiple-value.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-schema-field-boolean-multiple-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-boolean-multiple-value.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocSchemaFieldBooleanMultipleValue } from "./doc-schema-field-boolean-multiple-value";
3
+ test("複数ブール型フィールドの基本プロパティを取得できる", () => {
4
+ const field = new DocSchemaFieldBooleanMultipleValue("features", {
5
+ type: "multi-boolean",
6
+ required: true,
7
+ title: "機能フラグ",
8
+ description: "有効な機能のリスト",
9
+ default: [true, false, true],
10
+ });
11
+ expect(field.key).toBe("features");
12
+ expect(field.type).toBe("multi-boolean");
13
+ expect(field.required).toBe(true);
14
+ expect(field.title).toBe("機能フラグ");
15
+ expect(field.description).toBe("有効な機能のリスト");
16
+ expect(field.default).toEqual([true, false, true]);
17
+ });
18
+ test("配列判定メソッドが正しく動作する", () => {
19
+ const field = new DocSchemaFieldBooleanMultipleValue("flags", {
20
+ type: "multi-boolean",
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.isBoolean).toBe(true);
29
+ });
30
+ test("値の検証メソッドが正しく動作する", () => {
31
+ const field = new DocSchemaFieldBooleanMultipleValue("options", {
32
+ type: "multi-boolean",
33
+ required: true,
34
+ title: null,
35
+ description: null,
36
+ default: null,
37
+ });
38
+ expect(field.validate([true, false, true])).toBe(true);
39
+ expect(field.validate([])).toBe(true);
40
+ expect(field.validate([true])).toBe(true);
41
+ expect(field.validate(true)).toBe(false);
42
+ expect(field.validate([true, "false"])).toBe(false);
43
+ expect(field.validate([1, 0])).toBe(false);
44
+ expect(field.validate(null)).toBe(false);
45
+ expect(field.validate(undefined)).toBe(false);
46
+ expect(field.validate({})).toBe(false);
47
+ });
48
+ test("オプショナルなプロパティがundefinedでも動作する", () => {
49
+ const field = new DocSchemaFieldBooleanMultipleValue("settings", {
50
+ type: "multi-boolean",
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 DocSchemaFieldBooleanMultipleValue("permissions", {
62
+ type: "multi-boolean",
63
+ required: false,
64
+ title: "権限設定",
65
+ description: null,
66
+ default: [false, false],
67
+ });
68
+ const json = field.toJson();
69
+ expect(json).toEqual({
70
+ type: "multi-boolean",
71
+ required: false,
72
+ title: "権限設定",
73
+ description: null,
74
+ default: [false, false],
75
+ });
76
+ });
@@ -0,0 +1,23 @@
1
+ import type { DocSchemaField, DocSchemaFieldBoolean } from "../types";
2
+ /**
3
+ * 単一ブール型スキーマフィールド
4
+ */
5
+ export declare class DocSchemaFieldBooleanSingleValue {
6
+ readonly key: string;
7
+ readonly value: DocSchemaFieldBoolean;
8
+ constructor(key: string, value: DocSchemaFieldBoolean);
9
+ get type(): "boolean";
10
+ get required(): boolean;
11
+ get title(): string;
12
+ get description(): string;
13
+ get default(): boolean | null;
14
+ readonly isArray: boolean;
15
+ readonly isSingle: boolean;
16
+ readonly isBoolean: boolean;
17
+ toJson(): DocSchemaField;
18
+ /**
19
+ * 値の型を検証する
20
+ */
21
+ validate(value: unknown): boolean;
22
+ }
23
+ //# sourceMappingURL=doc-schema-field-boolean-single-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-schema-field-boolean-single-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-schema-field-boolean-single-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAErE;;GAEG;AACH,qBAAa,gCAAgC;IAEzC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,KAAK,EAAE,qBAAqB;IAFvC,YACW,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,qBAAqB,EAGtC;IAED,IAAI,IAAI,cAEP;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,KAAK,WAER;IAED,IAAI,WAAW,WAEd;IAED,IAAI,OAAO,mBAEV;IAED,QAAQ,CAAC,OAAO,UAAQ;IAExB,QAAQ,CAAC,QAAQ,UAAO;IAExB,QAAQ,CAAC,SAAS,UAAO;IAEzB,MAAM,IAAI,cAAc,CAEvB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhC;CACF"}