@interactive-inc/docs-client 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +3 -3
  2. package/build/index.d.ts +1921 -42
  3. package/build/index.js +4616 -39
  4. package/build/models.d.ts +34 -32
  5. package/build/models.js +219 -275
  6. package/package.json +4 -4
  7. package/tsup.config.ts +10 -0
  8. package/build/doc-client.d.ts +0 -59
  9. package/build/doc-client.d.ts.map +0 -1
  10. package/build/doc-client.js +0 -95
  11. package/build/doc-client.test.d.ts +0 -2
  12. package/build/doc-client.test.d.ts.map +0 -1
  13. package/build/doc-client.test.js +0 -38
  14. package/build/doc-directory-reference.d.ts +0 -65
  15. package/build/doc-directory-reference.d.ts.map +0 -1
  16. package/build/doc-directory-reference.js +0 -292
  17. package/build/doc-directory-reference.test.d.ts +0 -2
  18. package/build/doc-directory-reference.test.d.ts.map +0 -1
  19. package/build/doc-directory-reference.test.js +0 -100
  20. package/build/doc-file-index-reference.d.ts +0 -72
  21. package/build/doc-file-index-reference.d.ts.map +0 -1
  22. package/build/doc-file-index-reference.js +0 -191
  23. package/build/doc-file-index-reference.test.d.ts +0 -2
  24. package/build/doc-file-index-reference.test.d.ts.map +0 -1
  25. package/build/doc-file-index-reference.test.js +0 -77
  26. package/build/doc-file-md-reference.d.ts +0 -97
  27. package/build/doc-file-md-reference.d.ts.map +0 -1
  28. package/build/doc-file-md-reference.js +0 -297
  29. package/build/doc-file-md-reference.test.d.ts +0 -2
  30. package/build/doc-file-md-reference.test.d.ts.map +0 -1
  31. package/build/doc-file-md-reference.test.js +0 -465
  32. package/build/doc-file-relation-reference.d.ts +0 -54
  33. package/build/doc-file-relation-reference.d.ts.map +0 -1
  34. package/build/doc-file-relation-reference.js +0 -109
  35. package/build/doc-file-system-debug.d.ts +0 -81
  36. package/build/doc-file-system-debug.d.ts.map +0 -1
  37. package/build/doc-file-system-debug.js +0 -317
  38. package/build/doc-file-system.d.ts +0 -100
  39. package/build/doc-file-system.d.ts.map +0 -1
  40. package/build/doc-file-system.js +0 -210
  41. package/build/doc-file-tree-system.d.ts +0 -38
  42. package/build/doc-file-tree-system.d.ts.map +0 -1
  43. package/build/doc-file-tree-system.js +0 -153
  44. package/build/doc-file-tree-system.test.d.ts +0 -2
  45. package/build/doc-file-tree-system.test.d.ts.map +0 -1
  46. package/build/doc-file-tree-system.test.js +0 -105
  47. package/build/doc-file-unknown-reference.d.ts +0 -80
  48. package/build/doc-file-unknown-reference.d.ts.map +0 -1
  49. package/build/doc-file-unknown-reference.js +0 -181
  50. package/build/doc-file-unknown-reference.test.d.ts +0 -2
  51. package/build/doc-file-unknown-reference.test.d.ts.map +0 -1
  52. package/build/doc-file-unknown-reference.test.js +0 -73
  53. package/build/doc-markdown-system.d.ts +0 -44
  54. package/build/doc-markdown-system.d.ts.map +0 -1
  55. package/build/doc-markdown-system.js +0 -153
  56. package/build/doc-markdown-system.test.d.ts +0 -2
  57. package/build/doc-markdown-system.test.d.ts.map +0 -1
  58. package/build/doc-markdown-system.test.js +0 -124
  59. package/build/doc-path-system.d.ts +0 -43
  60. package/build/doc-path-system.d.ts.map +0 -1
  61. package/build/doc-path-system.js +0 -148
  62. package/build/doc-path-system.test.d.ts +0 -2
  63. package/build/doc-path-system.test.d.ts.map +0 -1
  64. package/build/doc-path-system.test.js +0 -67
  65. package/build/entities/doc-file-entity.d.ts +0 -5
  66. package/build/entities/doc-file-entity.d.ts.map +0 -1
  67. package/build/entities/doc-file-entity.js +0 -1
  68. package/build/entities/doc-file-index-entity.d.ts +0 -30
  69. package/build/entities/doc-file-index-entity.d.ts.map +0 -1
  70. package/build/entities/doc-file-index-entity.js +0 -49
  71. package/build/entities/doc-file-index-entity.test.d.ts +0 -2
  72. package/build/entities/doc-file-index-entity.test.d.ts.map +0 -1
  73. package/build/entities/doc-file-index-entity.test.js +0 -195
  74. package/build/entities/doc-file-md-entity.d.ts +0 -30
  75. package/build/entities/doc-file-md-entity.d.ts.map +0 -1
  76. package/build/entities/doc-file-md-entity.js +0 -49
  77. package/build/entities/doc-file-md-entity.test.d.ts +0 -2
  78. package/build/entities/doc-file-md-entity.test.d.ts.map +0 -1
  79. package/build/entities/doc-file-md-entity.test.js +0 -178
  80. package/build/entities/doc-file-unknown-entity.d.ts +0 -26
  81. package/build/entities/doc-file-unknown-entity.d.ts.map +0 -1
  82. package/build/entities/doc-file-unknown-entity.js +0 -45
  83. package/build/entities/doc-file-unknown-entity.test.d.ts +0 -2
  84. package/build/entities/doc-file-unknown-entity.test.d.ts.map +0 -1
  85. package/build/entities/doc-file-unknown-entity.test.js +0 -131
  86. package/build/index.d.ts.map +0 -1
  87. package/build/models.d.ts.map +0 -1
  88. package/build/types.d.ts +0 -154
  89. package/build/types.d.ts.map +0 -1
  90. package/build/types.js +0 -1
  91. package/build/values/doc-content-md-front-matter-value.d.ts +0 -49
  92. package/build/values/doc-content-md-front-matter-value.d.ts.map +0 -1
  93. package/build/values/doc-content-md-front-matter-value.js +0 -94
  94. package/build/values/doc-content-md-front-matter-value.test.d.ts +0 -2
  95. package/build/values/doc-content-md-front-matter-value.test.d.ts.map +0 -1
  96. package/build/values/doc-content-md-front-matter-value.test.js +0 -73
  97. package/build/values/doc-content-md-value.d.ts +0 -66
  98. package/build/values/doc-content-md-value.d.ts.map +0 -1
  99. package/build/values/doc-content-md-value.js +0 -218
  100. package/build/values/doc-content-md-value.test.d.ts +0 -2
  101. package/build/values/doc-content-md-value.test.d.ts.map +0 -1
  102. package/build/values/doc-content-md-value.test.js +0 -179
  103. package/build/values/doc-directory-path-value.d.ts +0 -89
  104. package/build/values/doc-directory-path-value.d.ts.map +0 -1
  105. package/build/values/doc-directory-path-value.js +0 -145
  106. package/build/values/doc-directory-path-value.test.d.ts +0 -2
  107. package/build/values/doc-directory-path-value.test.d.ts.map +0 -1
  108. package/build/values/doc-directory-path-value.test.js +0 -68
  109. package/build/values/doc-file-content-index-value.d.ts +0 -62
  110. package/build/values/doc-file-content-index-value.d.ts.map +0 -1
  111. package/build/values/doc-file-content-index-value.js +0 -134
  112. package/build/values/doc-file-content-index-value.test.d.ts +0 -2
  113. package/build/values/doc-file-content-index-value.test.d.ts.map +0 -1
  114. package/build/values/doc-file-content-index-value.test.js +0 -203
  115. package/build/values/doc-file-content-md-value.d.ts +0 -62
  116. package/build/values/doc-file-content-md-value.d.ts.map +0 -1
  117. package/build/values/doc-file-content-md-value.js +0 -139
  118. package/build/values/doc-file-content-md-value.test.d.ts +0 -2
  119. package/build/values/doc-file-content-md-value.test.d.ts.map +0 -1
  120. package/build/values/doc-file-content-md-value.test.js +0 -160
  121. package/build/values/doc-file-path-value.d.ts +0 -47
  122. package/build/values/doc-file-path-value.d.ts.map +0 -1
  123. package/build/values/doc-file-path-value.js +0 -83
  124. package/build/values/doc-file-path-value.test.d.ts +0 -2
  125. package/build/values/doc-file-path-value.test.d.ts.map +0 -1
  126. package/build/values/doc-file-path-value.test.js +0 -84
  127. package/build/values/doc-front-matter-index-value.d.ts +0 -66
  128. package/build/values/doc-front-matter-index-value.d.ts.map +0 -1
  129. package/build/values/doc-front-matter-index-value.js +0 -185
  130. package/build/values/doc-front-matter-index-value.test.d.ts +0 -2
  131. package/build/values/doc-front-matter-index-value.test.d.ts.map +0 -1
  132. package/build/values/doc-front-matter-index-value.test.js +0 -98
  133. package/build/values/doc-front-matter-md-value-accessor.test.d.ts +0 -2
  134. package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +0 -1
  135. package/build/values/doc-front-matter-md-value-accessor.test.js +0 -226
  136. package/build/values/doc-front-matter-md-value.d.ts +0 -80
  137. package/build/values/doc-front-matter-md-value.d.ts.map +0 -1
  138. package/build/values/doc-front-matter-md-value.js +0 -257
  139. package/build/values/doc-front-matter-md-value.test.d.ts +0 -2
  140. package/build/values/doc-front-matter-md-value.test.d.ts.map +0 -1
  141. package/build/values/doc-front-matter-md-value.test.js +0 -198
  142. package/build/values/doc-relation-field-value.d.ts +0 -57
  143. package/build/values/doc-relation-field-value.d.ts.map +0 -1
  144. package/build/values/doc-relation-field-value.js +0 -85
  145. package/build/values/doc-relation-field-value.test.d.ts +0 -2
  146. package/build/values/doc-relation-field-value.test.d.ts.map +0 -1
  147. package/build/values/doc-relation-field-value.test.js +0 -115
  148. package/build/values/doc-relation-file-value.d.ts +0 -33
  149. package/build/values/doc-relation-file-value.d.ts.map +0 -1
  150. package/build/values/doc-relation-file-value.js +0 -55
  151. package/build/values/doc-relation-file-value.test.d.ts +0 -2
  152. package/build/values/doc-relation-file-value.test.d.ts.map +0 -1
  153. package/build/values/doc-relation-file-value.test.js +0 -77
  154. package/build/values/doc-relation-value.d.ts +0 -34
  155. package/build/values/doc-relation-value.d.ts.map +0 -1
  156. package/build/values/doc-relation-value.js +0 -56
  157. package/build/values/doc-relation-value.test.d.ts +0 -2
  158. package/build/values/doc-relation-value.test.d.ts.map +0 -1
  159. package/build/values/doc-relation-value.test.js +0 -89
  160. package/build/values/doc-schema-field-boolean-multiple-value.d.ts +0 -23
  161. package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +0 -1
  162. package/build/values/doc-schema-field-boolean-multiple-value.js +0 -43
  163. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +0 -2
  164. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +0 -1
  165. package/build/values/doc-schema-field-boolean-multiple-value.test.js +0 -76
  166. package/build/values/doc-schema-field-boolean-single-value.d.ts +0 -23
  167. package/build/values/doc-schema-field-boolean-single-value.d.ts.map +0 -1
  168. package/build/values/doc-schema-field-boolean-single-value.js +0 -39
  169. package/build/values/doc-schema-field-boolean-single-value.test.d.ts +0 -2
  170. package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +0 -1
  171. package/build/values/doc-schema-field-boolean-single-value.test.js +0 -73
  172. package/build/values/doc-schema-field-factory.d.ts +0 -37
  173. package/build/values/doc-schema-field-factory.d.ts.map +0 -1
  174. package/build/values/doc-schema-field-factory.js +0 -151
  175. package/build/values/doc-schema-field-factory.test.d.ts +0 -2
  176. package/build/values/doc-schema-field-factory.test.d.ts.map +0 -1
  177. package/build/values/doc-schema-field-factory.test.js +0 -215
  178. package/build/values/doc-schema-field-number-multiple-value.d.ts +0 -23
  179. package/build/values/doc-schema-field-number-multiple-value.d.ts.map +0 -1
  180. package/build/values/doc-schema-field-number-multiple-value.js +0 -43
  181. package/build/values/doc-schema-field-number-multiple-value.test.d.ts +0 -2
  182. package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +0 -1
  183. package/build/values/doc-schema-field-number-multiple-value.test.js +0 -79
  184. package/build/values/doc-schema-field-number-single-value.d.ts +0 -23
  185. package/build/values/doc-schema-field-number-single-value.d.ts.map +0 -1
  186. package/build/values/doc-schema-field-number-single-value.js +0 -39
  187. package/build/values/doc-schema-field-number-single-value.test.d.ts +0 -2
  188. package/build/values/doc-schema-field-number-single-value.test.d.ts.map +0 -1
  189. package/build/values/doc-schema-field-number-single-value.test.js +0 -77
  190. package/build/values/doc-schema-field-relation-multiple-value.d.ts +0 -24
  191. package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +0 -1
  192. package/build/values/doc-schema-field-relation-multiple-value.js +0 -46
  193. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +0 -2
  194. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +0 -1
  195. package/build/values/doc-schema-field-relation-multiple-value.test.js +0 -83
  196. package/build/values/doc-schema-field-relation-single-value.d.ts +0 -24
  197. package/build/values/doc-schema-field-relation-single-value.d.ts.map +0 -1
  198. package/build/values/doc-schema-field-relation-single-value.js +0 -42
  199. package/build/values/doc-schema-field-relation-single-value.test.d.ts +0 -2
  200. package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +0 -1
  201. package/build/values/doc-schema-field-relation-single-value.test.js +0 -83
  202. package/build/values/doc-schema-field-select-number-multiple-value.d.ts +0 -25
  203. package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +0 -1
  204. package/build/values/doc-schema-field-select-number-multiple-value.js +0 -48
  205. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +0 -2
  206. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +0 -1
  207. package/build/values/doc-schema-field-select-number-multiple-value.test.js +0 -84
  208. package/build/values/doc-schema-field-select-number-single-value.d.ts +0 -25
  209. package/build/values/doc-schema-field-select-number-single-value.d.ts.map +0 -1
  210. package/build/values/doc-schema-field-select-number-single-value.js +0 -45
  211. package/build/values/doc-schema-field-select-number-single-value.test.d.ts +0 -2
  212. package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +0 -1
  213. package/build/values/doc-schema-field-select-number-single-value.test.js +0 -96
  214. package/build/values/doc-schema-field-select-text-multiple-value.d.ts +0 -25
  215. package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +0 -1
  216. package/build/values/doc-schema-field-select-text-multiple-value.js +0 -48
  217. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +0 -2
  218. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +0 -1
  219. package/build/values/doc-schema-field-select-text-multiple-value.test.js +0 -84
  220. package/build/values/doc-schema-field-select-text-single-value.d.ts +0 -25
  221. package/build/values/doc-schema-field-select-text-single-value.d.ts.map +0 -1
  222. package/build/values/doc-schema-field-select-text-single-value.js +0 -47
  223. package/build/values/doc-schema-field-select-text-single-value.test.d.ts +0 -2
  224. package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +0 -1
  225. package/build/values/doc-schema-field-select-text-single-value.test.js +0 -96
  226. package/build/values/doc-schema-field-text-multiple-value.d.ts +0 -23
  227. package/build/values/doc-schema-field-text-multiple-value.d.ts.map +0 -1
  228. package/build/values/doc-schema-field-text-multiple-value.js +0 -43
  229. package/build/values/doc-schema-field-text-multiple-value.test.d.ts +0 -2
  230. package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +0 -1
  231. package/build/values/doc-schema-field-text-multiple-value.test.js +0 -78
  232. package/build/values/doc-schema-field-text-single-value.d.ts +0 -23
  233. package/build/values/doc-schema-field-text-single-value.d.ts.map +0 -1
  234. package/build/values/doc-schema-field-text-single-value.js +0 -39
  235. package/build/values/doc-schema-field-text-single-value.test.d.ts +0 -2
  236. package/build/values/doc-schema-field-text-single-value.test.d.ts.map +0 -1
  237. package/build/values/doc-schema-field-text-single-value.test.js +0 -76
  238. package/build/values/doc-schema-field-type-value.d.ts +0 -61
  239. package/build/values/doc-schema-field-type-value.d.ts.map +0 -1
  240. package/build/values/doc-schema-field-type-value.js +0 -134
  241. package/build/values/doc-schema-field-type-value.test.d.ts +0 -2
  242. package/build/values/doc-schema-field-type-value.test.d.ts.map +0 -1
  243. package/build/values/doc-schema-field-type-value.test.js +0 -101
  244. package/build/values/doc-schema-field-value.d.ts +0 -45
  245. package/build/values/doc-schema-field-value.d.ts.map +0 -1
  246. package/build/values/doc-schema-field-value.js +0 -1
  247. package/build/values/doc-schema-value.d.ts +0 -99
  248. package/build/values/doc-schema-value.d.ts.map +0 -1
  249. package/build/values/doc-schema-value.js +0 -269
  250. package/build/values/doc-schema-value.test.d.ts +0 -2
  251. package/build/values/doc-schema-value.test.d.ts.map +0 -1
  252. package/build/values/doc-schema-value.test.js +0 -301
  253. package/build/values/doc-tree-directory-node-value.d.ts +0 -36
  254. package/build/values/doc-tree-directory-node-value.d.ts.map +0 -1
  255. package/build/values/doc-tree-directory-node-value.js +0 -71
  256. package/build/values/doc-tree-directory-node-value.test.d.ts +0 -2
  257. package/build/values/doc-tree-directory-node-value.test.d.ts.map +0 -1
  258. package/build/values/doc-tree-directory-node-value.test.js +0 -162
  259. package/build/values/doc-tree-file-node-value.d.ts +0 -33
  260. package/build/values/doc-tree-file-node-value.d.ts.map +0 -1
  261. package/build/values/doc-tree-file-node-value.js +0 -56
  262. package/build/values/doc-tree-file-node-value.test.d.ts +0 -2
  263. package/build/values/doc-tree-file-node-value.test.d.ts.map +0 -1
  264. package/build/values/doc-tree-file-node-value.test.js +0 -113
@@ -1,226 +0,0 @@
1
- import { expect, test } from "bun:test";
2
- import { DocFrontMatterMdValue } from "./doc-front-matter-md-value";
3
- test("text メソッドは文字列型の値のみを返す", () => {
4
- const frontMatter = new DocFrontMatterMdValue({
5
- title: "正しいタイトル",
6
- count: 123,
7
- flag: true,
8
- list: ["item1", "item2"],
9
- obj: { key: "value" },
10
- nullable: null,
11
- });
12
- // 文字列型は正しく取得
13
- expect(frontMatter.text("title")).toBe("正しいタイトル");
14
- // 他の型はnullを返す
15
- expect(frontMatter.text("count")).toBeNull();
16
- expect(frontMatter.text("flag")).toBeNull();
17
- expect(frontMatter.text("list")).toBeNull();
18
- expect(frontMatter.text("obj")).toBeNull();
19
- expect(frontMatter.text("nullable")).toBeNull();
20
- expect(frontMatter.text("missing")).toBeNull();
21
- });
22
- test("number メソッドは数値型の値のみを返す", () => {
23
- const frontMatter = new DocFrontMatterMdValue({
24
- count: 42,
25
- price: 99.99,
26
- title: "文字列",
27
- flag: false,
28
- list: [1, 2, 3],
29
- });
30
- // 数値型は正しく取得
31
- expect(frontMatter.number("count")).toBe(42);
32
- expect(frontMatter.number("price")).toBe(99.99);
33
- // 他の型はnullを返す
34
- expect(frontMatter.number("title")).toBeNull();
35
- expect(frontMatter.number("flag")).toBeNull();
36
- expect(frontMatter.number("list")).toBeNull();
37
- });
38
- test("boolean メソッドは真偽値型の値のみを返す", () => {
39
- const frontMatter = new DocFrontMatterMdValue({
40
- published: true,
41
- draft: false,
42
- title: "文字列",
43
- count: 0,
44
- zero: 0,
45
- empty: "",
46
- });
47
- // 真偽値型は正しく取得
48
- expect(frontMatter.boolean("published")).toBe(true);
49
- expect(frontMatter.boolean("draft")).toBe(false);
50
- // 他の型はnullを返す(0や空文字列も)
51
- expect(frontMatter.boolean("title")).toBeNull();
52
- expect(frontMatter.boolean("count")).toBeNull();
53
- expect(frontMatter.boolean("zero")).toBeNull();
54
- expect(frontMatter.boolean("empty")).toBeNull();
55
- });
56
- test("relation メソッドは文字列型の値を返す(単一リレーション)", () => {
57
- const frontMatter = new DocFrontMatterMdValue({
58
- author: "user-123",
59
- category: "tech-blog",
60
- tags: ["tag1", "tag2"],
61
- count: 123,
62
- });
63
- // 文字列型のリレーションは正しく取得
64
- expect(frontMatter.relation("author")).toBe("user-123");
65
- expect(frontMatter.relation("category")).toBe("tech-blog");
66
- // 配列や他の型はnullを返す
67
- expect(frontMatter.relation("tags")).toBeNull();
68
- expect(frontMatter.relation("count")).toBeNull();
69
- });
70
- test("multiRelation メソッドは文字列配列のみを返す", () => {
71
- const frontMatter = new DocFrontMatterMdValue({
72
- features: ["login", "logout", "signup"],
73
- tags: ["tech", "tutorial", "beginner"],
74
- emptyArray: [],
75
- singleString: "not-array",
76
- numberArray: [1, 2, 3],
77
- });
78
- // 文字列配列は正しく取得
79
- expect(frontMatter.multiRelation("features")).toEqual([
80
- "login",
81
- "logout",
82
- "signup",
83
- ]);
84
- expect(frontMatter.multiRelation("tags")).toEqual([
85
- "tech",
86
- "tutorial",
87
- "beginner",
88
- ]);
89
- expect(frontMatter.multiRelation("emptyArray")).toEqual([]);
90
- // 単一値や数値配列は空配列を返す
91
- expect(frontMatter.multiRelation("singleString")).toEqual([]);
92
- expect(frontMatter.multiRelation("numberArray")).toEqual([]);
93
- expect(frontMatter.multiRelation("missing")).toEqual([]);
94
- });
95
- test("multiText メソッドは文字列配列を返す", () => {
96
- const frontMatter = new DocFrontMatterMdValue({
97
- keywords: ["typescript", "javascript", "nodejs"],
98
- authors: ["alice", "bob", "charlie"],
99
- empty: [],
100
- notArray: "single-value",
101
- });
102
- // 文字列配列は正しく取得
103
- expect(frontMatter.multiText("keywords")).toEqual([
104
- "typescript",
105
- "javascript",
106
- "nodejs",
107
- ]);
108
- expect(frontMatter.multiText("authors")).toEqual(["alice", "bob", "charlie"]);
109
- expect(frontMatter.multiText("empty")).toEqual([]);
110
- // 非配列は空配列を返す
111
- expect(frontMatter.multiText("notArray")).toEqual([]);
112
- expect(frontMatter.multiText("missing")).toEqual([]);
113
- });
114
- test("multiNumber メソッドは数値配列のみを返す", () => {
115
- const frontMatter = new DocFrontMatterMdValue({
116
- scores: [85, 90, 78],
117
- prices: [19.99, 29.99, 39.99],
118
- empty: [],
119
- stringArray: ["1", "2", "3"],
120
- singleNumber: 42,
121
- });
122
- // 数値配列は正しく取得
123
- expect(frontMatter.multiNumber("scores")).toEqual([85, 90, 78]);
124
- expect(frontMatter.multiNumber("prices")).toEqual([19.99, 29.99, 39.99]);
125
- expect(frontMatter.multiNumber("empty")).toEqual([]);
126
- // 文字列配列や単一値は空配列を返す
127
- expect(frontMatter.multiNumber("stringArray")).toEqual([]);
128
- expect(frontMatter.multiNumber("singleNumber")).toEqual([]);
129
- expect(frontMatter.multiNumber("missing")).toEqual([]);
130
- });
131
- test("multiBoolean メソッドは真偽値配列のみを返す", () => {
132
- const frontMatter = new DocFrontMatterMdValue({
133
- flags: [true, false, true, true],
134
- permissions: [false, false],
135
- empty: [],
136
- stringArray: ["true", "false"],
137
- singleBool: true,
138
- });
139
- // 真偽値配列は正しく取得
140
- expect(frontMatter.multiBoolean("flags")).toEqual([true, false, true, true]);
141
- expect(frontMatter.multiBoolean("permissions")).toEqual([false, false]);
142
- expect(frontMatter.multiBoolean("empty")).toEqual([]);
143
- // 文字列配列や単一値は空配列を返す
144
- expect(frontMatter.multiBoolean("stringArray")).toEqual([]);
145
- expect(frontMatter.multiBoolean("singleBool")).toEqual([]);
146
- expect(frontMatter.multiBoolean("missing")).toEqual([]);
147
- });
148
- test("has メソッドはプロパティの存在を正しく判定", () => {
149
- const frontMatter = new DocFrontMatterMdValue({
150
- title: "タイトル",
151
- count: 0,
152
- flag: false,
153
- empty: "",
154
- nullable: null,
155
- list: [],
156
- });
157
- // 値が存在すればtrueを返す(falsy値でも)
158
- expect(frontMatter.has("title")).toBe(true);
159
- expect(frontMatter.has("count")).toBe(true);
160
- expect(frontMatter.has("flag")).toBe(true);
161
- expect(frontMatter.has("empty")).toBe(true);
162
- expect(frontMatter.has("nullable")).toBe(true);
163
- expect(frontMatter.has("list")).toBe(true);
164
- // 存在しないキーはfalse
165
- expect(frontMatter.has("missing")).toBe(false);
166
- expect(frontMatter.has("notDefined")).toBe(false);
167
- });
168
- test("keys ゲッターはすべてのキーを返す", () => {
169
- const frontMatter = new DocFrontMatterMdValue({
170
- title: "テスト",
171
- version: 1.0,
172
- published: true,
173
- tags: ["tag1", "tag2"],
174
- });
175
- const keys = frontMatter.keys;
176
- expect(keys).toHaveLength(4);
177
- expect(keys).toContain("title");
178
- expect(keys).toContain("version");
179
- expect(keys).toContain("published");
180
- expect(keys).toContain("tags");
181
- // 順序は保証されないので、セットで比較
182
- expect(new Set(keys)).toEqual(new Set(["title", "version", "published", "tags"]));
183
- });
184
- test("特殊なケース:存在しないキーへのアクセス", () => {
185
- const frontMatter = new DocFrontMatterMdValue({
186
- title: "テスト",
187
- });
188
- expect(frontMatter.has("title")).toBe(true);
189
- expect(frontMatter.has("undefinedValue")).toBe(false);
190
- expect(frontMatter.text("undefinedValue")).toBeNull();
191
- });
192
- test("型の厳密な検証:文字列の数値は数値として扱われない", () => {
193
- const frontMatter = new DocFrontMatterMdValue({
194
- stringNumber: "123",
195
- stringBool: "true",
196
- actualNumber: 123,
197
- actualBool: true,
198
- });
199
- // 文字列の"123"は数値として取得できない
200
- expect(frontMatter.number("stringNumber")).toBeNull();
201
- expect(frontMatter.text("stringNumber")).toBe("123");
202
- // 文字列の"true"は真偽値として取得できない
203
- expect(frontMatter.boolean("stringBool")).toBeNull();
204
- expect(frontMatter.text("stringBool")).toBe("true");
205
- // 実際の数値と真偽値は正しく取得
206
- expect(frontMatter.number("actualNumber")).toBe(123);
207
- expect(frontMatter.boolean("actualBool")).toBe(true);
208
- });
209
- test("ネストしたオブジェクトは適切に扱われる", () => {
210
- const frontMatter = new DocFrontMatterMdValue({
211
- meta: {
212
- author: "John",
213
- version: 1.0,
214
- },
215
- config: {
216
- enabled: true,
217
- settings: ["a", "b"],
218
- },
219
- });
220
- // ネストしたオブジェクトは文字列や他の型として取得できない
221
- expect(frontMatter.text("meta")).toBeNull();
222
- expect(frontMatter.text("config")).toBeNull();
223
- // ただし、存在はする
224
- expect(frontMatter.has("meta")).toBe(true);
225
- expect(frontMatter.has("config")).toBe(true);
226
- });
@@ -1,80 +0,0 @@
1
- import type { DocFileMdFrontMatter } from "../types";
2
- import type { DocSchemaValue } from "./doc-schema-value";
3
- /**
4
- * FrontMatter
5
- */
6
- export declare class DocFrontMatterMdValue {
7
- readonly value: DocFileMdFrontMatter;
8
- constructor(value: DocFileMdFrontMatter);
9
- toJson(): DocFileMdFrontMatter;
10
- toYaml(): string;
11
- /**
12
- * Markdownテキストから生成
13
- */
14
- static from(markdownText: string): DocFrontMatterMdValue;
15
- /**
16
- * 空のFrontMatterを生成
17
- */
18
- static empty(): DocFrontMatterMdValue;
19
- /**
20
- * データから直接生成
21
- */
22
- static fromData(data: unknown): DocFrontMatterMdValue;
23
- /**
24
- * スキーマフィールドに基づいてデフォルト値を生成する
25
- */
26
- static generateDefaultValueFromSchemaField(fieldDef: {
27
- type: string;
28
- default?: unknown;
29
- }): unknown;
30
- /**
31
- * 単一のプロパティを更新した新しいインスタンスを返す
32
- * スキーマに基づいて型を検証し、スキーマのフィールドのみを含む新しいインスタンスを生成
33
- */
34
- withProperty(key: string, value: unknown, schema: DocSchemaValue): DocFrontMatterMdValue;
35
- /**
36
- * フィールド値の検証
37
- */
38
- private validateFieldValue;
39
- /**
40
- * テキスト型のプロパティを取得
41
- */
42
- text(key: string): string | null;
43
- /**
44
- * 数値型のプロパティを取得
45
- */
46
- number(key: string): number | null;
47
- /**
48
- * 真偽値型のプロパティを取得
49
- */
50
- boolean(key: string): boolean | null;
51
- /**
52
- * 単一リレーション型のプロパティを取得
53
- */
54
- relation(key: string): string | null;
55
- /**
56
- * 複数リレーション型のプロパティを取得
57
- */
58
- multiRelation(key: string): string[];
59
- /**
60
- * 複数テキスト型のプロパティを取得
61
- */
62
- multiText(key: string): string[];
63
- /**
64
- * 複数数値型のプロパティを取得
65
- */
66
- multiNumber(key: string): number[];
67
- /**
68
- * 複数真偽値型のプロパティを取得
69
- */
70
- multiBoolean(key: string): boolean[];
71
- /**
72
- * プロパティが存在するかチェック
73
- */
74
- has(key: string): boolean;
75
- /**
76
- * すべてのキーを取得
77
- */
78
- get keys(): string[];
79
- }
80
- //# sourceMappingURL=doc-front-matter-md-value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-front-matter-md-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-front-matter-md-value.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAIV,oBAAoB,EAIrB,MAAM,UAAU,CAAA;AAUjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD;;GAEG;AACH,qBAAa,qBAAqB;IACpB,QAAQ,CAAC,KAAK,EAAE,oBAAoB;IAAhD,YAAqB,KAAK,EAAE,oBAAoB,EAG/C;IAED,MAAM,IAAI,oBAAoB,CAE7B;IAED,MAAM,IAAI,MAAM,CAEf;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAQvD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAEpC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAGpD;IAED;;OAEG;IACH,MAAM,CAAC,mCAAmC,CAAC,QAAQ,EAAE;QACnD,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,GAAG,OAAO,CAsBV;IAED;;;OAGG;IACH,YAAY,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,cAAc,GACrB,qBAAqB,CA4CvB;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/B;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUjC;IAED;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAYnC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnC;IAED;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAYnC;IAED;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAY/B;IAED;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAYjC;IAED;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAYnC;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;CACF"}
@@ -1,257 +0,0 @@
1
- import { stringify } from "yaml";
2
- import { zDocFileMdFrontMatter } from "../models";
3
- import { DocContentMdValue } from "./doc-content-md-value";
4
- import { DocSchemaFieldBooleanMultipleValue } from "./doc-schema-field-boolean-multiple-value";
5
- import { DocSchemaFieldBooleanSingleValue } from "./doc-schema-field-boolean-single-value";
6
- import { DocSchemaFieldFactory } from "./doc-schema-field-factory";
7
- import { DocSchemaFieldNumberMultipleValue } from "./doc-schema-field-number-multiple-value";
8
- import { DocSchemaFieldNumberSingleValue } from "./doc-schema-field-number-single-value";
9
- import { DocSchemaFieldTextMultipleValue } from "./doc-schema-field-text-multiple-value";
10
- import { DocSchemaFieldTextSingleValue } from "./doc-schema-field-text-single-value";
11
- /**
12
- * FrontMatter
13
- */
14
- export class DocFrontMatterMdValue {
15
- value;
16
- constructor(value) {
17
- this.value = value;
18
- zDocFileMdFrontMatter.parse(value);
19
- Object.freeze(this);
20
- }
21
- toJson() {
22
- return this.value;
23
- }
24
- toYaml() {
25
- return stringify(this.value).trim();
26
- }
27
- /**
28
- * Markdownテキストから生成
29
- */
30
- static from(markdownText) {
31
- const openMarkdown = new DocContentMdValue(markdownText);
32
- const rawData = openMarkdown.frontMatter.data || {};
33
- const data = zDocFileMdFrontMatter.parse(rawData);
34
- return new DocFrontMatterMdValue(data);
35
- }
36
- /**
37
- * 空のFrontMatterを生成
38
- */
39
- static empty() {
40
- return new DocFrontMatterMdValue({});
41
- }
42
- /**
43
- * データから直接生成
44
- */
45
- static fromData(data) {
46
- const validatedData = zDocFileMdFrontMatter.parse(data);
47
- return new DocFrontMatterMdValue(validatedData);
48
- }
49
- /**
50
- * スキーマフィールドに基づいてデフォルト値を生成する
51
- */
52
- static generateDefaultValueFromSchemaField(fieldDef) {
53
- if (fieldDef.type === "text") {
54
- return fieldDef.default ?? "";
55
- }
56
- if (fieldDef.type === "boolean") {
57
- return fieldDef.default ?? false;
58
- }
59
- if (fieldDef.type === "number") {
60
- return fieldDef.default ?? 0;
61
- }
62
- if (fieldDef.type === "multi-text" ||
63
- fieldDef.type === "multi-number" ||
64
- fieldDef.type === "multi-boolean" ||
65
- fieldDef.type === "multi-relation") {
66
- return fieldDef.default ?? [];
67
- }
68
- if (fieldDef.type === "relation") {
69
- return fieldDef.default ?? null;
70
- }
71
- return null;
72
- }
73
- /**
74
- * 単一のプロパティを更新した新しいインスタンスを返す
75
- * スキーマに基づいて型を検証し、スキーマのフィールドのみを含む新しいインスタンスを生成
76
- */
77
- withProperty(key, value, schema) {
78
- const currentData = this.toJson();
79
- const fieldValue = schema.field(key);
80
- if (fieldValue === null) {
81
- return this;
82
- }
83
- if (!this.validateFieldValue(key, value, fieldValue)) {
84
- return this;
85
- }
86
- // スキーマを元にFrontMatterを再構築
87
- const draft = {};
88
- for (const field of schema.fields) {
89
- const fieldKey = field.key;
90
- if (fieldKey === key) {
91
- // 更新対象のフィールドは新しい値を使用
92
- // valueは事前にvalidateFieldValueで検証済み
93
- draft[fieldKey] = value;
94
- }
95
- else if (fieldKey in currentData) {
96
- // 既存の値があればそれを使用
97
- const value = currentData[fieldKey];
98
- if (value !== undefined) {
99
- draft[fieldKey] = value;
100
- }
101
- }
102
- else {
103
- // 値がない場合はデフォルト値を使用
104
- draft[fieldKey] = field.toJson().default;
105
- }
106
- }
107
- return new DocFrontMatterMdValue(draft);
108
- }
109
- /**
110
- * フィールド値の検証
111
- */
112
- validateFieldValue(key, value, fieldDef) {
113
- try {
114
- const factory = new DocSchemaFieldFactory();
115
- const schemaField = factory.fromSchemaEntry(key, fieldDef);
116
- return schemaField.validate(value);
117
- }
118
- catch {
119
- return false;
120
- }
121
- }
122
- /**
123
- * テキスト型のプロパティを取得
124
- */
125
- text(key) {
126
- const value = this.value[key];
127
- const validator = new DocSchemaFieldTextSingleValue(key, {
128
- type: "text",
129
- required: false,
130
- title: null,
131
- description: null,
132
- default: null,
133
- });
134
- return validator.validate(value) && typeof value === "string" ? value : null;
135
- }
136
- /**
137
- * 数値型のプロパティを取得
138
- */
139
- number(key) {
140
- const value = this.value[key];
141
- const validator = new DocSchemaFieldNumberSingleValue(key, {
142
- type: "number",
143
- required: false,
144
- title: null,
145
- description: null,
146
- default: null,
147
- });
148
- return validator.validate(value) && typeof value === "number" ? value : null;
149
- }
150
- /**
151
- * 真偽値型のプロパティを取得
152
- */
153
- boolean(key) {
154
- const value = this.value[key];
155
- const validator = new DocSchemaFieldBooleanSingleValue(key, {
156
- type: "boolean",
157
- required: false,
158
- title: null,
159
- description: null,
160
- default: null,
161
- });
162
- return validator.validate(value) && typeof value === "boolean"
163
- ? value
164
- : null;
165
- }
166
- /**
167
- * 単一リレーション型のプロパティを取得
168
- */
169
- relation(key) {
170
- const value = this.value[key];
171
- // リレーションもテキスト型と同じバリデーション
172
- const validator = new DocSchemaFieldTextSingleValue(key, {
173
- type: "text",
174
- required: false,
175
- title: null,
176
- description: null,
177
- default: null,
178
- });
179
- return validator.validate(value) && typeof value === "string" ? value : null;
180
- }
181
- /**
182
- * 複数リレーション型のプロパティを取得
183
- */
184
- multiRelation(key) {
185
- const value = this.value[key];
186
- const validator = new DocSchemaFieldTextMultipleValue(key, {
187
- type: "multi-text",
188
- required: false,
189
- title: null,
190
- description: null,
191
- default: null,
192
- });
193
- return validator.validate(value) && Array.isArray(value)
194
- ? value
195
- : [];
196
- }
197
- /**
198
- * 複数テキスト型のプロパティを取得
199
- */
200
- multiText(key) {
201
- const value = this.value[key];
202
- const validator = new DocSchemaFieldTextMultipleValue(key, {
203
- type: "multi-text",
204
- required: false,
205
- title: null,
206
- description: null,
207
- default: null,
208
- });
209
- return validator.validate(value) && Array.isArray(value)
210
- ? value
211
- : [];
212
- }
213
- /**
214
- * 複数数値型のプロパティを取得
215
- */
216
- multiNumber(key) {
217
- const value = this.value[key];
218
- const validator = new DocSchemaFieldNumberMultipleValue(key, {
219
- type: "multi-number",
220
- required: false,
221
- title: null,
222
- description: null,
223
- default: null,
224
- });
225
- return validator.validate(value) && Array.isArray(value)
226
- ? value
227
- : [];
228
- }
229
- /**
230
- * 複数真偽値型のプロパティを取得
231
- */
232
- multiBoolean(key) {
233
- const value = this.value[key];
234
- const validator = new DocSchemaFieldBooleanMultipleValue(key, {
235
- type: "multi-boolean",
236
- required: false,
237
- title: null,
238
- description: null,
239
- default: null,
240
- });
241
- return validator.validate(value) && Array.isArray(value)
242
- ? value
243
- : [];
244
- }
245
- /**
246
- * プロパティが存在するかチェック
247
- */
248
- has(key) {
249
- return key in this.value && this.value[key] !== undefined;
250
- }
251
- /**
252
- * すべてのキーを取得
253
- */
254
- get keys() {
255
- return Object.keys(this.value);
256
- }
257
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=doc-front-matter-md-value.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-front-matter-md-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-front-matter-md-value.test.ts"],"names":[],"mappings":""}