@interactive-inc/docs-client 0.0.6 → 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 (263) hide show
  1. package/build/index.d.ts +1921 -42
  2. package/build/index.js +4616 -39
  3. package/build/models.d.ts +34 -32
  4. package/build/models.js +219 -275
  5. package/package.json +4 -4
  6. package/tsup.config.ts +10 -0
  7. package/build/doc-client.d.ts +0 -59
  8. package/build/doc-client.d.ts.map +0 -1
  9. package/build/doc-client.js +0 -95
  10. package/build/doc-client.test.d.ts +0 -2
  11. package/build/doc-client.test.d.ts.map +0 -1
  12. package/build/doc-client.test.js +0 -38
  13. package/build/doc-directory-reference.d.ts +0 -65
  14. package/build/doc-directory-reference.d.ts.map +0 -1
  15. package/build/doc-directory-reference.js +0 -292
  16. package/build/doc-directory-reference.test.d.ts +0 -2
  17. package/build/doc-directory-reference.test.d.ts.map +0 -1
  18. package/build/doc-directory-reference.test.js +0 -100
  19. package/build/doc-file-index-reference.d.ts +0 -72
  20. package/build/doc-file-index-reference.d.ts.map +0 -1
  21. package/build/doc-file-index-reference.js +0 -191
  22. package/build/doc-file-index-reference.test.d.ts +0 -2
  23. package/build/doc-file-index-reference.test.d.ts.map +0 -1
  24. package/build/doc-file-index-reference.test.js +0 -77
  25. package/build/doc-file-md-reference.d.ts +0 -97
  26. package/build/doc-file-md-reference.d.ts.map +0 -1
  27. package/build/doc-file-md-reference.js +0 -297
  28. package/build/doc-file-md-reference.test.d.ts +0 -2
  29. package/build/doc-file-md-reference.test.d.ts.map +0 -1
  30. package/build/doc-file-md-reference.test.js +0 -465
  31. package/build/doc-file-relation-reference.d.ts +0 -54
  32. package/build/doc-file-relation-reference.d.ts.map +0 -1
  33. package/build/doc-file-relation-reference.js +0 -109
  34. package/build/doc-file-system-debug.d.ts +0 -81
  35. package/build/doc-file-system-debug.d.ts.map +0 -1
  36. package/build/doc-file-system-debug.js +0 -317
  37. package/build/doc-file-system.d.ts +0 -100
  38. package/build/doc-file-system.d.ts.map +0 -1
  39. package/build/doc-file-system.js +0 -210
  40. package/build/doc-file-tree-system.d.ts +0 -38
  41. package/build/doc-file-tree-system.d.ts.map +0 -1
  42. package/build/doc-file-tree-system.js +0 -153
  43. package/build/doc-file-tree-system.test.d.ts +0 -2
  44. package/build/doc-file-tree-system.test.d.ts.map +0 -1
  45. package/build/doc-file-tree-system.test.js +0 -105
  46. package/build/doc-file-unknown-reference.d.ts +0 -80
  47. package/build/doc-file-unknown-reference.d.ts.map +0 -1
  48. package/build/doc-file-unknown-reference.js +0 -181
  49. package/build/doc-file-unknown-reference.test.d.ts +0 -2
  50. package/build/doc-file-unknown-reference.test.d.ts.map +0 -1
  51. package/build/doc-file-unknown-reference.test.js +0 -73
  52. package/build/doc-markdown-system.d.ts +0 -44
  53. package/build/doc-markdown-system.d.ts.map +0 -1
  54. package/build/doc-markdown-system.js +0 -153
  55. package/build/doc-markdown-system.test.d.ts +0 -2
  56. package/build/doc-markdown-system.test.d.ts.map +0 -1
  57. package/build/doc-markdown-system.test.js +0 -124
  58. package/build/doc-path-system.d.ts +0 -43
  59. package/build/doc-path-system.d.ts.map +0 -1
  60. package/build/doc-path-system.js +0 -148
  61. package/build/doc-path-system.test.d.ts +0 -2
  62. package/build/doc-path-system.test.d.ts.map +0 -1
  63. package/build/doc-path-system.test.js +0 -67
  64. package/build/entities/doc-file-entity.d.ts +0 -5
  65. package/build/entities/doc-file-entity.d.ts.map +0 -1
  66. package/build/entities/doc-file-entity.js +0 -1
  67. package/build/entities/doc-file-index-entity.d.ts +0 -30
  68. package/build/entities/doc-file-index-entity.d.ts.map +0 -1
  69. package/build/entities/doc-file-index-entity.js +0 -49
  70. package/build/entities/doc-file-index-entity.test.d.ts +0 -2
  71. package/build/entities/doc-file-index-entity.test.d.ts.map +0 -1
  72. package/build/entities/doc-file-index-entity.test.js +0 -195
  73. package/build/entities/doc-file-md-entity.d.ts +0 -30
  74. package/build/entities/doc-file-md-entity.d.ts.map +0 -1
  75. package/build/entities/doc-file-md-entity.js +0 -49
  76. package/build/entities/doc-file-md-entity.test.d.ts +0 -2
  77. package/build/entities/doc-file-md-entity.test.d.ts.map +0 -1
  78. package/build/entities/doc-file-md-entity.test.js +0 -178
  79. package/build/entities/doc-file-unknown-entity.d.ts +0 -26
  80. package/build/entities/doc-file-unknown-entity.d.ts.map +0 -1
  81. package/build/entities/doc-file-unknown-entity.js +0 -45
  82. package/build/entities/doc-file-unknown-entity.test.d.ts +0 -2
  83. package/build/entities/doc-file-unknown-entity.test.d.ts.map +0 -1
  84. package/build/entities/doc-file-unknown-entity.test.js +0 -131
  85. package/build/index.d.ts.map +0 -1
  86. package/build/models.d.ts.map +0 -1
  87. package/build/types.d.ts +0 -154
  88. package/build/types.d.ts.map +0 -1
  89. package/build/types.js +0 -1
  90. package/build/values/doc-content-md-front-matter-value.d.ts +0 -49
  91. package/build/values/doc-content-md-front-matter-value.d.ts.map +0 -1
  92. package/build/values/doc-content-md-front-matter-value.js +0 -94
  93. package/build/values/doc-content-md-front-matter-value.test.d.ts +0 -2
  94. package/build/values/doc-content-md-front-matter-value.test.d.ts.map +0 -1
  95. package/build/values/doc-content-md-front-matter-value.test.js +0 -73
  96. package/build/values/doc-content-md-value.d.ts +0 -66
  97. package/build/values/doc-content-md-value.d.ts.map +0 -1
  98. package/build/values/doc-content-md-value.js +0 -218
  99. package/build/values/doc-content-md-value.test.d.ts +0 -2
  100. package/build/values/doc-content-md-value.test.d.ts.map +0 -1
  101. package/build/values/doc-content-md-value.test.js +0 -179
  102. package/build/values/doc-directory-path-value.d.ts +0 -89
  103. package/build/values/doc-directory-path-value.d.ts.map +0 -1
  104. package/build/values/doc-directory-path-value.js +0 -145
  105. package/build/values/doc-directory-path-value.test.d.ts +0 -2
  106. package/build/values/doc-directory-path-value.test.d.ts.map +0 -1
  107. package/build/values/doc-directory-path-value.test.js +0 -68
  108. package/build/values/doc-file-content-index-value.d.ts +0 -62
  109. package/build/values/doc-file-content-index-value.d.ts.map +0 -1
  110. package/build/values/doc-file-content-index-value.js +0 -134
  111. package/build/values/doc-file-content-index-value.test.d.ts +0 -2
  112. package/build/values/doc-file-content-index-value.test.d.ts.map +0 -1
  113. package/build/values/doc-file-content-index-value.test.js +0 -203
  114. package/build/values/doc-file-content-md-value.d.ts +0 -62
  115. package/build/values/doc-file-content-md-value.d.ts.map +0 -1
  116. package/build/values/doc-file-content-md-value.js +0 -139
  117. package/build/values/doc-file-content-md-value.test.d.ts +0 -2
  118. package/build/values/doc-file-content-md-value.test.d.ts.map +0 -1
  119. package/build/values/doc-file-content-md-value.test.js +0 -160
  120. package/build/values/doc-file-path-value.d.ts +0 -47
  121. package/build/values/doc-file-path-value.d.ts.map +0 -1
  122. package/build/values/doc-file-path-value.js +0 -83
  123. package/build/values/doc-file-path-value.test.d.ts +0 -2
  124. package/build/values/doc-file-path-value.test.d.ts.map +0 -1
  125. package/build/values/doc-file-path-value.test.js +0 -84
  126. package/build/values/doc-front-matter-index-value.d.ts +0 -66
  127. package/build/values/doc-front-matter-index-value.d.ts.map +0 -1
  128. package/build/values/doc-front-matter-index-value.js +0 -185
  129. package/build/values/doc-front-matter-index-value.test.d.ts +0 -2
  130. package/build/values/doc-front-matter-index-value.test.d.ts.map +0 -1
  131. package/build/values/doc-front-matter-index-value.test.js +0 -98
  132. package/build/values/doc-front-matter-md-value-accessor.test.d.ts +0 -2
  133. package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +0 -1
  134. package/build/values/doc-front-matter-md-value-accessor.test.js +0 -226
  135. package/build/values/doc-front-matter-md-value.d.ts +0 -80
  136. package/build/values/doc-front-matter-md-value.d.ts.map +0 -1
  137. package/build/values/doc-front-matter-md-value.js +0 -257
  138. package/build/values/doc-front-matter-md-value.test.d.ts +0 -2
  139. package/build/values/doc-front-matter-md-value.test.d.ts.map +0 -1
  140. package/build/values/doc-front-matter-md-value.test.js +0 -198
  141. package/build/values/doc-relation-field-value.d.ts +0 -57
  142. package/build/values/doc-relation-field-value.d.ts.map +0 -1
  143. package/build/values/doc-relation-field-value.js +0 -85
  144. package/build/values/doc-relation-field-value.test.d.ts +0 -2
  145. package/build/values/doc-relation-field-value.test.d.ts.map +0 -1
  146. package/build/values/doc-relation-field-value.test.js +0 -115
  147. package/build/values/doc-relation-file-value.d.ts +0 -33
  148. package/build/values/doc-relation-file-value.d.ts.map +0 -1
  149. package/build/values/doc-relation-file-value.js +0 -55
  150. package/build/values/doc-relation-file-value.test.d.ts +0 -2
  151. package/build/values/doc-relation-file-value.test.d.ts.map +0 -1
  152. package/build/values/doc-relation-file-value.test.js +0 -77
  153. package/build/values/doc-relation-value.d.ts +0 -34
  154. package/build/values/doc-relation-value.d.ts.map +0 -1
  155. package/build/values/doc-relation-value.js +0 -56
  156. package/build/values/doc-relation-value.test.d.ts +0 -2
  157. package/build/values/doc-relation-value.test.d.ts.map +0 -1
  158. package/build/values/doc-relation-value.test.js +0 -89
  159. package/build/values/doc-schema-field-boolean-multiple-value.d.ts +0 -23
  160. package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +0 -1
  161. package/build/values/doc-schema-field-boolean-multiple-value.js +0 -43
  162. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +0 -2
  163. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +0 -1
  164. package/build/values/doc-schema-field-boolean-multiple-value.test.js +0 -76
  165. package/build/values/doc-schema-field-boolean-single-value.d.ts +0 -23
  166. package/build/values/doc-schema-field-boolean-single-value.d.ts.map +0 -1
  167. package/build/values/doc-schema-field-boolean-single-value.js +0 -39
  168. package/build/values/doc-schema-field-boolean-single-value.test.d.ts +0 -2
  169. package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +0 -1
  170. package/build/values/doc-schema-field-boolean-single-value.test.js +0 -73
  171. package/build/values/doc-schema-field-factory.d.ts +0 -37
  172. package/build/values/doc-schema-field-factory.d.ts.map +0 -1
  173. package/build/values/doc-schema-field-factory.js +0 -151
  174. package/build/values/doc-schema-field-factory.test.d.ts +0 -2
  175. package/build/values/doc-schema-field-factory.test.d.ts.map +0 -1
  176. package/build/values/doc-schema-field-factory.test.js +0 -215
  177. package/build/values/doc-schema-field-number-multiple-value.d.ts +0 -23
  178. package/build/values/doc-schema-field-number-multiple-value.d.ts.map +0 -1
  179. package/build/values/doc-schema-field-number-multiple-value.js +0 -43
  180. package/build/values/doc-schema-field-number-multiple-value.test.d.ts +0 -2
  181. package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +0 -1
  182. package/build/values/doc-schema-field-number-multiple-value.test.js +0 -79
  183. package/build/values/doc-schema-field-number-single-value.d.ts +0 -23
  184. package/build/values/doc-schema-field-number-single-value.d.ts.map +0 -1
  185. package/build/values/doc-schema-field-number-single-value.js +0 -39
  186. package/build/values/doc-schema-field-number-single-value.test.d.ts +0 -2
  187. package/build/values/doc-schema-field-number-single-value.test.d.ts.map +0 -1
  188. package/build/values/doc-schema-field-number-single-value.test.js +0 -77
  189. package/build/values/doc-schema-field-relation-multiple-value.d.ts +0 -24
  190. package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +0 -1
  191. package/build/values/doc-schema-field-relation-multiple-value.js +0 -46
  192. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +0 -2
  193. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +0 -1
  194. package/build/values/doc-schema-field-relation-multiple-value.test.js +0 -83
  195. package/build/values/doc-schema-field-relation-single-value.d.ts +0 -24
  196. package/build/values/doc-schema-field-relation-single-value.d.ts.map +0 -1
  197. package/build/values/doc-schema-field-relation-single-value.js +0 -42
  198. package/build/values/doc-schema-field-relation-single-value.test.d.ts +0 -2
  199. package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +0 -1
  200. package/build/values/doc-schema-field-relation-single-value.test.js +0 -83
  201. package/build/values/doc-schema-field-select-number-multiple-value.d.ts +0 -25
  202. package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +0 -1
  203. package/build/values/doc-schema-field-select-number-multiple-value.js +0 -48
  204. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +0 -2
  205. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +0 -1
  206. package/build/values/doc-schema-field-select-number-multiple-value.test.js +0 -84
  207. package/build/values/doc-schema-field-select-number-single-value.d.ts +0 -25
  208. package/build/values/doc-schema-field-select-number-single-value.d.ts.map +0 -1
  209. package/build/values/doc-schema-field-select-number-single-value.js +0 -45
  210. package/build/values/doc-schema-field-select-number-single-value.test.d.ts +0 -2
  211. package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +0 -1
  212. package/build/values/doc-schema-field-select-number-single-value.test.js +0 -96
  213. package/build/values/doc-schema-field-select-text-multiple-value.d.ts +0 -25
  214. package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +0 -1
  215. package/build/values/doc-schema-field-select-text-multiple-value.js +0 -48
  216. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +0 -2
  217. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +0 -1
  218. package/build/values/doc-schema-field-select-text-multiple-value.test.js +0 -84
  219. package/build/values/doc-schema-field-select-text-single-value.d.ts +0 -25
  220. package/build/values/doc-schema-field-select-text-single-value.d.ts.map +0 -1
  221. package/build/values/doc-schema-field-select-text-single-value.js +0 -47
  222. package/build/values/doc-schema-field-select-text-single-value.test.d.ts +0 -2
  223. package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +0 -1
  224. package/build/values/doc-schema-field-select-text-single-value.test.js +0 -96
  225. package/build/values/doc-schema-field-text-multiple-value.d.ts +0 -23
  226. package/build/values/doc-schema-field-text-multiple-value.d.ts.map +0 -1
  227. package/build/values/doc-schema-field-text-multiple-value.js +0 -43
  228. package/build/values/doc-schema-field-text-multiple-value.test.d.ts +0 -2
  229. package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +0 -1
  230. package/build/values/doc-schema-field-text-multiple-value.test.js +0 -78
  231. package/build/values/doc-schema-field-text-single-value.d.ts +0 -23
  232. package/build/values/doc-schema-field-text-single-value.d.ts.map +0 -1
  233. package/build/values/doc-schema-field-text-single-value.js +0 -39
  234. package/build/values/doc-schema-field-text-single-value.test.d.ts +0 -2
  235. package/build/values/doc-schema-field-text-single-value.test.d.ts.map +0 -1
  236. package/build/values/doc-schema-field-text-single-value.test.js +0 -76
  237. package/build/values/doc-schema-field-type-value.d.ts +0 -61
  238. package/build/values/doc-schema-field-type-value.d.ts.map +0 -1
  239. package/build/values/doc-schema-field-type-value.js +0 -134
  240. package/build/values/doc-schema-field-type-value.test.d.ts +0 -2
  241. package/build/values/doc-schema-field-type-value.test.d.ts.map +0 -1
  242. package/build/values/doc-schema-field-type-value.test.js +0 -101
  243. package/build/values/doc-schema-field-value.d.ts +0 -45
  244. package/build/values/doc-schema-field-value.d.ts.map +0 -1
  245. package/build/values/doc-schema-field-value.js +0 -1
  246. package/build/values/doc-schema-value.d.ts +0 -99
  247. package/build/values/doc-schema-value.d.ts.map +0 -1
  248. package/build/values/doc-schema-value.js +0 -269
  249. package/build/values/doc-schema-value.test.d.ts +0 -2
  250. package/build/values/doc-schema-value.test.d.ts.map +0 -1
  251. package/build/values/doc-schema-value.test.js +0 -301
  252. package/build/values/doc-tree-directory-node-value.d.ts +0 -36
  253. package/build/values/doc-tree-directory-node-value.d.ts.map +0 -1
  254. package/build/values/doc-tree-directory-node-value.js +0 -71
  255. package/build/values/doc-tree-directory-node-value.test.d.ts +0 -2
  256. package/build/values/doc-tree-directory-node-value.test.d.ts.map +0 -1
  257. package/build/values/doc-tree-directory-node-value.test.js +0 -162
  258. package/build/values/doc-tree-file-node-value.d.ts +0 -33
  259. package/build/values/doc-tree-file-node-value.d.ts.map +0 -1
  260. package/build/values/doc-tree-file-node-value.js +0 -56
  261. package/build/values/doc-tree-file-node-value.test.d.ts +0 -2
  262. package/build/values/doc-tree-file-node-value.test.d.ts.map +0 -1
  263. 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":""}