@interactive-inc/docs-client 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/README.md +228 -0
  2. package/build/doc-client.d.ts +59 -0
  3. package/build/doc-client.d.ts.map +1 -0
  4. package/build/doc-client.js +95 -0
  5. package/build/doc-client.test.d.ts +2 -0
  6. package/build/doc-client.test.d.ts.map +1 -0
  7. package/build/doc-client.test.js +38 -0
  8. package/build/doc-directory-reference.d.ts +65 -0
  9. package/build/doc-directory-reference.d.ts.map +1 -0
  10. package/build/doc-directory-reference.js +292 -0
  11. package/build/doc-directory-reference.test.d.ts +2 -0
  12. package/build/doc-directory-reference.test.d.ts.map +1 -0
  13. package/build/doc-directory-reference.test.js +100 -0
  14. package/build/doc-file-index-reference.d.ts +72 -0
  15. package/build/doc-file-index-reference.d.ts.map +1 -0
  16. package/build/doc-file-index-reference.js +191 -0
  17. package/build/doc-file-index-reference.test.d.ts +2 -0
  18. package/build/doc-file-index-reference.test.d.ts.map +1 -0
  19. package/build/doc-file-index-reference.test.js +77 -0
  20. package/build/doc-file-md-reference.d.ts +97 -0
  21. package/build/doc-file-md-reference.d.ts.map +1 -0
  22. package/build/doc-file-md-reference.js +297 -0
  23. package/build/doc-file-md-reference.test.d.ts +2 -0
  24. package/build/doc-file-md-reference.test.d.ts.map +1 -0
  25. package/build/doc-file-md-reference.test.js +465 -0
  26. package/build/doc-file-relation-reference.d.ts +54 -0
  27. package/build/doc-file-relation-reference.d.ts.map +1 -0
  28. package/build/doc-file-relation-reference.js +109 -0
  29. package/build/doc-file-system-debug.d.ts +81 -0
  30. package/build/doc-file-system-debug.d.ts.map +1 -0
  31. package/build/doc-file-system-debug.js +317 -0
  32. package/build/doc-file-system.d.ts +100 -0
  33. package/build/doc-file-system.d.ts.map +1 -0
  34. package/build/doc-file-system.js +210 -0
  35. package/build/doc-file-tree-system.d.ts +38 -0
  36. package/build/doc-file-tree-system.d.ts.map +1 -0
  37. package/build/doc-file-tree-system.js +153 -0
  38. package/build/doc-file-tree-system.test.d.ts +2 -0
  39. package/build/doc-file-tree-system.test.d.ts.map +1 -0
  40. package/build/doc-file-tree-system.test.js +105 -0
  41. package/build/doc-file-unknown-reference.d.ts +80 -0
  42. package/build/doc-file-unknown-reference.d.ts.map +1 -0
  43. package/build/doc-file-unknown-reference.js +181 -0
  44. package/build/doc-file-unknown-reference.test.d.ts +2 -0
  45. package/build/doc-file-unknown-reference.test.d.ts.map +1 -0
  46. package/build/doc-file-unknown-reference.test.js +73 -0
  47. package/build/doc-markdown-system.d.ts +44 -0
  48. package/build/doc-markdown-system.d.ts.map +1 -0
  49. package/build/doc-markdown-system.js +153 -0
  50. package/build/doc-markdown-system.test.d.ts +2 -0
  51. package/build/doc-markdown-system.test.d.ts.map +1 -0
  52. package/build/doc-markdown-system.test.js +124 -0
  53. package/build/doc-path-system.d.ts +43 -0
  54. package/build/doc-path-system.d.ts.map +1 -0
  55. package/build/doc-path-system.js +148 -0
  56. package/build/doc-path-system.test.d.ts +2 -0
  57. package/build/doc-path-system.test.d.ts.map +1 -0
  58. package/build/doc-path-system.test.js +67 -0
  59. package/build/entities/doc-file-entity.d.ts +5 -0
  60. package/build/entities/doc-file-entity.d.ts.map +1 -0
  61. package/build/entities/doc-file-entity.js +1 -0
  62. package/build/entities/doc-file-index-entity.d.ts +30 -0
  63. package/build/entities/doc-file-index-entity.d.ts.map +1 -0
  64. package/build/entities/doc-file-index-entity.js +49 -0
  65. package/build/entities/doc-file-index-entity.test.d.ts +2 -0
  66. package/build/entities/doc-file-index-entity.test.d.ts.map +1 -0
  67. package/build/entities/doc-file-index-entity.test.js +195 -0
  68. package/build/entities/doc-file-md-entity.d.ts +30 -0
  69. package/build/entities/doc-file-md-entity.d.ts.map +1 -0
  70. package/build/entities/doc-file-md-entity.js +49 -0
  71. package/build/entities/doc-file-md-entity.test.d.ts +2 -0
  72. package/build/entities/doc-file-md-entity.test.d.ts.map +1 -0
  73. package/build/entities/doc-file-md-entity.test.js +178 -0
  74. package/build/entities/doc-file-unknown-entity.d.ts +26 -0
  75. package/build/entities/doc-file-unknown-entity.d.ts.map +1 -0
  76. package/build/entities/doc-file-unknown-entity.js +45 -0
  77. package/build/entities/doc-file-unknown-entity.test.d.ts +2 -0
  78. package/build/entities/doc-file-unknown-entity.test.d.ts.map +1 -0
  79. package/build/entities/doc-file-unknown-entity.test.js +131 -0
  80. package/build/index.d.ts +42 -0
  81. package/build/index.d.ts.map +1 -0
  82. package/build/index.js +39 -24064
  83. package/build/models.d.ts +818 -0
  84. package/build/models.d.ts.map +1 -0
  85. package/build/models.js +312 -0
  86. package/build/types.d.ts +154 -0
  87. package/build/types.d.ts.map +1 -0
  88. package/build/types.js +1 -0
  89. package/build/values/doc-content-md-front-matter-value.d.ts +49 -0
  90. package/build/values/doc-content-md-front-matter-value.d.ts.map +1 -0
  91. package/build/values/doc-content-md-front-matter-value.js +94 -0
  92. package/build/values/doc-content-md-front-matter-value.test.d.ts +2 -0
  93. package/build/values/doc-content-md-front-matter-value.test.d.ts.map +1 -0
  94. package/build/values/doc-content-md-front-matter-value.test.js +73 -0
  95. package/build/values/doc-content-md-value.d.ts +66 -0
  96. package/build/values/doc-content-md-value.d.ts.map +1 -0
  97. package/build/values/doc-content-md-value.js +218 -0
  98. package/build/values/doc-content-md-value.test.d.ts +2 -0
  99. package/build/values/doc-content-md-value.test.d.ts.map +1 -0
  100. package/build/values/doc-content-md-value.test.js +179 -0
  101. package/build/values/doc-directory-path-value.d.ts +89 -0
  102. package/build/values/doc-directory-path-value.d.ts.map +1 -0
  103. package/build/values/doc-directory-path-value.js +145 -0
  104. package/build/values/doc-directory-path-value.test.d.ts +2 -0
  105. package/build/values/doc-directory-path-value.test.d.ts.map +1 -0
  106. package/build/values/doc-directory-path-value.test.js +68 -0
  107. package/build/values/doc-file-content-index-value.d.ts +62 -0
  108. package/build/values/doc-file-content-index-value.d.ts.map +1 -0
  109. package/build/values/doc-file-content-index-value.js +134 -0
  110. package/build/values/doc-file-content-index-value.test.d.ts +2 -0
  111. package/build/values/doc-file-content-index-value.test.d.ts.map +1 -0
  112. package/build/values/doc-file-content-index-value.test.js +203 -0
  113. package/build/values/doc-file-content-md-value.d.ts +62 -0
  114. package/build/values/doc-file-content-md-value.d.ts.map +1 -0
  115. package/build/values/doc-file-content-md-value.js +139 -0
  116. package/build/values/doc-file-content-md-value.test.d.ts +2 -0
  117. package/build/values/doc-file-content-md-value.test.d.ts.map +1 -0
  118. package/build/values/doc-file-content-md-value.test.js +160 -0
  119. package/build/values/doc-file-path-value.d.ts +47 -0
  120. package/build/values/doc-file-path-value.d.ts.map +1 -0
  121. package/build/values/doc-file-path-value.js +83 -0
  122. package/build/values/doc-file-path-value.test.d.ts +2 -0
  123. package/build/values/doc-file-path-value.test.d.ts.map +1 -0
  124. package/build/values/doc-file-path-value.test.js +84 -0
  125. package/build/values/doc-front-matter-index-value.d.ts +66 -0
  126. package/build/values/doc-front-matter-index-value.d.ts.map +1 -0
  127. package/build/values/doc-front-matter-index-value.js +185 -0
  128. package/build/values/doc-front-matter-index-value.test.d.ts +2 -0
  129. package/build/values/doc-front-matter-index-value.test.d.ts.map +1 -0
  130. package/build/values/doc-front-matter-index-value.test.js +98 -0
  131. package/build/values/doc-front-matter-md-value-accessor.test.d.ts +2 -0
  132. package/build/values/doc-front-matter-md-value-accessor.test.d.ts.map +1 -0
  133. package/build/values/doc-front-matter-md-value-accessor.test.js +226 -0
  134. package/build/values/doc-front-matter-md-value.d.ts +80 -0
  135. package/build/values/doc-front-matter-md-value.d.ts.map +1 -0
  136. package/build/values/doc-front-matter-md-value.js +257 -0
  137. package/build/values/doc-front-matter-md-value.test.d.ts +2 -0
  138. package/build/values/doc-front-matter-md-value.test.d.ts.map +1 -0
  139. package/build/values/doc-front-matter-md-value.test.js +198 -0
  140. package/build/values/doc-relation-field-value.d.ts +57 -0
  141. package/build/values/doc-relation-field-value.d.ts.map +1 -0
  142. package/build/values/doc-relation-field-value.js +85 -0
  143. package/build/values/doc-relation-field-value.test.d.ts +2 -0
  144. package/build/values/doc-relation-field-value.test.d.ts.map +1 -0
  145. package/build/values/doc-relation-field-value.test.js +115 -0
  146. package/build/values/doc-relation-file-value.d.ts +33 -0
  147. package/build/values/doc-relation-file-value.d.ts.map +1 -0
  148. package/build/values/doc-relation-file-value.js +55 -0
  149. package/build/values/doc-relation-file-value.test.d.ts +2 -0
  150. package/build/values/doc-relation-file-value.test.d.ts.map +1 -0
  151. package/build/values/doc-relation-file-value.test.js +77 -0
  152. package/build/values/doc-relation-value.d.ts +34 -0
  153. package/build/values/doc-relation-value.d.ts.map +1 -0
  154. package/build/values/doc-relation-value.js +56 -0
  155. package/build/values/doc-relation-value.test.d.ts +2 -0
  156. package/build/values/doc-relation-value.test.d.ts.map +1 -0
  157. package/build/values/doc-relation-value.test.js +89 -0
  158. package/build/values/doc-schema-field-boolean-multiple-value.d.ts +23 -0
  159. package/build/values/doc-schema-field-boolean-multiple-value.d.ts.map +1 -0
  160. package/build/values/doc-schema-field-boolean-multiple-value.js +43 -0
  161. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts +2 -0
  162. package/build/values/doc-schema-field-boolean-multiple-value.test.d.ts.map +1 -0
  163. package/build/values/doc-schema-field-boolean-multiple-value.test.js +76 -0
  164. package/build/values/doc-schema-field-boolean-single-value.d.ts +23 -0
  165. package/build/values/doc-schema-field-boolean-single-value.d.ts.map +1 -0
  166. package/build/values/doc-schema-field-boolean-single-value.js +39 -0
  167. package/build/values/doc-schema-field-boolean-single-value.test.d.ts +2 -0
  168. package/build/values/doc-schema-field-boolean-single-value.test.d.ts.map +1 -0
  169. package/build/values/doc-schema-field-boolean-single-value.test.js +73 -0
  170. package/build/values/doc-schema-field-factory.d.ts +37 -0
  171. package/build/values/doc-schema-field-factory.d.ts.map +1 -0
  172. package/build/values/doc-schema-field-factory.js +151 -0
  173. package/build/values/doc-schema-field-factory.test.d.ts +2 -0
  174. package/build/values/doc-schema-field-factory.test.d.ts.map +1 -0
  175. package/build/values/doc-schema-field-factory.test.js +215 -0
  176. package/build/values/doc-schema-field-number-multiple-value.d.ts +23 -0
  177. package/build/values/doc-schema-field-number-multiple-value.d.ts.map +1 -0
  178. package/build/values/doc-schema-field-number-multiple-value.js +43 -0
  179. package/build/values/doc-schema-field-number-multiple-value.test.d.ts +2 -0
  180. package/build/values/doc-schema-field-number-multiple-value.test.d.ts.map +1 -0
  181. package/build/values/doc-schema-field-number-multiple-value.test.js +79 -0
  182. package/build/values/doc-schema-field-number-single-value.d.ts +23 -0
  183. package/build/values/doc-schema-field-number-single-value.d.ts.map +1 -0
  184. package/build/values/doc-schema-field-number-single-value.js +39 -0
  185. package/build/values/doc-schema-field-number-single-value.test.d.ts +2 -0
  186. package/build/values/doc-schema-field-number-single-value.test.d.ts.map +1 -0
  187. package/build/values/doc-schema-field-number-single-value.test.js +77 -0
  188. package/build/values/doc-schema-field-relation-multiple-value.d.ts +24 -0
  189. package/build/values/doc-schema-field-relation-multiple-value.d.ts.map +1 -0
  190. package/build/values/doc-schema-field-relation-multiple-value.js +46 -0
  191. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts +2 -0
  192. package/build/values/doc-schema-field-relation-multiple-value.test.d.ts.map +1 -0
  193. package/build/values/doc-schema-field-relation-multiple-value.test.js +83 -0
  194. package/build/values/doc-schema-field-relation-single-value.d.ts +24 -0
  195. package/build/values/doc-schema-field-relation-single-value.d.ts.map +1 -0
  196. package/build/values/doc-schema-field-relation-single-value.js +42 -0
  197. package/build/values/doc-schema-field-relation-single-value.test.d.ts +2 -0
  198. package/build/values/doc-schema-field-relation-single-value.test.d.ts.map +1 -0
  199. package/build/values/doc-schema-field-relation-single-value.test.js +83 -0
  200. package/build/values/doc-schema-field-select-number-multiple-value.d.ts +25 -0
  201. package/build/values/doc-schema-field-select-number-multiple-value.d.ts.map +1 -0
  202. package/build/values/doc-schema-field-select-number-multiple-value.js +48 -0
  203. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts +2 -0
  204. package/build/values/doc-schema-field-select-number-multiple-value.test.d.ts.map +1 -0
  205. package/build/values/doc-schema-field-select-number-multiple-value.test.js +84 -0
  206. package/build/values/doc-schema-field-select-number-single-value.d.ts +25 -0
  207. package/build/values/doc-schema-field-select-number-single-value.d.ts.map +1 -0
  208. package/build/values/doc-schema-field-select-number-single-value.js +45 -0
  209. package/build/values/doc-schema-field-select-number-single-value.test.d.ts +2 -0
  210. package/build/values/doc-schema-field-select-number-single-value.test.d.ts.map +1 -0
  211. package/build/values/doc-schema-field-select-number-single-value.test.js +96 -0
  212. package/build/values/doc-schema-field-select-text-multiple-value.d.ts +25 -0
  213. package/build/values/doc-schema-field-select-text-multiple-value.d.ts.map +1 -0
  214. package/build/values/doc-schema-field-select-text-multiple-value.js +48 -0
  215. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts +2 -0
  216. package/build/values/doc-schema-field-select-text-multiple-value.test.d.ts.map +1 -0
  217. package/build/values/doc-schema-field-select-text-multiple-value.test.js +84 -0
  218. package/build/values/doc-schema-field-select-text-single-value.d.ts +25 -0
  219. package/build/values/doc-schema-field-select-text-single-value.d.ts.map +1 -0
  220. package/build/values/doc-schema-field-select-text-single-value.js +47 -0
  221. package/build/values/doc-schema-field-select-text-single-value.test.d.ts +2 -0
  222. package/build/values/doc-schema-field-select-text-single-value.test.d.ts.map +1 -0
  223. package/build/values/doc-schema-field-select-text-single-value.test.js +96 -0
  224. package/build/values/doc-schema-field-text-multiple-value.d.ts +23 -0
  225. package/build/values/doc-schema-field-text-multiple-value.d.ts.map +1 -0
  226. package/build/values/doc-schema-field-text-multiple-value.js +43 -0
  227. package/build/values/doc-schema-field-text-multiple-value.test.d.ts +2 -0
  228. package/build/values/doc-schema-field-text-multiple-value.test.d.ts.map +1 -0
  229. package/build/values/doc-schema-field-text-multiple-value.test.js +78 -0
  230. package/build/values/doc-schema-field-text-single-value.d.ts +23 -0
  231. package/build/values/doc-schema-field-text-single-value.d.ts.map +1 -0
  232. package/build/values/doc-schema-field-text-single-value.js +39 -0
  233. package/build/values/doc-schema-field-text-single-value.test.d.ts +2 -0
  234. package/build/values/doc-schema-field-text-single-value.test.d.ts.map +1 -0
  235. package/build/values/doc-schema-field-text-single-value.test.js +76 -0
  236. package/build/values/doc-schema-field-type-value.d.ts +61 -0
  237. package/build/values/doc-schema-field-type-value.d.ts.map +1 -0
  238. package/build/values/doc-schema-field-type-value.js +134 -0
  239. package/build/values/doc-schema-field-type-value.test.d.ts +2 -0
  240. package/build/values/doc-schema-field-type-value.test.d.ts.map +1 -0
  241. package/build/values/doc-schema-field-type-value.test.js +101 -0
  242. package/build/values/doc-schema-field-value.d.ts +45 -0
  243. package/build/values/doc-schema-field-value.d.ts.map +1 -0
  244. package/build/values/doc-schema-field-value.js +1 -0
  245. package/build/values/doc-schema-value.d.ts +99 -0
  246. package/build/values/doc-schema-value.d.ts.map +1 -0
  247. package/build/values/doc-schema-value.js +269 -0
  248. package/build/values/doc-schema-value.test.d.ts +2 -0
  249. package/build/values/doc-schema-value.test.d.ts.map +1 -0
  250. package/build/values/doc-schema-value.test.js +301 -0
  251. package/build/values/doc-tree-directory-node-value.d.ts +36 -0
  252. package/build/values/doc-tree-directory-node-value.d.ts.map +1 -0
  253. package/build/values/doc-tree-directory-node-value.js +71 -0
  254. package/build/values/doc-tree-directory-node-value.test.d.ts +2 -0
  255. package/build/values/doc-tree-directory-node-value.test.d.ts.map +1 -0
  256. package/build/values/doc-tree-directory-node-value.test.js +162 -0
  257. package/build/values/doc-tree-file-node-value.d.ts +33 -0
  258. package/build/values/doc-tree-file-node-value.d.ts.map +1 -0
  259. package/build/values/doc-tree-file-node-value.js +56 -0
  260. package/build/values/doc-tree-file-node-value.test.d.ts +2 -0
  261. package/build/values/doc-tree-file-node-value.test.d.ts.map +1 -0
  262. package/build/values/doc-tree-file-node-value.test.js +113 -0
  263. package/debug/debug.ts +108 -0
  264. package/package.json +7 -45
  265. package/bin/docs.js +0 -3
  266. package/build/assets/index.css +0 -1
  267. package/build/assets/index.js +0 -298
  268. package/build/index.html +0 -13
@@ -0,0 +1,148 @@
1
+ /**
2
+ * パス操作システム
3
+ */
4
+ export class DocPathSystem {
5
+ separator = "/";
6
+ /**
7
+ * パスを結合
8
+ */
9
+ join(...paths) {
10
+ const parts = [];
11
+ for (const path of paths) {
12
+ if (path === "")
13
+ continue;
14
+ // セパレータで分割
15
+ const segments = path.split(this.separator).filter(Boolean);
16
+ parts.push(...segments);
17
+ }
18
+ // 空の場合は "." を返す
19
+ if (parts.length === 0) {
20
+ return ".";
21
+ }
22
+ // 先頭が "/" で始まっていた場合は絶対パスとして扱う
23
+ const isAbsolute = paths[0]?.startsWith(this.separator);
24
+ const joined = parts.join(this.separator);
25
+ return isAbsolute ? `${this.separator}${joined}` : joined;
26
+ }
27
+ /**
28
+ * ファイル名を取得(拡張子付き)
29
+ */
30
+ basename(path, ext) {
31
+ const segments = path.split(this.separator);
32
+ const filename = segments[segments.length - 1] || "";
33
+ if (ext && filename.endsWith(ext)) {
34
+ return filename.slice(0, -ext.length);
35
+ }
36
+ return filename;
37
+ }
38
+ /**
39
+ * ディレクトリ名を取得
40
+ */
41
+ dirname(path) {
42
+ const segments = path.split(this.separator);
43
+ // ルートディレクトリの場合
44
+ if (segments.length <= 1) {
45
+ return ".";
46
+ }
47
+ // 最後の要素を除いた部分を結合
48
+ segments.pop();
49
+ const dir = segments.join(this.separator);
50
+ // 空の場合は "." を返す
51
+ return dir || ".";
52
+ }
53
+ /**
54
+ * 拡張子を取得
55
+ */
56
+ extname(path) {
57
+ const basename = this.basename(path);
58
+ const lastDot = basename.lastIndexOf(".");
59
+ if (lastDot <= 0) {
60
+ return "";
61
+ }
62
+ return basename.slice(lastDot);
63
+ }
64
+ /**
65
+ * 相対パスを計算
66
+ */
67
+ relative(from, to) {
68
+ const fromSegments = from.split(this.separator).filter(Boolean);
69
+ const toSegments = to.split(this.separator).filter(Boolean);
70
+ // 共通の親ディレクトリを見つける
71
+ let commonLength = 0;
72
+ for (let i = 0; i < Math.min(fromSegments.length, toSegments.length); i++) {
73
+ if (fromSegments[i] === toSegments[i]) {
74
+ commonLength++;
75
+ }
76
+ else {
77
+ break;
78
+ }
79
+ }
80
+ // fromから共通の親まで戻る
81
+ const upCount = fromSegments.length - commonLength;
82
+ const upSegments = Array(upCount).fill("..");
83
+ // 共通の親からtoへのパス
84
+ const downSegments = toSegments.slice(commonLength);
85
+ // 結合
86
+ const segments = [...upSegments, ...downSegments];
87
+ return segments.length > 0 ? segments.join(this.separator) : ".";
88
+ }
89
+ /**
90
+ * 絶対パスに変換
91
+ */
92
+ resolve(...paths) {
93
+ // 簡易実装:最後の絶対パスから開始、または現在のパスから開始
94
+ let resolved = "";
95
+ for (const path of paths) {
96
+ if (path.startsWith(this.separator)) {
97
+ // 絶対パスの場合はリセット
98
+ resolved = path;
99
+ }
100
+ else if (path !== "") {
101
+ // 相対パスの場合は結合
102
+ resolved = resolved ? this.join(resolved, path) : path;
103
+ }
104
+ }
105
+ return resolved || ".";
106
+ }
107
+ /**
108
+ * パスを正規化
109
+ */
110
+ normalize(path) {
111
+ const isAbsolute = path.startsWith(this.separator);
112
+ const segments = path.split(this.separator).filter(Boolean);
113
+ const normalized = [];
114
+ for (const segment of segments) {
115
+ if (segment === "..") {
116
+ // 親ディレクトリへ
117
+ if (normalized.length > 0 &&
118
+ normalized[normalized.length - 1] !== "..") {
119
+ normalized.pop();
120
+ }
121
+ else if (!isAbsolute) {
122
+ normalized.push("..");
123
+ }
124
+ }
125
+ else if (segment !== ".") {
126
+ // "." は無視、それ以外は追加
127
+ normalized.push(segment);
128
+ }
129
+ }
130
+ if (normalized.length === 0) {
131
+ return isAbsolute ? this.separator : ".";
132
+ }
133
+ const result = normalized.join(this.separator);
134
+ return isAbsolute ? `${this.separator}${result}` : result;
135
+ }
136
+ /**
137
+ * パスが絶対パスかどうか
138
+ */
139
+ isAbsolute(path) {
140
+ return path.startsWith(this.separator);
141
+ }
142
+ /**
143
+ * パスのセパレータ
144
+ */
145
+ get sep() {
146
+ return this.separator;
147
+ }
148
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-path-system.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-path-system.test.d.ts","sourceRoot":"","sources":["../lib/doc-path-system.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocPathSystem } from "./doc-path-system";
3
+ test("DocPathSystem - join: パスを結合", () => {
4
+ const system = new DocPathSystem();
5
+ expect(system.join("docs", "products", "index.md")).toBe("docs/products/index.md");
6
+ expect(system.join("/docs", "products")).toBe("/docs/products");
7
+ expect(system.join("docs/", "/products")).toBe("docs/products");
8
+ expect(system.join("", "docs", "", "index.md")).toBe("docs/index.md");
9
+ expect(system.join()).toBe(".");
10
+ });
11
+ test("DocPathSystem - basename: ファイル名を取得", () => {
12
+ const system = new DocPathSystem();
13
+ expect(system.basename("docs/index.md")).toBe("index.md");
14
+ expect(system.basename("docs/index.md", ".md")).toBe("index");
15
+ expect(system.basename("/path/to/file.txt")).toBe("file.txt");
16
+ expect(system.basename("file")).toBe("file");
17
+ expect(system.basename("")).toBe("");
18
+ });
19
+ test("DocPathSystem - dirname: ディレクトリ名を取得", () => {
20
+ const system = new DocPathSystem();
21
+ expect(system.dirname("docs/products/index.md")).toBe("docs/products");
22
+ expect(system.dirname("docs/index.md")).toBe("docs");
23
+ expect(system.dirname("index.md")).toBe(".");
24
+ expect(system.dirname("/")).toBe(".");
25
+ expect(system.dirname("")).toBe(".");
26
+ });
27
+ test("DocPathSystem - extname: 拡張子を取得", () => {
28
+ const system = new DocPathSystem();
29
+ expect(system.extname("index.md")).toBe(".md");
30
+ expect(system.extname("file.test.ts")).toBe(".ts");
31
+ expect(system.extname("README")).toBe("");
32
+ expect(system.extname(".gitignore")).toBe("");
33
+ expect(system.extname("file.")).toBe(".");
34
+ });
35
+ test("DocPathSystem - relative: 相対パスを計算", () => {
36
+ const system = new DocPathSystem();
37
+ expect(system.relative("docs/products", "docs/features")).toBe("../features");
38
+ expect(system.relative("docs", "docs/products/app")).toBe("products/app");
39
+ expect(system.relative("docs/products/app", "docs")).toBe("../..");
40
+ expect(system.relative("docs", "docs")).toBe(".");
41
+ });
42
+ test("DocPathSystem - resolve: 絶対パスに変換", () => {
43
+ const system = new DocPathSystem();
44
+ expect(system.resolve("/docs", "products", "index.md")).toBe("/docs/products/index.md");
45
+ expect(system.resolve("docs", "/products", "index.md")).toBe("/products/index.md");
46
+ expect(system.resolve("", "docs")).toBe("docs");
47
+ expect(system.resolve()).toBe(".");
48
+ });
49
+ test("DocPathSystem - normalize: パスを正規化", () => {
50
+ const system = new DocPathSystem();
51
+ expect(system.normalize("docs//products/../features/./index.md")).toBe("docs/features/index.md");
52
+ expect(system.normalize("/docs/../products")).toBe("/products");
53
+ expect(system.normalize("../docs/./products")).toBe("../docs/products");
54
+ expect(system.normalize("./docs")).toBe("docs");
55
+ expect(system.normalize(".")).toBe(".");
56
+ });
57
+ test("DocPathSystem - isAbsolute: 絶対パスかどうか", () => {
58
+ const system = new DocPathSystem();
59
+ expect(system.isAbsolute("/docs/index.md")).toBe(true);
60
+ expect(system.isAbsolute("docs/index.md")).toBe(false);
61
+ expect(system.isAbsolute("./docs")).toBe(false);
62
+ expect(system.isAbsolute("")).toBe(false);
63
+ });
64
+ test("DocPathSystem - sep: セパレータ", () => {
65
+ const system = new DocPathSystem();
66
+ expect(system.sep).toBe("/");
67
+ });
@@ -0,0 +1,5 @@
1
+ import type { DocFileIndexEntity } from "./doc-file-index-entity";
2
+ import type { DocFileMdEntity } from "./doc-file-md-entity";
3
+ import type { DocFileUnknownEntity } from "./doc-file-unknown-entity";
4
+ export type DocFileEntity = DocFileMdEntity | DocFileIndexEntity | DocFileUnknownEntity;
5
+ //# sourceMappingURL=doc-file-entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-file-entity.d.ts","sourceRoot":"","sources":["../../lib/entities/doc-file-entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAErE,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,kBAAkB,GAClB,oBAAoB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import type { DocFileIndex, DocFilePath } from "../types";
2
+ import { DocFileContentIndexValue } from "../values/doc-file-content-index-value";
3
+ /**
4
+ * ドキュメントのディレクトリ
5
+ */
6
+ export declare class DocFileIndexEntity {
7
+ readonly value: DocFileIndex;
8
+ constructor(value: DocFileIndex);
9
+ /**
10
+ * コンテンツ
11
+ */
12
+ get content(): DocFileContentIndexValue;
13
+ /**
14
+ * パス情報
15
+ */
16
+ get path(): DocFilePath;
17
+ /**
18
+ * コンテンツを更新
19
+ */
20
+ withContent(content: DocFileContentIndexValue): DocFileIndexEntity;
21
+ /**
22
+ * パスを更新
23
+ */
24
+ withPath(path: DocFilePath): DocFileIndexEntity;
25
+ /**
26
+ * indexFileSchemaの形式に変換
27
+ */
28
+ toJson(): DocFileIndex;
29
+ }
30
+ //# sourceMappingURL=doc-file-index-entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-file-index-entity.d.ts","sourceRoot":"","sources":["../../lib/entities/doc-file-index-entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AAEjF;;GAEG;AACH,qBAAa,kBAAkB;IACjB,QAAQ,CAAC,KAAK,EAAE,YAAY;IAAxC,YAAqB,KAAK,EAAE,YAAY,EAGvC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,wBAAwB,CAEtC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,kBAAkB,CAKjE;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAK9C;IAED;;OAEG;IACH,MAAM,IAAI,YAAY,CAErB;CACF"}
@@ -0,0 +1,49 @@
1
+ import { zDocFileIndex } from "../models";
2
+ import { DocFileContentIndexValue } from "../values/doc-file-content-index-value";
3
+ /**
4
+ * ドキュメントのディレクトリ
5
+ */
6
+ export class DocFileIndexEntity {
7
+ value;
8
+ constructor(value) {
9
+ this.value = value;
10
+ zDocFileIndex.parse(value);
11
+ Object.freeze(this);
12
+ }
13
+ /**
14
+ * コンテンツ
15
+ */
16
+ get content() {
17
+ return new DocFileContentIndexValue(this.value.content);
18
+ }
19
+ /**
20
+ * パス情報
21
+ */
22
+ get path() {
23
+ return this.value.path;
24
+ }
25
+ /**
26
+ * コンテンツを更新
27
+ */
28
+ withContent(content) {
29
+ return new DocFileIndexEntity({
30
+ ...this.value,
31
+ content: content.value,
32
+ });
33
+ }
34
+ /**
35
+ * パスを更新
36
+ */
37
+ withPath(path) {
38
+ return new DocFileIndexEntity({
39
+ ...this.value,
40
+ path: path,
41
+ });
42
+ }
43
+ /**
44
+ * indexFileSchemaの形式に変換
45
+ */
46
+ toJson() {
47
+ return this.value;
48
+ }
49
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-file-index-entity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-file-index-entity.test.d.ts","sourceRoot":"","sources":["../../lib/entities/doc-file-index-entity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,195 @@
1
+ import { expect, test } from "bun:test";
2
+ import { DocFileContentIndexValue } from "../values/doc-file-content-index-value";
3
+ import { DocFileIndexEntity } from "./doc-file-index-entity";
4
+ test("DocFileIndexEntity - 基本的な作成とプロパティアクセス", () => {
5
+ const entity = new DocFileIndexEntity({
6
+ type: "index",
7
+ content: {
8
+ type: "markdown-index",
9
+ body: "# タイトル\n\n説明文",
10
+ title: "タイトル",
11
+ description: "説明文",
12
+ frontMatter: {
13
+ type: "index-frontmatter",
14
+ icon: "📁",
15
+ schema: {},
16
+ },
17
+ },
18
+ path: {
19
+ path: "docs/index.md",
20
+ name: "index",
21
+ fullPath: "/Users/test/docs/index.md",
22
+ nameWithExtension: "index.md",
23
+ },
24
+ isArchived: false,
25
+ });
26
+ expect(entity.value.type).toBe("index");
27
+ });
28
+ test("DocFileIndexEntity - content getterが値オブジェクトを返す", () => {
29
+ const entity = new DocFileIndexEntity({
30
+ type: "index",
31
+ content: {
32
+ type: "markdown-index",
33
+ body: "# タイトル",
34
+ title: "タイトル",
35
+ description: "",
36
+ frontMatter: {
37
+ type: "index-frontmatter",
38
+ icon: "📁",
39
+ schema: {},
40
+ },
41
+ },
42
+ path: {
43
+ path: "docs/index.md",
44
+ name: "index",
45
+ fullPath: "/Users/test/docs/index.md",
46
+ nameWithExtension: "index.md",
47
+ },
48
+ isArchived: false,
49
+ });
50
+ const content = entity.content;
51
+ expect(content).toBeInstanceOf(DocFileContentIndexValue);
52
+ expect(content.title).toBe("タイトル");
53
+ expect(content.body).toBe("# タイトル");
54
+ });
55
+ test("DocFileIndexEntity - path getterがオブジェクトを返す", () => {
56
+ const entity = new DocFileIndexEntity({
57
+ type: "index",
58
+ content: {
59
+ type: "markdown-index",
60
+ body: "",
61
+ title: "",
62
+ description: "",
63
+ frontMatter: {
64
+ type: "index-frontmatter",
65
+ icon: "",
66
+ schema: {},
67
+ },
68
+ },
69
+ path: {
70
+ path: "docs/index.md",
71
+ name: "index",
72
+ fullPath: "/Users/test/docs/index.md",
73
+ nameWithExtension: "index.md",
74
+ },
75
+ isArchived: false,
76
+ });
77
+ const path = entity.path;
78
+ expect(path.name).toBe("index");
79
+ expect(path.path).toBe("docs/index.md");
80
+ expect(path.fullPath).toBe("/Users/test/docs/index.md");
81
+ expect(path.nameWithExtension).toBe("index.md");
82
+ });
83
+ test("DocFileIndexEntity - withContentで新しいインスタンスを作成", () => {
84
+ const entity = new DocFileIndexEntity({
85
+ type: "index",
86
+ content: {
87
+ type: "markdown-index",
88
+ body: "# 古いタイトル",
89
+ title: "古いタイトル",
90
+ description: "",
91
+ frontMatter: {
92
+ type: "index-frontmatter",
93
+ icon: "📁",
94
+ schema: {},
95
+ },
96
+ },
97
+ path: {
98
+ path: "docs/index.md",
99
+ name: "index",
100
+ fullPath: "/Users/test/docs/index.md",
101
+ nameWithExtension: "index.md",
102
+ },
103
+ isArchived: false,
104
+ });
105
+ const newContent = entity.content.withTitle("新しいタイトル");
106
+ const newEntity = entity.withContent(newContent);
107
+ expect(newEntity).not.toBe(entity); // 新しいインスタンス
108
+ expect(newEntity.content.title).toBe("新しいタイトル");
109
+ expect(entity.content.title).toBe("古いタイトル"); // 元は変更されない
110
+ });
111
+ test("DocFileIndexEntity - withPathで新しいインスタンスを作成", () => {
112
+ const entity = new DocFileIndexEntity({
113
+ type: "index",
114
+ content: {
115
+ type: "markdown-index",
116
+ body: "",
117
+ title: "",
118
+ description: "",
119
+ frontMatter: {
120
+ type: "index-frontmatter",
121
+ icon: "",
122
+ schema: {},
123
+ },
124
+ },
125
+ path: {
126
+ path: "docs/index.md",
127
+ name: "index",
128
+ fullPath: "/Users/test/docs/index.md",
129
+ nameWithExtension: "index.md",
130
+ },
131
+ isArchived: false,
132
+ });
133
+ const newPath = {
134
+ path: "docs/new-index.md",
135
+ name: "new-index",
136
+ fullPath: "/Users/test/docs/new-index.md",
137
+ nameWithExtension: "new-index.md",
138
+ };
139
+ const newEntity = entity.withPath(newPath);
140
+ expect(newEntity).not.toBe(entity); // 新しいインスタンス
141
+ expect(newEntity.path.path).toBe("docs/new-index.md");
142
+ expect(entity.path.path).toBe("docs/index.md"); // 元は変更されない
143
+ });
144
+ test("DocFileIndexEntity - toJsonで元のデータ構造を返す", () => {
145
+ const data = {
146
+ type: "index",
147
+ content: {
148
+ type: "markdown-index",
149
+ body: "# タイトル",
150
+ title: "タイトル",
151
+ description: "説明",
152
+ frontMatter: {
153
+ type: "index-frontmatter",
154
+ icon: "📁",
155
+ schema: {},
156
+ },
157
+ },
158
+ path: {
159
+ path: "docs/index.md",
160
+ name: "index",
161
+ fullPath: "/Users/test/docs/index.md",
162
+ nameWithExtension: "index.md",
163
+ },
164
+ isArchived: false,
165
+ };
166
+ const entity = new DocFileIndexEntity(data);
167
+ expect(entity.toJson()).toEqual(data);
168
+ });
169
+ test("DocFileIndexEntity - 不変性の確認", () => {
170
+ const entity = new DocFileIndexEntity({
171
+ type: "index",
172
+ content: {
173
+ type: "markdown-index",
174
+ body: "",
175
+ title: "",
176
+ description: "",
177
+ frontMatter: {
178
+ type: "index-frontmatter",
179
+ icon: "",
180
+ schema: {},
181
+ },
182
+ },
183
+ path: {
184
+ path: "docs/index.md",
185
+ name: "index",
186
+ fullPath: "/Users/test/docs/index.md",
187
+ nameWithExtension: "index.md",
188
+ },
189
+ isArchived: false,
190
+ });
191
+ expect(() => {
192
+ // @ts-expect-error - 不変性のテスト
193
+ entity.value = {};
194
+ }).toThrow();
195
+ });
@@ -0,0 +1,30 @@
1
+ import type { DocFileMd, DocFilePath } from "../types";
2
+ import { DocFileContentMdValue } from "../values/doc-file-content-md-value";
3
+ /**
4
+ * ドキュメントのファイル
5
+ */
6
+ export declare class DocFileMdEntity {
7
+ readonly value: DocFileMd;
8
+ constructor(value: DocFileMd);
9
+ /**
10
+ * コンテンツ
11
+ */
12
+ get content(): DocFileContentMdValue;
13
+ /**
14
+ * パス情報
15
+ */
16
+ get path(): DocFilePath;
17
+ /**
18
+ * コンテンツを更新
19
+ */
20
+ withContent(content: DocFileContentMdValue): DocFileMdEntity;
21
+ /**
22
+ * パスを更新
23
+ */
24
+ withPath(path: DocFilePath): DocFileMdEntity;
25
+ /**
26
+ * JSON形式に変換
27
+ */
28
+ toJson(): DocFileMd;
29
+ }
30
+ //# sourceMappingURL=doc-file-md-entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-file-md-entity.d.ts","sourceRoot":"","sources":["../../lib/entities/doc-file-md-entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E;;GAEG;AACH,qBAAa,eAAe;IACd,QAAQ,CAAC,KAAK,EAAE,SAAS;IAArC,YAAqB,KAAK,EAAE,SAAS,EAGpC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAK3D;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAK3C;IAED;;OAEG;IACH,MAAM,IAAI,SAAS,CAElB;CACF"}
@@ -0,0 +1,49 @@
1
+ import { zDocFileMd } from "../models";
2
+ import { DocFileContentMdValue } from "../values/doc-file-content-md-value";
3
+ /**
4
+ * ドキュメントのファイル
5
+ */
6
+ export class DocFileMdEntity {
7
+ value;
8
+ constructor(value) {
9
+ this.value = value;
10
+ zDocFileMd.parse(value);
11
+ Object.freeze(this);
12
+ }
13
+ /**
14
+ * コンテンツ
15
+ */
16
+ get content() {
17
+ return new DocFileContentMdValue(this.value.content);
18
+ }
19
+ /**
20
+ * パス情報
21
+ */
22
+ get path() {
23
+ return this.value.path;
24
+ }
25
+ /**
26
+ * コンテンツを更新
27
+ */
28
+ withContent(content) {
29
+ return new DocFileMdEntity({
30
+ ...this.value,
31
+ content: content.value,
32
+ });
33
+ }
34
+ /**
35
+ * パスを更新
36
+ */
37
+ withPath(path) {
38
+ return new DocFileMdEntity({
39
+ ...this.value,
40
+ path: path,
41
+ });
42
+ }
43
+ /**
44
+ * JSON形式に変換
45
+ */
46
+ toJson() {
47
+ return this.value;
48
+ }
49
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=doc-file-md-entity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-file-md-entity.test.d.ts","sourceRoot":"","sources":["../../lib/entities/doc-file-md-entity.test.ts"],"names":[],"mappings":""}