@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,634 +0,0 @@
1
- /**
2
- * Transform schemas for block nodes (Hast <-> AST <-> Mdast).
3
- *
4
- * Provides bidirectional transforms between HAST elements, AST block nodes,
5
- * and MDAST block content for structural document elements.
6
- *
7
- * @module
8
- */
9
- import * as Effect from "effect/Effect";
10
- import * as ParseResult from "effect/ParseResult";
11
- import * as Schema from "effect/Schema";
12
- import { CodeBlock, Heading, Image, Paragraph, Table, TableCell, TableRow, ThematicBreak, UnsupportedBlock } from "../../../ast/BlockNode.js";
13
- import { getTextContent, isHastElement, isHastText, makeHastElement, makeHastText } from "../../hast/index.js";
14
- import { makeMdastCode, makeMdastHeading, makeMdastParagraph } from "../../mdast/index.js";
15
- import { inlineNodeFromHastElement, inlineNodeToHast, inlineNodeToMdast, textFromHastText } from "../inline/index.js";
16
- /**
17
- * Parse HAST children to inline nodes.
18
- */
19
- const parseHastChildrenToInline = (children) => Effect.gen(function* () {
20
- const nodes = [];
21
- const parseChildren = (c) => parseHastChildrenToInline(c);
22
- for (const child of children) {
23
- if (isHastText(child)) {
24
- if (child.value.trim() || nodes.length > 0) {
25
- nodes.push(textFromHastText(child));
26
- }
27
- }
28
- else if (isHastElement(child)) {
29
- const node = yield* inlineNodeFromHastElement(child, parseChildren);
30
- if (node)
31
- nodes.push(node);
32
- }
33
- }
34
- return nodes;
35
- });
36
- /**
37
- * Convert HAST element to AST block node.
38
- */
39
- export const blockNodeFromHastElement = (element) => Effect.gen(function* () {
40
- const tagName = element.tagName.toLowerCase();
41
- // Heading
42
- if (/^h[1-6]$/.test(tagName)) {
43
- const levelStr = tagName[1];
44
- if (!levelStr)
45
- return null;
46
- const level = parseInt(levelStr);
47
- const children = yield* parseHastChildrenToInline(element.children);
48
- return new Heading({ level, children });
49
- }
50
- // Paragraph
51
- if (tagName === "p") {
52
- const children = yield* parseHastChildrenToInline(element.children);
53
- const style = element.properties?.style;
54
- let alignment;
55
- let indent;
56
- if (style) {
57
- const alignMatch = style.match(/text-align:\s*(left|center|right)/);
58
- if (alignMatch?.[1]) {
59
- alignment = alignMatch[1];
60
- }
61
- const marginMatch = style.match(/margin-left:\s*(\d+(?:\.\d+)?)\s*px/);
62
- if (marginMatch?.[1]) {
63
- indent = parseFloat(marginMatch[1]);
64
- }
65
- }
66
- if (alignment !== undefined || indent !== undefined) {
67
- return new Paragraph({
68
- children,
69
- ...(alignment !== undefined ? { alignment } : {}),
70
- ...(indent !== undefined ? { indent } : {})
71
- });
72
- }
73
- return new Paragraph({ children });
74
- }
75
- // Code block
76
- if (tagName === "pre") {
77
- const codeEl = element.children.find((c) => isHastElement(c) && c.tagName === "code");
78
- const code = codeEl ? getTextContent(codeEl) : getTextContent(element);
79
- const language = element.properties?.["dataLanguage"] || undefined;
80
- return new CodeBlock({ code, language });
81
- }
82
- // Thematic break
83
- if (tagName === "hr") {
84
- return new ThematicBreak({});
85
- }
86
- // Image
87
- if (tagName === "img") {
88
- const src = element.properties?.src;
89
- const dataAttachment = element.properties?.["dataAttachment"];
90
- const dataAlign = element.properties?.["dataAlign"];
91
- const dataWidth = element.properties?.["dataWidth"];
92
- const alt = element.properties?.alt || undefined;
93
- if (dataAttachment) {
94
- return new Image({
95
- attachment: { filename: dataAttachment },
96
- alt,
97
- ...(dataAlign ? { align: dataAlign } : {}),
98
- ...(dataWidth ? { width: parseInt(dataWidth) } : {})
99
- });
100
- }
101
- if (!src)
102
- return null;
103
- return new Image({
104
- src,
105
- alt,
106
- title: element.properties?.title || undefined
107
- });
108
- }
109
- // Table
110
- if (tagName === "table") {
111
- return yield* parseTable(element);
112
- }
113
- // Task list
114
- if (tagName === "ul" && element.properties?.["dataMacro"] === "task-list") {
115
- return yield* parseTaskList(element);
116
- }
117
- // Lists
118
- if (tagName === "ul" || tagName === "ol") {
119
- return yield* parseList(element, tagName === "ol");
120
- }
121
- // Block quote
122
- if (tagName === "blockquote") {
123
- const children = yield* parseHastChildrenToSimpleBlocks(element.children);
124
- return {
125
- _tag: "BlockQuote",
126
- version: 1,
127
- children
128
- };
129
- }
130
- // Unknown block element
131
- return new UnsupportedBlock({
132
- rawHtml: hastElementToHtml(element),
133
- source: "confluence"
134
- });
135
- });
136
- /**
137
- * Convert AST block node to HAST element.
138
- */
139
- export const blockNodeToHast = (node) => {
140
- switch (node._tag) {
141
- case "Heading":
142
- return makeHastElement(`h${node.level}`, {}, node.children.map(inlineNodeToHast));
143
- case "Paragraph": {
144
- const style = [
145
- node.alignment ? `text-align: ${node.alignment}` : "",
146
- node.indent ? `margin-left: ${node.indent}px` : ""
147
- ].filter(Boolean).join("; ");
148
- return makeHastElement("p", style ? { style } : {}, node.children.map(inlineNodeToHast));
149
- }
150
- case "CodeBlock":
151
- return makeHastElement("pre", node.language ? { dataLanguage: node.language } : {}, [makeHastElement("code", {}, [makeHastText(node.code)])]);
152
- case "ThematicBreak":
153
- return makeHastElement("hr");
154
- case "Image":
155
- if (node.attachment) {
156
- return makeHastElement("img", {
157
- dataAttachment: node.attachment.filename,
158
- ...(node.alt ? { alt: node.alt } : {}),
159
- ...(node.align ? { dataAlign: node.align } : {}),
160
- ...(node.width ? { dataWidth: String(node.width) } : {})
161
- });
162
- }
163
- return makeHastElement("img", {
164
- src: node.src ?? "",
165
- ...(node.alt ? { alt: node.alt } : {}),
166
- ...(node.title ? { title: node.title } : {})
167
- });
168
- case "Table":
169
- return tableToHast(node);
170
- case "BlockQuote":
171
- return makeHastElement("blockquote", {}, node.children.map(blockNodeToHast));
172
- case "List":
173
- return listToHast(node);
174
- case "TaskList":
175
- return taskListToHast(node);
176
- case "UnsupportedBlock":
177
- return makeHastElement("div", { dangerouslySetInnerHTML: node.rawHtml ?? node.rawMarkdown ?? "" });
178
- }
179
- };
180
- /**
181
- * Convert AST block node to MDAST block content.
182
- */
183
- export const blockNodeToMdast = (node) => {
184
- switch (node._tag) {
185
- case "Heading":
186
- return makeMdastHeading(node.level, node.children.map(inlineNodeToMdast));
187
- case "Paragraph":
188
- return makeMdastParagraph(node.children.map(inlineNodeToMdast));
189
- case "CodeBlock":
190
- return makeMdastCode(node.code, node.language);
191
- case "ThematicBreak":
192
- return { type: "thematicBreak" };
193
- case "Image":
194
- // MDAST doesn't have block images at root - wrap in paragraph
195
- return makeMdastParagraph([{
196
- type: "image",
197
- url: node.src ?? node.attachment?.filename ?? "",
198
- alt: node.alt ?? null,
199
- title: node.title ?? null
200
- }]);
201
- case "Table":
202
- return tableToMdast(node);
203
- case "BlockQuote":
204
- return {
205
- type: "blockquote",
206
- children: node.children.map(blockNodeToMdast)
207
- };
208
- case "List":
209
- return listToMdast(node);
210
- case "TaskList":
211
- // Convert to list with checkboxes
212
- return {
213
- type: "list",
214
- ordered: false,
215
- children: node.children.map((item) => ({
216
- type: "listItem",
217
- checked: item.status === "complete",
218
- children: [{
219
- type: "paragraph",
220
- children: item.body.map(inlineNodeToMdast)
221
- }]
222
- }))
223
- };
224
- case "UnsupportedBlock":
225
- return {
226
- type: "html",
227
- value: node.rawHtml ?? node.rawMarkdown ?? ""
228
- };
229
- }
230
- };
231
- /**
232
- * Convert MDAST block content to AST block node.
233
- */
234
- export const blockNodeFromMdast = (node) => {
235
- switch (node.type) {
236
- case "heading":
237
- return new Heading({
238
- level: node.depth,
239
- children: [] // Would need full inline conversion
240
- });
241
- case "paragraph":
242
- return new Paragraph({ children: [] });
243
- case "code":
244
- return new CodeBlock({ code: node.value, language: node.lang });
245
- case "thematicBreak":
246
- return new ThematicBreak({});
247
- case "blockquote":
248
- return {
249
- _tag: "BlockQuote",
250
- version: 1,
251
- children: node.children.map(blockNodeFromMdast)
252
- };
253
- case "list":
254
- return {
255
- _tag: "List",
256
- version: 1,
257
- ordered: node.ordered ?? false,
258
- start: node.start,
259
- children: node.children.map((item) => ({
260
- _tag: "ListItem",
261
- checked: item.checked ?? undefined,
262
- children: [] // Would need full block conversion
263
- }))
264
- };
265
- case "table":
266
- return new Table({ rows: [] });
267
- case "html":
268
- return new UnsupportedBlock({ rawMarkdown: node.value, source: "markdown" });
269
- default:
270
- return new UnsupportedBlock({ rawMarkdown: JSON.stringify(node), source: "markdown" });
271
- }
272
- };
273
- // Helper functions
274
- /**
275
- * Parse table element.
276
- */
277
- const parseTable = (element) => Effect.gen(function* () {
278
- let header;
279
- const rows = [];
280
- for (const child of element.children) {
281
- if (!isHastElement(child))
282
- continue;
283
- if (child.tagName === "thead") {
284
- const tr = child.children.find((c) => isHastElement(c) && c.tagName === "tr");
285
- if (tr) {
286
- header = yield* parseTableRow(tr, true);
287
- }
288
- }
289
- else if (child.tagName === "tbody") {
290
- for (const row of child.children) {
291
- if (isHastElement(row) && row.tagName === "tr") {
292
- const allTh = row.children
293
- .filter(isHastElement)
294
- .every((c) => c.tagName === "th");
295
- if (allTh && !header && rows.length === 0) {
296
- header = yield* parseTableRow(row, true);
297
- }
298
- else {
299
- rows.push(yield* parseTableRow(row, false));
300
- }
301
- }
302
- }
303
- }
304
- else if (child.tagName === "tr") {
305
- rows.push(yield* parseTableRow(child, false));
306
- }
307
- }
308
- return new Table({ header, rows });
309
- });
310
- /**
311
- * Parse table row.
312
- */
313
- const parseTableRow = (element, isHeader) => Effect.gen(function* () {
314
- const cells = [];
315
- for (const child of element.children) {
316
- if (isHastElement(child) && (child.tagName === "td" || child.tagName === "th")) {
317
- const cellIsHeader = isHeader || child.tagName === "th";
318
- const children = yield* parseCellContent(child.children);
319
- cells.push(new TableCell({ isHeader: cellIsHeader, children }));
320
- }
321
- }
322
- return new TableRow({ cells });
323
- });
324
- /**
325
- * Parse cell content, unwrapping single <p> elements.
326
- */
327
- const parseCellContent = (children) => Effect.gen(function* () {
328
- const elementChildren = children.filter((c) => {
329
- if (isHastElement(c))
330
- return true;
331
- if (isHastText(c) && c.value.trim())
332
- return true;
333
- return false;
334
- });
335
- if (elementChildren.length === 1) {
336
- const first = elementChildren[0];
337
- if (first && isHastElement(first) && first.tagName === "p") {
338
- return yield* parseHastChildrenToInline(first.children);
339
- }
340
- }
341
- return yield* parseHastChildrenToInline(children);
342
- });
343
- /**
344
- * Parse task list element.
345
- */
346
- const parseTaskList = (element) => Effect.gen(function* () {
347
- const items = [];
348
- for (const child of element.children) {
349
- if (isHastElement(child) && child.tagName === "li") {
350
- const id = child.properties?.["dataTaskId"] || "";
351
- const uuid = child.properties?.["dataTaskUuid"] || "";
352
- const status = child.properties?.["dataTaskStatus"] === "complete"
353
- ? "complete"
354
- : "incomplete";
355
- const body = yield* parseHastChildrenToInline(child.children);
356
- items.push({
357
- _tag: "TaskItem",
358
- id,
359
- uuid,
360
- status,
361
- body
362
- });
363
- }
364
- }
365
- return {
366
- _tag: "TaskList",
367
- version: 1,
368
- children: items
369
- };
370
- });
371
- /**
372
- * Parse list element.
373
- */
374
- const parseList = (element, ordered) => Effect.gen(function* () {
375
- const items = [];
376
- const startProp = element.properties?.start;
377
- const start = ordered && startProp ? parseInt(String(startProp)) : undefined;
378
- for (const child of element.children) {
379
- if (isHastElement(child) && child.tagName === "li") {
380
- const children = yield* parseListItemContent(child.children);
381
- const checkbox = child.children.find((c) => isHastElement(c) &&
382
- c.tagName === "input" &&
383
- c.properties?.type === "checkbox");
384
- const checked = checkbox ? (checkbox.properties?.checked === true) : undefined;
385
- if (checked !== undefined) {
386
- items.push({ _tag: "ListItem", checked, children });
387
- }
388
- else {
389
- items.push({ _tag: "ListItem", children });
390
- }
391
- }
392
- }
393
- if (start !== undefined) {
394
- return { _tag: "List", version: 1, ordered, start, children: items };
395
- }
396
- return { _tag: "List", version: 1, ordered, children: items };
397
- });
398
- /**
399
- * Parse HAST children to simple block nodes.
400
- */
401
- const parseHastChildrenToSimpleBlocks = (children) => Effect.gen(function* () {
402
- const blocks = [];
403
- for (const child of children) {
404
- if (isHastElement(child)) {
405
- const tagName = child.tagName.toLowerCase();
406
- if (/^h[1-6]$/.test(tagName)) {
407
- const levelStr = tagName[1];
408
- if (levelStr) {
409
- const level = parseInt(levelStr);
410
- const inlineChildren = yield* parseHastChildrenToInline(child.children);
411
- blocks.push(new Heading({ level, children: inlineChildren }));
412
- }
413
- }
414
- else if (tagName === "p") {
415
- const inlineChildren = yield* parseHastChildrenToInline(child.children);
416
- blocks.push(new Paragraph({ children: inlineChildren }));
417
- }
418
- else if (tagName === "pre") {
419
- const codeEl = child.children.find((c) => isHastElement(c) && c.tagName === "code");
420
- const code = codeEl ? getTextContent(codeEl) : getTextContent(child);
421
- blocks.push(new CodeBlock({ code }));
422
- }
423
- else if (tagName === "hr") {
424
- blocks.push(new ThematicBreak({}));
425
- }
426
- else if (tagName === "img") {
427
- const src = child.properties?.src;
428
- if (src)
429
- blocks.push(new Image({ src }));
430
- }
431
- else if (tagName === "table") {
432
- blocks.push(yield* parseTable(child));
433
- }
434
- else {
435
- blocks.push(new UnsupportedBlock({ rawHtml: hastElementToHtml(child), source: "confluence" }));
436
- }
437
- }
438
- }
439
- return blocks;
440
- });
441
- /**
442
- * Parse list item content.
443
- */
444
- const parseListItemContent = (children) => Effect.gen(function* () {
445
- const blocks = [];
446
- const hasDirectInlineContent = children.some((child) => {
447
- if (isHastText(child)) {
448
- return child.value.trim() !== "";
449
- }
450
- if (isHastElement(child)) {
451
- const tagName = child.tagName.toLowerCase();
452
- return ["a", "strong", "em", "b", "i", "u", "code", "span", "del", "sub", "sup"].includes(tagName);
453
- }
454
- return false;
455
- });
456
- if (hasDirectInlineContent) {
457
- const inlineChildren = yield* parseHastChildrenToInline(children);
458
- if (inlineChildren.length > 0) {
459
- blocks.push(new Paragraph({ children: inlineChildren }));
460
- }
461
- return blocks;
462
- }
463
- for (const child of children) {
464
- if (!isHastElement(child))
465
- continue;
466
- const tagName = child.tagName.toLowerCase();
467
- if (tagName === "p") {
468
- const inlineChildren = yield* parseHastChildrenToInline(child.children);
469
- blocks.push(new Paragraph({ children: inlineChildren }));
470
- }
471
- else if (tagName === "ul" || tagName === "ol") {
472
- blocks.push(new UnsupportedBlock({ rawHtml: hastElementToHtml(child), source: "confluence" }));
473
- }
474
- else if (tagName === "pre") {
475
- const codeEl = child.children.find((c) => isHastElement(c) && c.tagName === "code");
476
- const code = codeEl ? getTextContent(codeEl) : getTextContent(child);
477
- blocks.push(new CodeBlock({ code }));
478
- }
479
- else if (tagName === "hr") {
480
- blocks.push(new ThematicBreak({}));
481
- }
482
- else if (tagName === "img") {
483
- const src = child.properties?.src;
484
- if (src)
485
- blocks.push(new Image({ src }));
486
- }
487
- else if (tagName === "table") {
488
- blocks.push(yield* parseTable(child));
489
- }
490
- else if (/^h[1-6]$/.test(tagName)) {
491
- const levelStr = tagName[1];
492
- if (levelStr) {
493
- const level = parseInt(levelStr);
494
- const inlineChildren = yield* parseHastChildrenToInline(child.children);
495
- blocks.push(new Heading({ level, children: inlineChildren }));
496
- }
497
- }
498
- }
499
- return blocks;
500
- });
501
- /**
502
- * Convert table to HAST.
503
- */
504
- const tableToHast = (table) => {
505
- const rows = table.rows.map((row) => makeHastElement("tr", {}, row.cells.map((cell) => makeHastElement(cell.isHeader ? "th" : "td", {}, cell.children.map(inlineNodeToHast)))));
506
- if (table.header) {
507
- const headerRow = makeHastElement("tr", {}, table.header.cells.map((cell) => makeHastElement("th", {}, cell.children.map(inlineNodeToHast))));
508
- return makeHastElement("table", {}, [
509
- makeHastElement("thead", {}, [headerRow]),
510
- makeHastElement("tbody", {}, rows)
511
- ]);
512
- }
513
- return makeHastElement("table", {}, [makeHastElement("tbody", {}, rows)]);
514
- };
515
- /**
516
- * Convert table to MDAST.
517
- */
518
- const tableToMdast = (table) => {
519
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
520
- const rows = [];
521
- if (table.header) {
522
- rows.push({
523
- type: "tableRow",
524
- children: table.header.cells.map((cell) => ({
525
- type: "tableCell",
526
- children: cell.children.map(inlineNodeToMdast)
527
- }))
528
- });
529
- }
530
- for (const row of table.rows) {
531
- rows.push({
532
- type: "tableRow",
533
- children: row.cells.map((cell) => ({
534
- type: "tableCell",
535
- children: cell.children.map(inlineNodeToMdast)
536
- }))
537
- });
538
- }
539
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
540
- return { type: "table", children: rows };
541
- };
542
- /**
543
- * Convert list to HAST.
544
- */
545
- const listToHast = (list) => {
546
- const items = list.children.map((item) => makeHastElement("li", {}, item.children.map(blockNodeToHast)));
547
- return makeHastElement(list.ordered ? "ol" : "ul", list.start !== undefined ? { start: String(list.start) } : {}, items);
548
- };
549
- /**
550
- * Convert list to MDAST.
551
- */
552
- const listToMdast = (list) => {
553
- const result = {
554
- type: "list",
555
- ordered: list.ordered,
556
- children: list.children.map((item) => ({
557
- type: "listItem",
558
- checked: item.checked ?? null,
559
- children: item.children.map(blockNodeToMdast)
560
- }))
561
- };
562
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
563
- if (list.start !== undefined)
564
- result.start = list.start;
565
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
566
- return result;
567
- };
568
- /**
569
- * Convert task list to HAST.
570
- */
571
- const taskListToHast = (taskList) => {
572
- const items = taskList.children.map((item) => makeHastElement("li", {
573
- dataTaskId: item.id,
574
- dataTaskUuid: item.uuid,
575
- dataTaskStatus: item.status
576
- }, item.body.map(inlineNodeToHast)));
577
- return makeHastElement("ul", { dataMacro: "task-list" }, items);
578
- };
579
- /**
580
- * Convert HAST element to HTML string.
581
- */
582
- const hastElementToHtml = (element) => {
583
- const props = Object.entries(element.properties || {})
584
- .map(([k, v]) => {
585
- const attrName = k.replace(/([A-Z])/g, "-$1").toLowerCase();
586
- return `${attrName}="${String(v)}"`;
587
- })
588
- .join(" ");
589
- const openTag = props ? `<${element.tagName} ${props}>` : `<${element.tagName}>`;
590
- const closeTag = `</${element.tagName}>`;
591
- const content = element.children
592
- .map((c) => {
593
- if (isHastText(c))
594
- return c.value;
595
- if (isHastElement(c))
596
- return hastElementToHtml(c);
597
- return "";
598
- })
599
- .join("");
600
- return `${openTag}${content}${closeTag}`;
601
- };
602
- /**
603
- * Schema-based HAST to BlockNode array transform.
604
- *
605
- * @category Schemas
606
- */
607
- export const BlockNodesFromHast = Schema.transformOrFail(Schema.Array(Schema.Unknown), Schema.Array(Schema.Any), {
608
- strict: false,
609
- decode: (hastNodes, _options, ast) => Effect.gen(function* () {
610
- const results = [];
611
- for (const hastNode of hastNodes) {
612
- if (isHastElement(hastNode)) {
613
- const node = yield* blockNodeFromHastElement(hastNode);
614
- if (node)
615
- results.push(node);
616
- }
617
- }
618
- return results;
619
- }).pipe(Effect.mapError((e) => e instanceof ParseResult.ParseError
620
- ? e.issue
621
- : new ParseResult.Type(ast, hastNodes, String(e)))),
622
- encode: (nodes, _options, _ast) => Effect.succeed(nodes.map(blockNodeToHast))
623
- });
624
- /**
625
- * Schema-based MDAST to BlockNode array transform.
626
- *
627
- * @category Schemas
628
- */
629
- export const BlockNodesFromMdast = Schema.transformOrFail(Schema.Array(Schema.Unknown), Schema.Array(Schema.Any), {
630
- strict: false,
631
- decode: (mdastNodes, _options, _ast) => Effect.succeed(mdastNodes.map((n) => blockNodeFromMdast(n))),
632
- encode: (nodes, _options, _ast) => Effect.succeed(nodes.map(blockNodeToMdast))
633
- });
634
- //# sourceMappingURL=BlockSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockSchema.js","sourceRoot":"","sources":["../../../../src/schemas/nodes/block/BlockSchema.ts"],"names":[],"mappings":"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"}