@knpkv/confluence-to-markdown 0.5.0 → 0.7.0

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 (395) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +58 -14
  3. package/dist/AdfPlaceholders.d.ts +42 -0
  4. package/dist/AdfPlaceholders.d.ts.map +1 -0
  5. package/dist/AdfPlaceholders.js +547 -0
  6. package/dist/AdfPlaceholders.js.map +1 -0
  7. package/dist/AdfSchemaValidator.d.ts +37 -0
  8. package/dist/AdfSchemaValidator.d.ts.map +1 -0
  9. package/dist/AdfSchemaValidator.js +37 -0
  10. package/dist/AdfSchemaValidator.js.map +1 -0
  11. package/dist/AdfWalker.d.ts +39 -0
  12. package/dist/AdfWalker.d.ts.map +1 -0
  13. package/dist/AdfWalker.js +527 -0
  14. package/dist/AdfWalker.js.map +1 -0
  15. package/dist/AtlaskitTransformers.d.ts +35 -0
  16. package/dist/AtlaskitTransformers.d.ts.map +1 -0
  17. package/dist/AtlaskitTransformers.js +48 -0
  18. package/dist/AtlaskitTransformers.js.map +1 -0
  19. package/dist/Brand.d.ts +6 -6
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +8 -6
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ConfluenceAuth.d.ts +4 -4
  24. package/dist/ConfluenceAuth.d.ts.map +1 -1
  25. package/dist/ConfluenceAuth.js +15 -27
  26. package/dist/ConfluenceAuth.js.map +1 -1
  27. package/dist/ConfluenceClient.d.ts +4 -4
  28. package/dist/ConfluenceClient.d.ts.map +1 -1
  29. package/dist/ConfluenceClient.js +21 -14
  30. package/dist/ConfluenceClient.js.map +1 -1
  31. package/dist/ConfluenceConfig.d.ts +3 -3
  32. package/dist/ConfluenceConfig.d.ts.map +1 -1
  33. package/dist/ConfluenceConfig.js +13 -11
  34. package/dist/ConfluenceConfig.js.map +1 -1
  35. package/dist/ConfluenceError.d.ts +56 -4
  36. package/dist/ConfluenceError.d.ts.map +1 -1
  37. package/dist/ConfluenceError.js +30 -1
  38. package/dist/ConfluenceError.js.map +1 -1
  39. package/dist/GitService.d.ts +11 -3
  40. package/dist/GitService.d.ts.map +1 -1
  41. package/dist/GitService.js +19 -27
  42. package/dist/GitService.js.map +1 -1
  43. package/dist/LocalFileSystem.d.ts +3 -3
  44. package/dist/LocalFileSystem.d.ts.map +1 -1
  45. package/dist/LocalFileSystem.js +6 -6
  46. package/dist/LocalFileSystem.js.map +1 -1
  47. package/dist/MarkdownConverter.d.ts +16 -65
  48. package/dist/MarkdownConverter.d.ts.map +1 -1
  49. package/dist/MarkdownConverter.js +64 -85
  50. package/dist/MarkdownConverter.js.map +1 -1
  51. package/dist/Schemas.d.ts +128 -141
  52. package/dist/Schemas.d.ts.map +1 -1
  53. package/dist/Schemas.js +21 -23
  54. package/dist/Schemas.js.map +1 -1
  55. package/dist/SyncEngine.d.ts +8 -5
  56. package/dist/SyncEngine.d.ts.map +1 -1
  57. package/dist/SyncEngine.js +189 -113
  58. package/dist/SyncEngine.js.map +1 -1
  59. package/dist/bin.js +23 -35
  60. package/dist/bin.js.map +1 -1
  61. package/dist/commands/auth.d.ts +2 -14
  62. package/dist/commands/auth.d.ts.map +1 -1
  63. package/dist/commands/auth.js +11 -16
  64. package/dist/commands/auth.js.map +1 -1
  65. package/dist/commands/clone.d.ts +4 -6
  66. package/dist/commands/clone.d.ts.map +1 -1
  67. package/dist/commands/clone.js +34 -32
  68. package/dist/commands/clone.js.map +1 -1
  69. package/dist/commands/delete.d.ts +2 -10
  70. package/dist/commands/delete.d.ts.map +1 -1
  71. package/dist/commands/delete.js +5 -4
  72. package/dist/commands/delete.js.map +1 -1
  73. package/dist/commands/errorHandler.d.ts +2 -1
  74. package/dist/commands/errorHandler.d.ts.map +1 -1
  75. package/dist/commands/errorHandler.js +22 -15
  76. package/dist/commands/errorHandler.js.map +1 -1
  77. package/dist/commands/fetch.d.ts +27 -0
  78. package/dist/commands/fetch.d.ts.map +1 -0
  79. package/dist/commands/fetch.js +48 -0
  80. package/dist/commands/fetch.js.map +1 -0
  81. package/dist/commands/git.d.ts +7 -10
  82. package/dist/commands/git.d.ts.map +1 -1
  83. package/dist/commands/git.js +6 -6
  84. package/dist/commands/git.js.map +1 -1
  85. package/dist/commands/index.d.ts +1 -0
  86. package/dist/commands/index.d.ts.map +1 -1
  87. package/dist/commands/index.js +1 -0
  88. package/dist/commands/index.js.map +1 -1
  89. package/dist/commands/layers.d.ts +10 -9
  90. package/dist/commands/layers.d.ts.map +1 -1
  91. package/dist/commands/layers.js +41 -30
  92. package/dist/commands/layers.js.map +1 -1
  93. package/dist/commands/new.d.ts +2 -6
  94. package/dist/commands/new.d.ts.map +1 -1
  95. package/dist/commands/new.js +5 -4
  96. package/dist/commands/new.js.map +1 -1
  97. package/dist/commands/pageInput.d.ts +19 -0
  98. package/dist/commands/pageInput.d.ts.map +1 -0
  99. package/dist/commands/pageInput.js +68 -0
  100. package/dist/commands/pageInput.js.map +1 -0
  101. package/dist/commands/root.d.ts +8 -0
  102. package/dist/commands/root.d.ts.map +1 -0
  103. package/dist/commands/root.js +29 -0
  104. package/dist/commands/root.js.map +1 -0
  105. package/dist/commands/sync.d.ts +6 -9
  106. package/dist/commands/sync.d.ts.map +1 -1
  107. package/dist/commands/sync.js +5 -6
  108. package/dist/commands/sync.js.map +1 -1
  109. package/dist/index.d.ts +3 -8
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +2 -13
  112. package/dist/index.js.map +1 -1
  113. package/dist/internal/NodeLayers.d.ts.map +1 -1
  114. package/dist/internal/NodeLayers.js +1 -2
  115. package/dist/internal/NodeLayers.js.map +1 -1
  116. package/dist/internal/adfMetadata.d.ts +30 -0
  117. package/dist/internal/adfMetadata.d.ts.map +1 -0
  118. package/dist/internal/adfMetadata.js +126 -0
  119. package/dist/internal/adfMetadata.js.map +1 -0
  120. package/dist/internal/cleanMarkdown.d.ts +5 -0
  121. package/dist/internal/cleanMarkdown.d.ts.map +1 -0
  122. package/dist/internal/cleanMarkdown.js +13 -0
  123. package/dist/internal/cleanMarkdown.js.map +1 -0
  124. package/dist/internal/frontmatter.d.ts.map +1 -1
  125. package/dist/internal/frontmatter.js +41 -8
  126. package/dist/internal/frontmatter.js.map +1 -1
  127. package/dist/internal/gitCommands.d.ts +9 -3
  128. package/dist/internal/gitCommands.d.ts.map +1 -1
  129. package/dist/internal/gitCommands.js +18 -9
  130. package/dist/internal/gitCommands.js.map +1 -1
  131. package/dist/internal/hashUtils.d.ts +1 -1
  132. package/dist/internal/hashUtils.d.ts.map +1 -1
  133. package/dist/internal/hashUtils.js +1 -1
  134. package/dist/internal/hashUtils.js.map +1 -1
  135. package/dist/internal/oauthServer.d.ts +10 -5
  136. package/dist/internal/oauthServer.d.ts.map +1 -1
  137. package/dist/internal/oauthServer.js +19 -40
  138. package/dist/internal/oauthServer.js.map +1 -1
  139. package/dist/internal/pathUtils.d.ts +1 -1
  140. package/dist/internal/pathUtils.d.ts.map +1 -1
  141. package/dist/internal/pathUtils.js +1 -1
  142. package/dist/internal/pathUtils.js.map +1 -1
  143. package/dist/internal/process.d.ts +15 -0
  144. package/dist/internal/process.d.ts.map +1 -0
  145. package/dist/internal/process.js +10 -0
  146. package/dist/internal/process.js.map +1 -0
  147. package/dist/internal/stdio.d.ts +6 -0
  148. package/dist/internal/stdio.d.ts.map +1 -0
  149. package/dist/internal/stdio.js +15 -0
  150. package/dist/internal/stdio.js.map +1 -0
  151. package/dist/internal/tokenStorage.d.ts +3 -13
  152. package/dist/internal/tokenStorage.d.ts.map +1 -1
  153. package/dist/internal/tokenStorage.js +26 -24
  154. package/dist/internal/tokenStorage.js.map +1 -1
  155. package/dist/internal/userCache.d.ts +1 -1
  156. package/dist/internal/userCache.d.ts.map +1 -1
  157. package/dist/internal/userCache.js +1 -1
  158. package/dist/internal/userCache.js.map +1 -1
  159. package/package.json +29 -20
  160. package/skills/confluence/SKILL.md +143 -0
  161. package/skills/confluence/agents/openai.yaml +4 -0
  162. package/src/AdfPlaceholders.ts +563 -0
  163. package/src/AdfSchemaValidator.ts +65 -0
  164. package/src/AdfWalker.ts +591 -0
  165. package/src/AtlaskitTransformers.ts +70 -0
  166. package/src/Brand.ts +11 -16
  167. package/src/ConfluenceAuth.ts +22 -30
  168. package/src/ConfluenceClient.ts +28 -24
  169. package/src/ConfluenceConfig.ts +14 -14
  170. package/src/ConfluenceError.ts +65 -3
  171. package/src/GitService.ts +39 -49
  172. package/src/LocalFileSystem.ts +7 -9
  173. package/src/MarkdownConverter.ts +108 -143
  174. package/src/Schemas.ts +17 -16
  175. package/src/SyncEngine.ts +272 -127
  176. package/src/atlaskit-adf-schema.d.ts +3 -0
  177. package/src/bin.ts +30 -56
  178. package/src/commands/auth.ts +21 -18
  179. package/src/commands/clone.ts +46 -38
  180. package/src/commands/delete.ts +5 -4
  181. package/src/commands/errorHandler.ts +25 -18
  182. package/src/commands/fetch.ts +90 -0
  183. package/src/commands/git.ts +6 -6
  184. package/src/commands/index.ts +1 -0
  185. package/src/commands/layers.ts +64 -37
  186. package/src/commands/new.ts +5 -4
  187. package/src/commands/pageInput.ts +103 -0
  188. package/src/commands/root.ts +59 -0
  189. package/src/commands/sync.ts +7 -6
  190. package/src/index.ts +3 -18
  191. package/src/internal/NodeLayers.ts +1 -2
  192. package/src/internal/adfMetadata.ts +145 -0
  193. package/src/internal/cleanMarkdown.ts +15 -0
  194. package/src/internal/frontmatter.ts +45 -8
  195. package/src/internal/gitCommands.ts +23 -17
  196. package/src/internal/hashUtils.ts +2 -2
  197. package/src/internal/oauthServer.ts +84 -105
  198. package/src/internal/pathUtils.ts +1 -1
  199. package/src/internal/process.ts +15 -0
  200. package/src/internal/stdio.ts +22 -0
  201. package/src/internal/tokenStorage.ts +39 -29
  202. package/src/internal/userCache.ts +2 -2
  203. package/test/AdfPlaceholders.test.ts +508 -0
  204. package/test/AdfSchemaValidator.test.ts +34 -0
  205. package/test/AdfWalker.test.ts +676 -0
  206. package/test/AtlaskitTransformers.test.ts +25 -0
  207. package/test/Brand.test.ts +11 -11
  208. package/test/GitService.test.ts +6 -2
  209. package/test/MarkdownConverter.test.ts +121 -105
  210. package/test/RoundTrip.test.ts +521 -0
  211. package/test/Schemas.test.ts +40 -40
  212. package/test/adfMetadata.test.ts +110 -0
  213. package/test/cleanMarkdown.test.ts +36 -0
  214. package/test/commandHarness.test.ts +79 -0
  215. package/test/commandHarness.ts +147 -0
  216. package/test/fetch.test.ts +61 -0
  217. package/test/frontmatter.test.ts +41 -0
  218. package/test/integration.test.ts +569 -156
  219. package/test/layers.test.ts +12 -0
  220. package/test/oauthServer.test.ts +4 -5
  221. package/test/pageInput.test.ts +83 -0
  222. package/test/tokenStorage.test.ts +17 -17
  223. package/dist/SchemaConverterError.d.ts +0 -108
  224. package/dist/SchemaConverterError.d.ts.map +0 -1
  225. package/dist/SchemaConverterError.js +0 -84
  226. package/dist/SchemaConverterError.js.map +0 -1
  227. package/dist/ast/BlockNode.d.ts +0 -453
  228. package/dist/ast/BlockNode.d.ts.map +0 -1
  229. package/dist/ast/BlockNode.js +0 -310
  230. package/dist/ast/BlockNode.js.map +0 -1
  231. package/dist/ast/Document.d.ts +0 -216
  232. package/dist/ast/Document.d.ts.map +0 -1
  233. package/dist/ast/Document.js +0 -69
  234. package/dist/ast/Document.js.map +0 -1
  235. package/dist/ast/InlineNode.d.ts +0 -477
  236. package/dist/ast/InlineNode.d.ts.map +0 -1
  237. package/dist/ast/InlineNode.js +0 -263
  238. package/dist/ast/InlineNode.js.map +0 -1
  239. package/dist/ast/MacroNode.d.ts +0 -267
  240. package/dist/ast/MacroNode.d.ts.map +0 -1
  241. package/dist/ast/MacroNode.js +0 -164
  242. package/dist/ast/MacroNode.js.map +0 -1
  243. package/dist/ast/index.d.ts +0 -10
  244. package/dist/ast/index.d.ts.map +0 -1
  245. package/dist/ast/index.js +0 -14
  246. package/dist/ast/index.js.map +0 -1
  247. package/dist/parsers/ConfluenceParser.d.ts +0 -26
  248. package/dist/parsers/ConfluenceParser.d.ts.map +0 -1
  249. package/dist/parsers/ConfluenceParser.js +0 -797
  250. package/dist/parsers/ConfluenceParser.js.map +0 -1
  251. package/dist/parsers/MarkdownParser.d.ts +0 -26
  252. package/dist/parsers/MarkdownParser.d.ts.map +0 -1
  253. package/dist/parsers/MarkdownParser.js +0 -982
  254. package/dist/parsers/MarkdownParser.js.map +0 -1
  255. package/dist/parsers/index.d.ts +0 -8
  256. package/dist/parsers/index.d.ts.map +0 -1
  257. package/dist/parsers/index.js +0 -8
  258. package/dist/parsers/index.js.map +0 -1
  259. package/dist/schemas/ConfluenceSchema.d.ts +0 -21
  260. package/dist/schemas/ConfluenceSchema.d.ts.map +0 -1
  261. package/dist/schemas/ConfluenceSchema.js +0 -38
  262. package/dist/schemas/ConfluenceSchema.js.map +0 -1
  263. package/dist/schemas/ConversionSchema.d.ts +0 -35
  264. package/dist/schemas/ConversionSchema.d.ts.map +0 -1
  265. package/dist/schemas/ConversionSchema.js +0 -208
  266. package/dist/schemas/ConversionSchema.js.map +0 -1
  267. package/dist/schemas/MarkdownSchema.d.ts +0 -21
  268. package/dist/schemas/MarkdownSchema.d.ts.map +0 -1
  269. package/dist/schemas/MarkdownSchema.js +0 -38
  270. package/dist/schemas/MarkdownSchema.js.map +0 -1
  271. package/dist/schemas/hast/HastFromHtml.d.ts +0 -27
  272. package/dist/schemas/hast/HastFromHtml.d.ts.map +0 -1
  273. package/dist/schemas/hast/HastFromHtml.js +0 -107
  274. package/dist/schemas/hast/HastFromHtml.js.map +0 -1
  275. package/dist/schemas/hast/HastSchema.d.ts +0 -195
  276. package/dist/schemas/hast/HastSchema.d.ts.map +0 -1
  277. package/dist/schemas/hast/HastSchema.js +0 -183
  278. package/dist/schemas/hast/HastSchema.js.map +0 -1
  279. package/dist/schemas/hast/index.d.ts +0 -9
  280. package/dist/schemas/hast/index.d.ts.map +0 -1
  281. package/dist/schemas/hast/index.js +0 -3
  282. package/dist/schemas/hast/index.js.map +0 -1
  283. package/dist/schemas/index.d.ts +0 -14
  284. package/dist/schemas/index.d.ts.map +0 -1
  285. package/dist/schemas/index.js +0 -16
  286. package/dist/schemas/index.js.map +0 -1
  287. package/dist/schemas/mdast/MdastFromMarkdown.d.ts +0 -30
  288. package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +0 -1
  289. package/dist/schemas/mdast/MdastFromMarkdown.js +0 -79
  290. package/dist/schemas/mdast/MdastFromMarkdown.js.map +0 -1
  291. package/dist/schemas/mdast/MdastSchema.d.ts +0 -385
  292. package/dist/schemas/mdast/MdastSchema.d.ts.map +0 -1
  293. package/dist/schemas/mdast/MdastSchema.js +0 -266
  294. package/dist/schemas/mdast/MdastSchema.js.map +0 -1
  295. package/dist/schemas/mdast/index.d.ts +0 -10
  296. package/dist/schemas/mdast/index.d.ts.map +0 -1
  297. package/dist/schemas/mdast/index.js +0 -4
  298. package/dist/schemas/mdast/index.js.map +0 -1
  299. package/dist/schemas/mdast/mdastToString.d.ts +0 -13
  300. package/dist/schemas/mdast/mdastToString.d.ts.map +0 -1
  301. package/dist/schemas/mdast/mdastToString.js +0 -85
  302. package/dist/schemas/mdast/mdastToString.js.map +0 -1
  303. package/dist/schemas/nodes/block/BlockSchema.d.ts +0 -43
  304. package/dist/schemas/nodes/block/BlockSchema.d.ts.map +0 -1
  305. package/dist/schemas/nodes/block/BlockSchema.js +0 -634
  306. package/dist/schemas/nodes/block/BlockSchema.js.map +0 -1
  307. package/dist/schemas/nodes/block/index.d.ts +0 -7
  308. package/dist/schemas/nodes/block/index.d.ts.map +0 -1
  309. package/dist/schemas/nodes/block/index.js +0 -7
  310. package/dist/schemas/nodes/block/index.js.map +0 -1
  311. package/dist/schemas/nodes/index.d.ts +0 -9
  312. package/dist/schemas/nodes/index.d.ts.map +0 -1
  313. package/dist/schemas/nodes/index.js +0 -12
  314. package/dist/schemas/nodes/index.js.map +0 -1
  315. package/dist/schemas/nodes/inline/InlineSchema.d.ts +0 -48
  316. package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +0 -1
  317. package/dist/schemas/nodes/inline/InlineSchema.js +0 -436
  318. package/dist/schemas/nodes/inline/InlineSchema.js.map +0 -1
  319. package/dist/schemas/nodes/inline/index.d.ts +0 -7
  320. package/dist/schemas/nodes/inline/index.d.ts.map +0 -1
  321. package/dist/schemas/nodes/inline/index.js +0 -7
  322. package/dist/schemas/nodes/inline/index.js.map +0 -1
  323. package/dist/schemas/nodes/macro/MacroSchema.d.ts +0 -27
  324. package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +0 -1
  325. package/dist/schemas/nodes/macro/MacroSchema.js +0 -162
  326. package/dist/schemas/nodes/macro/MacroSchema.js.map +0 -1
  327. package/dist/schemas/nodes/macro/index.d.ts +0 -7
  328. package/dist/schemas/nodes/macro/index.d.ts.map +0 -1
  329. package/dist/schemas/nodes/macro/index.js +0 -7
  330. package/dist/schemas/nodes/macro/index.js.map +0 -1
  331. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +0 -24
  332. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +0 -1
  333. package/dist/schemas/preprocessing/ConfluencePreprocessor.js +0 -359
  334. package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +0 -1
  335. package/dist/schemas/preprocessing/index.d.ts +0 -8
  336. package/dist/schemas/preprocessing/index.d.ts.map +0 -1
  337. package/dist/schemas/preprocessing/index.js +0 -2
  338. package/dist/schemas/preprocessing/index.js.map +0 -1
  339. package/dist/serializers/ConfluenceSerializer.d.ts +0 -30
  340. package/dist/serializers/ConfluenceSerializer.d.ts.map +0 -1
  341. package/dist/serializers/ConfluenceSerializer.js +0 -560
  342. package/dist/serializers/ConfluenceSerializer.js.map +0 -1
  343. package/dist/serializers/MarkdownSerializer.d.ts +0 -34
  344. package/dist/serializers/MarkdownSerializer.d.ts.map +0 -1
  345. package/dist/serializers/MarkdownSerializer.js +0 -395
  346. package/dist/serializers/MarkdownSerializer.js.map +0 -1
  347. package/dist/serializers/index.d.ts +0 -8
  348. package/dist/serializers/index.d.ts.map +0 -1
  349. package/dist/serializers/index.js +0 -8
  350. package/dist/serializers/index.js.map +0 -1
  351. package/src/SchemaConverterError.ts +0 -108
  352. package/src/ast/BlockNode.ts +0 -469
  353. package/src/ast/Document.ts +0 -90
  354. package/src/ast/InlineNode.ts +0 -323
  355. package/src/ast/MacroNode.ts +0 -245
  356. package/src/ast/index.ts +0 -83
  357. package/src/parsers/ConfluenceParser.ts +0 -956
  358. package/src/parsers/MarkdownParser.ts +0 -1338
  359. package/src/parsers/index.ts +0 -8
  360. package/src/schemas/ConfluenceSchema.ts +0 -56
  361. package/src/schemas/ConversionSchema.ts +0 -318
  362. package/src/schemas/MarkdownSchema.ts +0 -56
  363. package/src/schemas/hast/HastFromHtml.ts +0 -153
  364. package/src/schemas/hast/HastSchema.ts +0 -274
  365. package/src/schemas/hast/index.ts +0 -35
  366. package/src/schemas/index.ts +0 -20
  367. package/src/schemas/mdast/MdastFromMarkdown.ts +0 -118
  368. package/src/schemas/mdast/MdastSchema.ts +0 -566
  369. package/src/schemas/mdast/index.ts +0 -59
  370. package/src/schemas/mdast/mdastToString.ts +0 -102
  371. package/src/schemas/nodes/block/BlockSchema.ts +0 -773
  372. package/src/schemas/nodes/block/index.ts +0 -13
  373. package/src/schemas/nodes/index.ts +0 -20
  374. package/src/schemas/nodes/inline/InlineSchema.ts +0 -523
  375. package/src/schemas/nodes/inline/index.ts +0 -14
  376. package/src/schemas/nodes/macro/MacroSchema.ts +0 -226
  377. package/src/schemas/nodes/macro/index.ts +0 -6
  378. package/src/schemas/preprocessing/ConfluencePreprocessor.ts +0 -455
  379. package/src/schemas/preprocessing/index.ts +0 -8
  380. package/src/serializers/ConfluenceSerializer.ts +0 -737
  381. package/src/serializers/MarkdownSerializer.ts +0 -543
  382. package/src/serializers/index.ts +0 -8
  383. package/test/ast/BlockNode.test.ts +0 -265
  384. package/test/ast/Document.test.ts +0 -126
  385. package/test/ast/InlineNode.test.ts +0 -161
  386. package/test/fixtures/integration-test.html.fixture +0 -103
  387. package/test/fixtures/integration-test.md.expected +0 -257
  388. package/test/parsers/ConfluenceParser.test.ts +0 -452
  389. package/test/schemas/ConfluencePreprocessor.test.ts +0 -180
  390. package/test/schemas/ConversionSchema.test.ts +0 -159
  391. package/test/schemas/HastSchema.test.ts +0 -138
  392. package/test/schemas/MdastSchema.test.ts +0 -145
  393. package/test/schemas/nodes/block/BlockSchema.test.ts +0 -173
  394. package/test/schemas/nodes/inline/InlineSchema.test.ts +0 -198
  395. package/test/schemas/nodes/macro/MacroSchema.test.ts +0 -142
@@ -1,469 +0,0 @@
1
- /**
2
- * Block-level AST node types for structural content.
3
- *
4
- * @module
5
- */
6
- import * as Schema from "effect/Schema"
7
- import { InlineNode, type InlineNode as InlineNodeType } from "./InlineNode.js"
8
-
9
- /**
10
- * Schema version for migration support.
11
- *
12
- * @category Version
13
- */
14
- export const SchemaVersion = Schema.Number.pipe(
15
- Schema.int(),
16
- Schema.positive(),
17
- Schema.optionalWith({ default: () => 1 })
18
- )
19
-
20
- /**
21
- * Optional raw Confluence HTML for exact roundtrip preservation.
22
- * When present, the Confluence serializer will output this instead of reconstructing.
23
- *
24
- * @category BlockNode
25
- */
26
- export const RawConfluence = Schema.optional(Schema.String)
27
-
28
- /**
29
- * Heading element (h1-h6).
30
- *
31
- * @example
32
- * ```typescript
33
- * import { Heading, Text } from "@knpkv/confluence-to-markdown/ast"
34
- *
35
- * const h1 = new Heading({
36
- * level: 1,
37
- * children: [new Text({ value: "Introduction" })]
38
- * })
39
- * ```
40
- *
41
- * @category BlockNode
42
- */
43
- export class Heading extends Schema.TaggedClass<Heading>()("Heading", {
44
- version: SchemaVersion,
45
- level: Schema.Literal(1, 2, 3, 4, 5, 6),
46
- children: Schema.Array(InlineNode),
47
- rawConfluence: RawConfluence
48
- }) {}
49
-
50
- /**
51
- * Text alignment options.
52
- *
53
- * @category BlockNode
54
- */
55
- export const TextAlignment = Schema.Literal("left", "center", "right")
56
-
57
- /**
58
- * Type for TextAlignment.
59
- *
60
- * @category Types
61
- */
62
- export type TextAlignment = Schema.Schema.Type<typeof TextAlignment>
63
-
64
- /**
65
- * Paragraph element with optional alignment and indentation.
66
- *
67
- * @example
68
- * ```typescript
69
- * import { Paragraph, Text } from "@knpkv/confluence-to-markdown/ast"
70
- *
71
- * const para = new Paragraph({
72
- * children: [new Text({ value: "Hello world" })]
73
- * })
74
- *
75
- * // With alignment
76
- * const centered = new Paragraph({
77
- * alignment: "center",
78
- * children: [new Text({ value: "Centered text" })]
79
- * })
80
- *
81
- * // With indentation (in pixels)
82
- * const indented = new Paragraph({
83
- * indent: 30,
84
- * children: [new Text({ value: "Indented text" })]
85
- * })
86
- * ```
87
- *
88
- * @category BlockNode
89
- */
90
- export class Paragraph extends Schema.TaggedClass<Paragraph>()("Paragraph", {
91
- version: SchemaVersion,
92
- alignment: Schema.optional(TextAlignment),
93
- indent: Schema.optional(Schema.Number),
94
- children: Schema.Array(InlineNode),
95
- rawConfluence: RawConfluence
96
- }) {}
97
-
98
- /**
99
- * Code block with optional language.
100
- *
101
- * @example
102
- * ```typescript
103
- * import { CodeBlock } from "@knpkv/confluence-to-markdown/ast"
104
- *
105
- * const code = new CodeBlock({
106
- * language: "typescript",
107
- * code: "const x = 1"
108
- * })
109
- * ```
110
- *
111
- * @category BlockNode
112
- */
113
- export class CodeBlock extends Schema.TaggedClass<CodeBlock>()("CodeBlock", {
114
- version: SchemaVersion,
115
- language: Schema.optional(Schema.String),
116
- code: Schema.String,
117
- rawConfluence: RawConfluence
118
- }) {}
119
-
120
- /**
121
- * Thematic break / horizontal rule.
122
- *
123
- * @example
124
- * ```typescript
125
- * import { ThematicBreak } from "@knpkv/confluence-to-markdown/ast"
126
- *
127
- * const hr = new ThematicBreak({})
128
- * ```
129
- *
130
- * @category BlockNode
131
- */
132
- export class ThematicBreak extends Schema.TaggedClass<ThematicBreak>()("ThematicBreak", {
133
- rawConfluence: RawConfluence
134
- }) {}
135
-
136
- /**
137
- * Attachment reference for images stored in Confluence.
138
- *
139
- * @category BlockNode
140
- */
141
- export const ImageAttachment = Schema.Struct({
142
- filename: Schema.String,
143
- version: Schema.optional(Schema.Number)
144
- })
145
-
146
- /**
147
- * Type for ImageAttachment.
148
- *
149
- * @category Types
150
- */
151
- export type ImageAttachment = Schema.Schema.Type<typeof ImageAttachment>
152
-
153
- /**
154
- * Image element with support for both URL and Confluence attachments.
155
- *
156
- * @example
157
- * ```typescript
158
- * import { Image } from "@knpkv/confluence-to-markdown/ast"
159
- *
160
- * // URL-based image
161
- * const img = new Image({
162
- * src: "https://example.com/image.png",
163
- * alt: "Example image"
164
- * })
165
- *
166
- * // Confluence attachment
167
- * const attachment = new Image({
168
- * attachment: { filename: "logo.svg" },
169
- * align: "center",
170
- * width: 250
171
- * })
172
- * ```
173
- *
174
- * @category BlockNode
175
- */
176
- export class Image extends Schema.TaggedClass<Image>()("Image", {
177
- version: SchemaVersion,
178
- src: Schema.optional(Schema.String),
179
- attachment: Schema.optional(ImageAttachment),
180
- alt: Schema.optional(Schema.String),
181
- title: Schema.optional(Schema.String),
182
- align: Schema.optional(Schema.String),
183
- width: Schema.optional(Schema.Number),
184
- rawConfluence: RawConfluence
185
- }) {}
186
-
187
- /**
188
- * Table cell element.
189
- *
190
- * @example
191
- * ```typescript
192
- * import { TableCell, Text } from "@knpkv/confluence-to-markdown/ast"
193
- *
194
- * const cell = new TableCell({
195
- * isHeader: true,
196
- * children: [new Text({ value: "Header" })]
197
- * })
198
- * ```
199
- *
200
- * @category BlockNode
201
- */
202
- export class TableCell extends Schema.TaggedClass<TableCell>()("TableCell", {
203
- isHeader: Schema.optionalWith(Schema.Boolean, { default: () => false }),
204
- children: Schema.Array(InlineNode),
205
- rawConfluence: RawConfluence
206
- }) {}
207
-
208
- /**
209
- * Table row element.
210
- *
211
- * @example
212
- * ```typescript
213
- * import { TableRow, TableCell, Text } from "@knpkv/confluence-to-markdown/ast"
214
- *
215
- * const row = new TableRow({
216
- * cells: [
217
- * new TableCell({ children: [new Text({ value: "A" })] }),
218
- * new TableCell({ children: [new Text({ value: "B" })] })
219
- * ]
220
- * })
221
- * ```
222
- *
223
- * @category BlockNode
224
- */
225
- export class TableRow extends Schema.TaggedClass<TableRow>()("TableRow", {
226
- cells: Schema.Array(TableCell),
227
- rawConfluence: RawConfluence
228
- }) {}
229
-
230
- /**
231
- * Table element with optional header row.
232
- *
233
- * @example
234
- * ```typescript
235
- * import { Table, TableRow, TableCell, Text } from "@knpkv/confluence-to-markdown/ast"
236
- *
237
- * const table = new Table({
238
- * header: new TableRow({
239
- * cells: [new TableCell({ isHeader: true, children: [new Text({ value: "Col" })] })]
240
- * }),
241
- * rows: []
242
- * })
243
- * ```
244
- *
245
- * @category BlockNode
246
- */
247
- export class Table extends Schema.TaggedClass<Table>()("Table", {
248
- version: SchemaVersion,
249
- header: Schema.optional(TableRow),
250
- rows: Schema.Array(TableRow),
251
- rawConfluence: RawConfluence
252
- }) {}
253
-
254
- /**
255
- * Unsupported block element - preserves raw content for round-tripping.
256
- *
257
- * @example
258
- * ```typescript
259
- * import { UnsupportedBlock } from "@knpkv/confluence-to-markdown/ast"
260
- *
261
- * const unknown = new UnsupportedBlock({
262
- * rawHtml: "<custom-block>content</custom-block>",
263
- * source: "confluence"
264
- * })
265
- * ```
266
- *
267
- * @category BlockNode
268
- */
269
- export class UnsupportedBlock extends Schema.TaggedClass<UnsupportedBlock>()("UnsupportedBlock", {
270
- rawHtml: Schema.optional(Schema.String),
271
- rawMarkdown: Schema.optional(Schema.String),
272
- source: Schema.Literal("confluence", "markdown")
273
- }) {}
274
-
275
- // Non-recursive block nodes
276
- const SimpleBlockNode = Schema.Union(
277
- Heading,
278
- Paragraph,
279
- CodeBlock,
280
- ThematicBreak,
281
- Image,
282
- Table,
283
- UnsupportedBlock
284
- )
285
-
286
- /**
287
- * Block quote element with nested block content.
288
- *
289
- * @category BlockNode
290
- */
291
- export const BlockQuote = Schema.Struct({
292
- _tag: Schema.Literal("BlockQuote"),
293
- version: SchemaVersion,
294
- children: Schema.Array(SimpleBlockNode),
295
- rawConfluence: RawConfluence
296
- })
297
-
298
- /**
299
- * Type for BlockQuote.
300
- *
301
- * @category Types
302
- */
303
- export type BlockQuote = Schema.Schema.Type<typeof BlockQuote>
304
-
305
- /**
306
- * List item with nested block content.
307
- *
308
- * Children may include any simple block as well as nested {@link List} elements.
309
- *
310
- * @category BlockNode
311
- */
312
- export interface ListItem {
313
- readonly _tag: "ListItem"
314
- readonly checked?: boolean | undefined
315
- readonly children: ReadonlyArray<
316
- Heading | Paragraph | CodeBlock | ThematicBreak | Image | Table | UnsupportedBlock | List
317
- >
318
- readonly rawConfluence?: string | undefined
319
- }
320
-
321
- /**
322
- * List element (ordered or unordered).
323
- *
324
- * @category BlockNode
325
- */
326
- export interface List {
327
- readonly _tag: "List"
328
- readonly version: number
329
- readonly ordered: boolean
330
- readonly start?: number | undefined
331
- readonly children: ReadonlyArray<ListItem>
332
- readonly rawConfluence?: string | undefined
333
- }
334
-
335
- // Encoded shapes (input to decode): `version` is optional via SchemaVersion's
336
- // optionalWith({ default }), and the recursive cycle is List → ListItem → List.
337
- export interface ListEncoded {
338
- readonly _tag: "List"
339
- readonly version?: number | undefined
340
- readonly ordered: boolean
341
- readonly start?: number | undefined
342
- readonly children: ReadonlyArray<ListItemEncoded>
343
- readonly rawConfluence?: string | undefined
344
- }
345
-
346
- export interface ListItemEncoded {
347
- readonly _tag: "ListItem"
348
- readonly checked?: boolean | undefined
349
- readonly children: ReadonlyArray<
350
- | Schema.Schema.Encoded<typeof Heading>
351
- | Schema.Schema.Encoded<typeof Paragraph>
352
- | Schema.Schema.Encoded<typeof CodeBlock>
353
- | Schema.Schema.Encoded<typeof ThematicBreak>
354
- | Schema.Schema.Encoded<typeof Image>
355
- | Schema.Schema.Encoded<typeof Table>
356
- | Schema.Schema.Encoded<typeof UnsupportedBlock>
357
- | ListEncoded
358
- >
359
- readonly rawConfluence?: string | undefined
360
- }
361
-
362
- const ListItemChild = Schema.Union(
363
- Heading,
364
- Paragraph,
365
- CodeBlock,
366
- ThematicBreak,
367
- Image,
368
- Table,
369
- UnsupportedBlock,
370
- Schema.suspend((): Schema.Schema<List, ListEncoded> => List)
371
- )
372
-
373
- export const ListItem: Schema.Schema<ListItem, ListItemEncoded> = Schema.Struct({
374
- _tag: Schema.Literal("ListItem"),
375
- checked: Schema.optional(Schema.Boolean),
376
- children: Schema.Array(ListItemChild),
377
- rawConfluence: RawConfluence
378
- })
379
-
380
- export const List: Schema.Schema<List, ListEncoded> = Schema.Struct({
381
- _tag: Schema.Literal("List"),
382
- version: SchemaVersion,
383
- ordered: Schema.Boolean,
384
- start: Schema.optional(Schema.Number),
385
- children: Schema.Array(ListItem),
386
- rawConfluence: RawConfluence
387
- })
388
-
389
- /**
390
- * Task item with status for Confluence task lists.
391
- *
392
- * @category BlockNode
393
- */
394
- export const TaskItem = Schema.Struct({
395
- _tag: Schema.Literal("TaskItem"),
396
- id: Schema.String,
397
- uuid: Schema.String,
398
- status: Schema.Literal("incomplete", "complete"),
399
- body: Schema.Array(InlineNode),
400
- rawConfluence: RawConfluence
401
- })
402
-
403
- /**
404
- * Type for TaskItem.
405
- *
406
- * @category Types
407
- */
408
- export type TaskItem = Schema.Schema.Type<typeof TaskItem>
409
-
410
- /**
411
- * Task list (Confluence action items).
412
- *
413
- * @category BlockNode
414
- */
415
- export const TaskList = Schema.Struct({
416
- _tag: Schema.Literal("TaskList"),
417
- version: SchemaVersion,
418
- children: Schema.Array(TaskItem),
419
- rawConfluence: RawConfluence
420
- })
421
-
422
- /**
423
- * Type for TaskList.
424
- *
425
- * @category Types
426
- */
427
- export type TaskList = Schema.Schema.Type<typeof TaskList>
428
-
429
- /**
430
- * Union of all block node types.
431
- *
432
- * @category BlockNode
433
- */
434
- export const BlockNode = Schema.Union(
435
- Heading,
436
- Paragraph,
437
- CodeBlock,
438
- ThematicBreak,
439
- BlockQuote,
440
- Image,
441
- Table,
442
- List,
443
- TaskList,
444
- UnsupportedBlock
445
- )
446
-
447
- /**
448
- * Type for block nodes.
449
- *
450
- * @category Types
451
- */
452
- export type BlockNode =
453
- | Heading
454
- | Paragraph
455
- | CodeBlock
456
- | ThematicBreak
457
- | BlockQuote
458
- | Image
459
- | Table
460
- | List
461
- | TaskList
462
- | UnsupportedBlock
463
-
464
- /**
465
- * Type helper for inline node children in blocks.
466
- *
467
- * @category Types
468
- */
469
- export type { InlineNodeType as InlineNode }
@@ -1,90 +0,0 @@
1
- /**
2
- * Document AST node - the root of the AST tree.
3
- *
4
- * @module
5
- */
6
- import * as Schema from "effect/Schema"
7
- import { BlockNode, type BlockNode as BlockNodeType, RawConfluence, SchemaVersion } from "./BlockNode.js"
8
- import { MacroNode, type MacroNode as MacroNodeType } from "./MacroNode.js"
9
-
10
- /**
11
- * Document node - represents a Block or Macro node.
12
- *
13
- * @category Document
14
- */
15
- export const DocumentNode = Schema.Union(BlockNode, MacroNode)
16
-
17
- /**
18
- * Type for document nodes.
19
- *
20
- * @category Types
21
- */
22
- export type DocumentNode = BlockNodeType | MacroNodeType
23
-
24
- /**
25
- * Document schema - the root AST node.
26
- *
27
- * @example
28
- * ```typescript
29
- * import { Document, Heading, Paragraph, Text } from "@knpkv/confluence-to-markdown/ast"
30
- * import * as Schema from "effect/Schema"
31
- *
32
- * const doc = {
33
- * version: 1,
34
- * children: [
35
- * new Heading({ level: 1, children: [new Text({ value: "Title" })] }),
36
- * new Paragraph({ children: [new Text({ value: "Content" })] })
37
- * ]
38
- * }
39
- *
40
- * const validated = Schema.decodeUnknownSync(Document)(doc)
41
- * ```
42
- *
43
- * @category Document
44
- */
45
- export const Document = Schema.Struct({
46
- version: SchemaVersion,
47
- children: Schema.Array(DocumentNode),
48
- rawConfluence: RawConfluence
49
- })
50
-
51
- /**
52
- * Type for Document.
53
- *
54
- * @category Types
55
- */
56
- export type Document = Schema.Schema.Type<typeof Document>
57
-
58
- /**
59
- * Create a new Document with default version.
60
- *
61
- * @example
62
- * ```typescript
63
- * import { makeDocument, Heading, Text } from "@knpkv/confluence-to-markdown/ast"
64
- *
65
- * const doc = makeDocument([
66
- * new Heading({ level: 1, children: [new Text({ value: "Hello" })] })
67
- * ])
68
- * ```
69
- *
70
- * @category Constructors
71
- */
72
- export const makeDocument = (
73
- children: ReadonlyArray<DocumentNode>,
74
- rawConfluence?: string
75
- ): Document => ({
76
- version: 1,
77
- children,
78
- ...(rawConfluence !== undefined ? { rawConfluence } : {})
79
- })
80
-
81
- /**
82
- * Check if a node is a Document.
83
- *
84
- * @category Guards
85
- */
86
- export const isDocument = (value: unknown): value is Document =>
87
- typeof value === "object" &&
88
- value !== null &&
89
- "children" in value &&
90
- Array.isArray((value as Document).children)