@interactive-inc/docs-client 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +0 -228
  2. package/build/index.d.ts +1921 -42
  3. package/build/index.js +4617 -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
  265. package/debug/debug.ts +0 -108
@@ -1,301 +0,0 @@
1
- import { expect, test } from "bun:test";
2
- import { DocSchemaFieldRelationMultipleValue } from "./doc-schema-field-relation-multiple-value";
3
- import { DocSchemaFieldRelationSingleValue } from "./doc-schema-field-relation-single-value";
4
- import { DocSchemaFieldTextSingleValue } from "./doc-schema-field-text-single-value";
5
- import { DocSchemaValue } from "./doc-schema-value";
6
- test("スキーマの基本プロパティを取得できる", () => {
7
- const schema = new DocSchemaValue({
8
- title: {
9
- type: "text",
10
- required: true,
11
- title: null,
12
- description: null,
13
- default: null,
14
- },
15
- author: {
16
- type: "relation",
17
- required: false,
18
- path: "users/authors",
19
- title: null,
20
- description: null,
21
- default: null,
22
- },
23
- });
24
- expect(schema.fieldNames).toEqual(["title", "author"]);
25
- });
26
- test("フィールドを名前で取得できる", () => {
27
- const schema = new DocSchemaValue({
28
- title: {
29
- type: "text",
30
- required: true,
31
- title: "タイトル",
32
- description: null,
33
- default: null,
34
- },
35
- });
36
- const field = schema.field("title");
37
- expect(field).toBeInstanceOf(DocSchemaFieldTextSingleValue);
38
- expect(field?.key).toBe("title");
39
- expect(field?.title).toBe("タイトル");
40
- });
41
- test("存在しないフィールドの場合nullを返す", () => {
42
- const schema = new DocSchemaValue({});
43
- expect(schema.field("nonexistent")).toBeNull();
44
- });
45
- test("全フィールドを取得できる", () => {
46
- const schema = new DocSchemaValue({
47
- title: {
48
- type: "text",
49
- required: true,
50
- title: null,
51
- description: null,
52
- default: null,
53
- },
54
- price: {
55
- type: "number",
56
- required: false,
57
- title: null,
58
- description: null,
59
- default: null,
60
- },
61
- published: {
62
- type: "boolean",
63
- required: true,
64
- title: null,
65
- description: null,
66
- default: null,
67
- },
68
- });
69
- const fields = schema.fields;
70
- expect(fields.length).toBe(3);
71
- expect(fields[0].key).toBe("title");
72
- expect(fields[1].key).toBe("price");
73
- expect(fields[2].key).toBe("published");
74
- });
75
- test("リレーションフィールドのみを取得できる", () => {
76
- const schema = new DocSchemaValue({
77
- title: {
78
- type: "text",
79
- required: true,
80
- title: null,
81
- description: null,
82
- default: null,
83
- },
84
- author: {
85
- type: "relation",
86
- required: false,
87
- path: "users/authors",
88
- title: null,
89
- description: null,
90
- default: null,
91
- },
92
- tags: {
93
- type: "multi-relation",
94
- required: false,
95
- path: "metadata/tags",
96
- title: null,
97
- description: null,
98
- default: null,
99
- },
100
- description: {
101
- type: "text",
102
- required: false,
103
- title: null,
104
- description: null,
105
- default: null,
106
- },
107
- });
108
- const relationFields = schema.relationFields;
109
- expect(relationFields.length).toBe(2);
110
- expect(relationFields[0]).toBeInstanceOf(DocSchemaFieldRelationSingleValue);
111
- expect(relationFields[1]).toBeInstanceOf(DocSchemaFieldRelationMultipleValue);
112
- });
113
- test("空のスキーマを作成できる", () => {
114
- const schema = DocSchemaValue.empty();
115
- expect(schema.fieldNames).toEqual([]);
116
- expect(schema.fields).toEqual([]);
117
- });
118
- test("リレーションパスを抽出できる", () => {
119
- const schema = new DocSchemaValue({
120
- author: {
121
- type: "relation",
122
- required: false,
123
- path: "users/authors",
124
- title: null,
125
- description: null,
126
- default: null,
127
- },
128
- category: {
129
- type: "relation",
130
- required: false,
131
- path: "categories",
132
- title: null,
133
- description: null,
134
- default: null,
135
- },
136
- tags: {
137
- type: "multi-relation",
138
- required: false,
139
- path: "metadata/tags",
140
- title: null,
141
- description: null,
142
- default: null,
143
- },
144
- title: {
145
- type: "text",
146
- required: true,
147
- title: null,
148
- description: null,
149
- default: null,
150
- },
151
- });
152
- const paths = schema.extractRelationPaths();
153
- expect(paths.size).toBe(3);
154
- expect(paths.has("users/authors")).toBe(true);
155
- expect(paths.has("categories")).toBe(true);
156
- expect(paths.has("metadata/tags")).toBe(true);
157
- });
158
- test("リレーションオプションを作成できる", () => {
159
- const schema = new DocSchemaValue({});
160
- const option = schema.createRelationOption("users/tanaka.md", "田中太郎");
161
- expect(option.value).toBe("tanaka");
162
- expect(option.label).toBe("田中太郎");
163
- expect(option.path).toBe("users/tanaka.md");
164
- });
165
- test("タイトルがnullの場合ファイル名をラベルとして使用する", () => {
166
- const schema = new DocSchemaValue({});
167
- const option = schema.createRelationOption("categories/tech.md", null);
168
- expect(option.value).toBe("tech");
169
- expect(option.label).toBe("tech");
170
- });
171
- test("ファイルをスキップすべきか判定できる", () => {
172
- const schema = new DocSchemaValue({});
173
- expect(schema.shouldSkipFile("docs/index.md")).toBe(true);
174
- expect(schema.shouldSkipFile("docs/README.md")).toBe(true);
175
- expect(schema.shouldSkipFile("docs/article.md")).toBe(false);
176
- });
177
- test("値を指定された型に変換できる", () => {
178
- const schema = new DocSchemaValue({});
179
- // テキスト型への変換
180
- expect(schema.convertValue(123, "text", "default")).toBe("123");
181
- expect(schema.convertValue(true, "text", "default")).toBe("true");
182
- expect(schema.convertValue(null, "text", "default")).toBe("default");
183
- // 数値型への変換
184
- expect(schema.convertValue("123", "number", 0)).toBe(123);
185
- expect(schema.convertValue(true, "number", 0)).toBe(1);
186
- expect(schema.convertValue(false, "number", 0)).toBe(0);
187
- expect(schema.convertValue("invalid", "number", 0)).toBe(0);
188
- // ブール型への変換
189
- expect(schema.convertValue("true", "boolean", false)).toBe(true);
190
- expect(schema.convertValue("1", "boolean", false)).toBe(true);
191
- expect(schema.convertValue("false", "boolean", false)).toBe(false);
192
- expect(schema.convertValue(0, "boolean", false)).toBe(false);
193
- expect(schema.convertValue(1, "boolean", false)).toBe(true);
194
- // 配列型への変換
195
- expect(schema.convertValue("a,b,c", "multi-text", [])).toEqual([
196
- "a",
197
- "b",
198
- "c",
199
- ]);
200
- expect(schema.convertValue(["x", "y"], "array", [])).toEqual(["x", "y"]);
201
- // リレーション型への変換
202
- expect(schema.convertValue("users/tanaka.md", "relation", "")).toBe("tanaka");
203
- expect(schema.convertValue("tanaka", "relation", "")).toBe("tanaka");
204
- // マルチリレーション型への変換
205
- expect(schema.convertValue("a.md,b.md", "multi-relation", [])).toEqual([
206
- "a",
207
- "b",
208
- ]);
209
- expect(schema.convertValue(["x.md", "y.md"], "multi-relation", [])).toEqual([
210
- "x",
211
- "y",
212
- ]);
213
- });
214
- test("スキーマベースでFrontMatterを補完できる", () => {
215
- const schema = new DocSchemaValue({
216
- title: {
217
- type: "text",
218
- required: true,
219
- default: "無題",
220
- title: null,
221
- description: null,
222
- },
223
- published: {
224
- type: "boolean",
225
- required: false,
226
- default: false,
227
- title: null,
228
- description: null,
229
- },
230
- tags: {
231
- type: "multi-text",
232
- required: false,
233
- default: [],
234
- title: null,
235
- description: null,
236
- },
237
- });
238
- const result = schema.getCompleteFrontMatter({
239
- title: "記事タイトル",
240
- });
241
- expect(result).toEqual({
242
- title: "記事タイトル",
243
- published: false,
244
- tags: [],
245
- });
246
- });
247
- test("既存の値を保持しながらデフォルト値を補完する", () => {
248
- const schema = new DocSchemaValue({
249
- title: {
250
- type: "text",
251
- required: true,
252
- default: "無題",
253
- title: null,
254
- description: null,
255
- },
256
- author: {
257
- type: "text",
258
- required: false,
259
- default: "匿名",
260
- title: null,
261
- description: null,
262
- },
263
- published: {
264
- type: "boolean",
265
- required: false,
266
- default: false,
267
- title: null,
268
- description: null,
269
- },
270
- });
271
- const result = schema.getCompleteFrontMatter({
272
- author: "田中太郎",
273
- published: true,
274
- });
275
- expect(result).toEqual({
276
- title: "無題",
277
- author: "田中太郎",
278
- published: true,
279
- });
280
- });
281
- test("JSON形式に変換できる", () => {
282
- const schemaData = {
283
- field1: {
284
- type: "text",
285
- required: true,
286
- title: null,
287
- description: null,
288
- default: null,
289
- },
290
- field2: {
291
- type: "number",
292
- required: false,
293
- title: null,
294
- description: null,
295
- default: null,
296
- },
297
- };
298
- const schema = new DocSchemaValue(schemaData);
299
- const json = schema.toJson();
300
- expect(json).toEqual(schemaData);
301
- });
@@ -1,36 +0,0 @@
1
- import type { DocTreeDirectoryNode } from "../types";
2
- import { DocTreeFileNodeValue } from "./doc-tree-file-node-value";
3
- type Props = {
4
- name: string;
5
- path: string;
6
- icon: string;
7
- title: string;
8
- children: (DocTreeFileNodeValue | DocTreeDirectoryNodeValue)[];
9
- };
10
- /**
11
- * ツリーディレクトリノード値オブジェクト
12
- */
13
- export declare class DocTreeDirectoryNodeValue {
14
- private readonly props;
15
- constructor(props: Props);
16
- get name(): string;
17
- get path(): string;
18
- get icon(): string;
19
- get title(): string;
20
- get children(): (DocTreeDirectoryNodeValue | DocTreeFileNodeValue)[];
21
- get type(): "directory";
22
- /**
23
- * プレーンオブジェクトに変換
24
- */
25
- toJson(): DocTreeDirectoryNode;
26
- /**
27
- * プロパティから作成
28
- */
29
- static from(props: Props): DocTreeDirectoryNodeValue;
30
- /**
31
- * JSONオブジェクトから作成
32
- */
33
- static fromJson(json: unknown): DocTreeDirectoryNodeValue;
34
- }
35
- export {};
36
- //# sourceMappingURL=doc-tree-directory-node-value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-tree-directory-node-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-tree-directory-node-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAe,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,oBAAoB,GAAG,yBAAyB,CAAC,EAAE,CAAA;CAC/D,CAAA;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,KAAK,EAIxC;IAED,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,WAER;IAED,IAAI,QAAQ,yDAEX;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;OAEG;IACH,MAAM,IAAI,oBAAoB,CAS7B;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,yBAAyB,CAEnD;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAkBxD;CACF"}
@@ -1,71 +0,0 @@
1
- import { zDocTreeDirectoryNode, zDocTreeNode } from "../models";
2
- import { DocTreeFileNodeValue } from "./doc-tree-file-node-value";
3
- /**
4
- * ツリーディレクトリノード値オブジェクト
5
- */
6
- export class DocTreeDirectoryNodeValue {
7
- props;
8
- constructor(props) {
9
- this.props = props;
10
- Object.freeze(this);
11
- Object.freeze(this.props);
12
- Object.freeze(this.props.children);
13
- }
14
- get name() {
15
- return this.props.name;
16
- }
17
- get path() {
18
- return this.props.path;
19
- }
20
- get icon() {
21
- return this.props.icon;
22
- }
23
- get title() {
24
- return this.props.title;
25
- }
26
- get children() {
27
- return this.props.children;
28
- }
29
- get type() {
30
- return "directory";
31
- }
32
- /**
33
- * プレーンオブジェクトに変換
34
- */
35
- toJson() {
36
- return {
37
- name: this.name,
38
- path: this.path,
39
- type: "directory",
40
- icon: this.icon,
41
- title: this.title,
42
- children: this.children.map((child) => child.toJson()),
43
- };
44
- }
45
- /**
46
- * プロパティから作成
47
- */
48
- static from(props) {
49
- return new DocTreeDirectoryNodeValue(props);
50
- }
51
- /**
52
- * JSONオブジェクトから作成
53
- */
54
- static fromJson(json) {
55
- const parsed = zDocTreeDirectoryNode.parse(json);
56
- return new DocTreeDirectoryNodeValue({
57
- name: parsed.name,
58
- path: parsed.path,
59
- icon: parsed.icon,
60
- title: parsed.title,
61
- children: parsed.children.map((child) => {
62
- // childの型を検証
63
- const parsedChild = zDocTreeNode.parse(child);
64
- if (parsedChild.type === "file") {
65
- return DocTreeFileNodeValue.fromJson(parsedChild);
66
- }
67
- return DocTreeDirectoryNodeValue.fromJson(parsedChild);
68
- }),
69
- });
70
- }
71
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=doc-tree-directory-node-value.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-tree-directory-node-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-tree-directory-node-value.test.ts"],"names":[],"mappings":""}
@@ -1,162 +0,0 @@
1
- import { expect, test } from "bun:test";
2
- import { DocTreeDirectoryNodeValue } from "./doc-tree-directory-node-value";
3
- import { DocTreeFileNodeValue } from "./doc-tree-file-node-value";
4
- test("ディレクトリノードの基本プロパティを取得できる", () => {
5
- const node = new DocTreeDirectoryNodeValue({
6
- name: "products",
7
- path: "docs/products",
8
- icon: "📁",
9
- title: "製品",
10
- children: [],
11
- });
12
- expect(node.name).toBe("products");
13
- expect(node.path).toBe("docs/products");
14
- expect(node.icon).toBe("📁");
15
- expect(node.title).toBe("製品");
16
- expect(node.type).toBe("directory");
17
- expect(node.children).toEqual([]);
18
- });
19
- test("子ノードを持つディレクトリノードを作成できる", () => {
20
- const fileChild = new DocTreeFileNodeValue({
21
- name: "overview",
22
- path: "docs/products/overview.md",
23
- icon: "📄",
24
- title: "概要",
25
- });
26
- const dirChild = new DocTreeDirectoryNodeValue({
27
- name: "features",
28
- path: "docs/products/features",
29
- icon: "⚡",
30
- title: "機能",
31
- children: [],
32
- });
33
- const node = new DocTreeDirectoryNodeValue({
34
- name: "products",
35
- path: "docs/products",
36
- icon: "📁",
37
- title: "製品",
38
- children: [fileChild, dirChild],
39
- });
40
- expect(node.children.length).toBe(2);
41
- expect(node.children[0]).toBeInstanceOf(DocTreeFileNodeValue);
42
- expect(node.children[1]).toBeInstanceOf(DocTreeDirectoryNodeValue);
43
- });
44
- test("fromメソッドでインスタンスを生成できる", () => {
45
- const node = DocTreeDirectoryNodeValue.from({
46
- name: "docs",
47
- path: "docs",
48
- icon: "📚",
49
- title: "ドキュメント",
50
- children: [],
51
- });
52
- expect(node.name).toBe("docs");
53
- expect(node.icon).toBe("📚");
54
- });
55
- test("JSON形式に変換できる", () => {
56
- const fileChild = new DocTreeFileNodeValue({
57
- name: "readme",
58
- path: "docs/readme.md",
59
- icon: "📝",
60
- title: "README",
61
- });
62
- const node = new DocTreeDirectoryNodeValue({
63
- name: "docs",
64
- path: "docs",
65
- icon: "📁",
66
- title: "ドキュメント",
67
- children: [fileChild],
68
- });
69
- const json = node.toJson();
70
- expect(json).toEqual({
71
- name: "docs",
72
- path: "docs",
73
- type: "directory",
74
- icon: "📁",
75
- title: "ドキュメント",
76
- children: [
77
- {
78
- name: "readme",
79
- path: "docs/readme.md",
80
- type: "file",
81
- icon: "📝",
82
- title: "README",
83
- },
84
- ],
85
- });
86
- });
87
- test("JSONからインスタンスを生成できる", () => {
88
- const json = {
89
- name: "api",
90
- path: "docs/api",
91
- type: "directory",
92
- icon: "🔧",
93
- title: "API",
94
- children: [
95
- {
96
- name: "endpoints",
97
- path: "docs/api/endpoints.md",
98
- type: "file",
99
- icon: "📄",
100
- title: "エンドポイント",
101
- },
102
- {
103
- name: "auth",
104
- path: "docs/api/auth",
105
- type: "directory",
106
- icon: "🔐",
107
- title: "認証",
108
- children: [],
109
- },
110
- ],
111
- };
112
- const node = DocTreeDirectoryNodeValue.fromJson(json);
113
- expect(node.name).toBe("api");
114
- expect(node.path).toBe("docs/api");
115
- expect(node.icon).toBe("🔧");
116
- expect(node.title).toBe("API");
117
- expect(node.children.length).toBe(2);
118
- expect(node.children[0]).toBeInstanceOf(DocTreeFileNodeValue);
119
- expect(node.children[0].name).toBe("endpoints");
120
- expect(node.children[1]).toBeInstanceOf(DocTreeDirectoryNodeValue);
121
- expect(node.children[1].name).toBe("auth");
122
- });
123
- test("深くネストされた構造も処理できる", () => {
124
- const deepChild = new DocTreeFileNodeValue({
125
- name: "deep-file",
126
- path: "docs/a/b/c/deep-file.md",
127
- icon: "🔍",
128
- title: "深いファイル",
129
- });
130
- const level3 = new DocTreeDirectoryNodeValue({
131
- name: "c",
132
- path: "docs/a/b/c",
133
- icon: "📁",
134
- title: "レベル3",
135
- children: [deepChild],
136
- });
137
- const level2 = new DocTreeDirectoryNodeValue({
138
- name: "b",
139
- path: "docs/a/b",
140
- icon: "📁",
141
- title: "レベル2",
142
- children: [level3],
143
- });
144
- const level1 = new DocTreeDirectoryNodeValue({
145
- name: "a",
146
- path: "docs/a",
147
- icon: "📁",
148
- title: "レベル1",
149
- children: [level2],
150
- });
151
- const level1Child = level1.children[0];
152
- expect(level1Child).toBeInstanceOf(DocTreeDirectoryNodeValue);
153
- if (level1Child instanceof DocTreeDirectoryNodeValue) {
154
- const level2Child = level1Child.children[0];
155
- expect(level2Child).toBeInstanceOf(DocTreeDirectoryNodeValue);
156
- if (level2Child instanceof DocTreeDirectoryNodeValue) {
157
- const level3Child = level2Child.children[0];
158
- expect(level3Child).toBeInstanceOf(DocTreeFileNodeValue);
159
- expect(level3Child.name).toBe("deep-file");
160
- }
161
- }
162
- });
@@ -1,33 +0,0 @@
1
- import type { DocTreeFileNode } from "../types";
2
- type Props = {
3
- name: string;
4
- path: string;
5
- icon: string;
6
- title: string;
7
- };
8
- /**
9
- * ツリーファイルノード値オブジェクト
10
- */
11
- export declare class DocTreeFileNodeValue {
12
- private readonly props;
13
- constructor(props: Props);
14
- get name(): string;
15
- get path(): string;
16
- get icon(): string;
17
- get title(): string;
18
- get type(): "file";
19
- /**
20
- * プレーンオブジェクトに変換
21
- */
22
- toJson(): DocTreeFileNode;
23
- /**
24
- * プロパティから作成
25
- */
26
- static from(props: Props): DocTreeFileNodeValue;
27
- /**
28
- * JSONオブジェクトから作成
29
- */
30
- static fromJson(json: unknown): DocTreeFileNodeValue;
31
- }
32
- export {};
33
- //# sourceMappingURL=doc-tree-file-node-value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-tree-file-node-value.d.ts","sourceRoot":"","sources":["../../lib/values/doc-tree-file-node-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,KAAK,EAExC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,IAAI,eAAe,CAQxB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB,CAE9C;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAQnD;CACF"}
@@ -1,56 +0,0 @@
1
- import { zDocTreeFileNode } from "../models";
2
- /**
3
- * ツリーファイルノード値オブジェクト
4
- */
5
- export class DocTreeFileNodeValue {
6
- props;
7
- constructor(props) {
8
- this.props = props;
9
- Object.freeze(this);
10
- }
11
- get name() {
12
- return this.props.name;
13
- }
14
- get path() {
15
- return this.props.path;
16
- }
17
- get icon() {
18
- return this.props.icon;
19
- }
20
- get title() {
21
- return this.props.title;
22
- }
23
- get type() {
24
- return "file";
25
- }
26
- /**
27
- * プレーンオブジェクトに変換
28
- */
29
- toJson() {
30
- return {
31
- name: this.name,
32
- path: this.path,
33
- type: "file",
34
- icon: this.icon,
35
- title: this.title,
36
- };
37
- }
38
- /**
39
- * プロパティから作成
40
- */
41
- static from(props) {
42
- return new DocTreeFileNodeValue(props);
43
- }
44
- /**
45
- * JSONオブジェクトから作成
46
- */
47
- static fromJson(json) {
48
- const parsed = zDocTreeFileNode.parse(json);
49
- return new DocTreeFileNodeValue({
50
- name: parsed.name,
51
- path: parsed.path,
52
- icon: parsed.icon,
53
- title: parsed.title,
54
- });
55
- }
56
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=doc-tree-file-node-value.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doc-tree-file-node-value.test.d.ts","sourceRoot":"","sources":["../../lib/values/doc-tree-file-node-value.test.ts"],"names":[],"mappings":""}