@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,162 +0,0 @@
1
- /**
2
- * Transform schemas for macro nodes (Hast <-> AST).
3
- *
4
- * Provides transforms for Confluence-specific macro elements like info panels,
5
- * expand sections, TOC, and status badges.
6
- *
7
- * @module
8
- */
9
- import * as Effect from "effect/Effect";
10
- import { PanelTypes } from "../../../ast/MacroNode.js";
11
- import { getTextContent, isHastElement, makeHastElement, makeHastText } from "../../hast/index.js";
12
- import { makeMdastCode, makeMdastParagraph, makeMdastText, mdastToString } from "../../mdast/index.js";
13
- import { blockNodeToHast, blockNodeToMdast } from "../block/index.js";
14
- /**
15
- * Convert HAST element to AST macro node.
16
- */
17
- export const macroNodeFromHastElement = (element, parseBlockChildren) => Effect.gen(function* () {
18
- const tagName = element.tagName.toLowerCase();
19
- // Info/warning/note panels
20
- if (tagName === "div" && element.properties?.["dataMacro"]) {
21
- const macro = element.properties["dataMacro"];
22
- if (PanelTypes.includes(macro)) {
23
- const children = yield* parseBlockChildren(element.children);
24
- // Cast to SimpleBlock[] - at runtime only simple blocks are parsed for panel children
25
- return {
26
- _tag: "InfoPanel",
27
- version: 1,
28
- panelType: macro,
29
- title: element.properties["dataTitle"] || undefined,
30
- children: children
31
- };
32
- }
33
- }
34
- // Expand/details
35
- if (tagName === "details") {
36
- const summary = element.children.find((c) => isHastElement(c) && c.tagName === "summary");
37
- const title = summary ? getTextContent(summary) : undefined;
38
- const contentChildren = element.children.filter((c) => !(isHastElement(c) && c.tagName === "summary"));
39
- const children = yield* parseBlockChildren(contentChildren);
40
- // Cast to SimpleBlock[] - at runtime only simple blocks are parsed for expand children
41
- return {
42
- _tag: "ExpandMacro",
43
- version: 1,
44
- title,
45
- children: children
46
- };
47
- }
48
- // TOC
49
- if (tagName === "nav" && element.properties?.["dataMacro"] === "toc") {
50
- const minStr = element.properties["dataMin"];
51
- const maxStr = element.properties["dataMax"];
52
- return {
53
- _tag: "TocMacro",
54
- version: 1,
55
- minLevel: minStr ? parseInt(minStr) : undefined,
56
- maxLevel: maxStr ? parseInt(maxStr) : undefined
57
- };
58
- }
59
- // Code macro (from preprocessed data)
60
- if (tagName === "pre" && element.properties?.["dataMacro"] === "code") {
61
- const codeEl = element.children.find((c) => isHastElement(c) && c.tagName === "code");
62
- const code = codeEl ? getTextContent(codeEl) : getTextContent(element);
63
- const language = element.properties["dataLanguage"] || undefined;
64
- return {
65
- _tag: "CodeMacro",
66
- version: 1,
67
- language,
68
- code,
69
- lineNumbers: false,
70
- collapse: false
71
- };
72
- }
73
- // Status macro
74
- if (tagName === "span" && element.properties?.["dataMacro"] === "status") {
75
- const color = element.properties["dataColor"] || "Grey";
76
- const text = getTextContent(element);
77
- return {
78
- _tag: "StatusMacro",
79
- version: 1,
80
- text,
81
- color: normalizeStatusColor(color)
82
- };
83
- }
84
- return null;
85
- });
86
- /**
87
- * Normalize status color to allowed values.
88
- */
89
- const normalizeStatusColor = (color) => {
90
- const normalized = color.toLowerCase();
91
- switch (normalized) {
92
- case "red":
93
- return "Red";
94
- case "yellow":
95
- return "Yellow";
96
- case "green":
97
- return "Green";
98
- case "blue":
99
- return "Blue";
100
- default:
101
- return "Grey";
102
- }
103
- };
104
- /**
105
- * Convert AST macro node to HAST element.
106
- */
107
- export const macroNodeToHast = (node) => {
108
- switch (node._tag) {
109
- case "InfoPanel":
110
- return makeHastElement("div", {
111
- dataMacro: node.panelType,
112
- ...(node.title ? { dataTitle: node.title } : {})
113
- }, node.children.map(blockNodeToHast));
114
- case "ExpandMacro":
115
- return makeHastElement("details", { dataMacro: "expand" }, [
116
- ...(node.title ? [makeHastElement("summary", {}, [makeHastText(node.title)])] : []),
117
- ...node.children.map(blockNodeToHast)
118
- ]);
119
- case "TocMacro":
120
- return makeHastElement("nav", {
121
- dataMacro: "toc",
122
- ...(node.minLevel !== undefined ? { dataMin: String(node.minLevel) } : {}),
123
- ...(node.maxLevel !== undefined ? { dataMax: String(node.maxLevel) } : {})
124
- });
125
- case "CodeMacro":
126
- return makeHastElement("pre", {
127
- dataMacro: "code",
128
- ...(node.language ? { dataLanguage: node.language } : {})
129
- }, [makeHastElement("code", {}, [makeHastText(node.code)])]);
130
- case "StatusMacro":
131
- return makeHastElement("span", { dataMacro: "status", dataColor: node.color }, [makeHastText(node.text)]);
132
- }
133
- };
134
- /**
135
- * Convert AST macro node to MDAST block content.
136
- */
137
- export const macroNodeToMdast = (node) => {
138
- switch (node._tag) {
139
- case "InfoPanel":
140
- // Render as container syntax with children
141
- return {
142
- type: "html",
143
- value: `:::${node.panelType}${node.title ? ` ${node.title}` : ""}\n${node.children.map((c) => mdastToString(blockNodeToMdast(c))).join("\n")}\n:::`
144
- };
145
- case "ExpandMacro":
146
- return {
147
- type: "html",
148
- value: `<details>\n<summary>${node.title ?? ""}</summary>\n${node.children.map((c) => mdastToString(blockNodeToMdast(c))).join("\n")}\n</details>`
149
- };
150
- case "TocMacro":
151
- return {
152
- type: "html",
153
- value: "[[toc]]"
154
- };
155
- case "CodeMacro":
156
- return makeMdastCode(node.code, node.language);
157
- case "StatusMacro":
158
- // Render as badge-like text
159
- return makeMdastParagraph([makeMdastText(`[${node.text}]`)]);
160
- }
161
- };
162
- //# sourceMappingURL=MacroSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MacroSchema.js","sourceRoot":"","sources":["../../../../src/schemas/nodes/macro/MacroSchema.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Macro node transform schemas.
3
- *
4
- * @module
5
- */
6
- export { macroNodeFromHastElement, macroNodeToHast, macroNodeToMdast } from "./MacroSchema.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/nodes/macro/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Macro node transform schemas.
3
- *
4
- * @module
5
- */
6
- export { macroNodeFromHastElement, macroNodeToHast, macroNodeToMdast } from "./MacroSchema.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/schemas/nodes/macro/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Schema-based Confluence HTML preprocessing.
3
- *
4
- * Transforms raw Confluence storage format into parseable HTML by expanding
5
- * macros, converting task lists, and normalizing Confluence-specific markup.
6
- *
7
- * @module
8
- */
9
- import type * as Brand from "effect/Brand";
10
- import * as Schema from "effect/Schema";
11
- /**
12
- * Branded type for preprocessed Confluence HTML.
13
- *
14
- * @category Types
15
- */
16
- export type PreprocessedHtml = string & Brand.Brand<"PreprocessedHtml">;
17
- /**
18
- * Schema for preprocessed HTML brand.
19
- *
20
- * @category Schemas
21
- */
22
- export declare const PreprocessedHtmlSchema: Schema.brand<typeof Schema.String, "PreprocessedHtml">;
23
- export declare const PreprocessedHtmlFromConfluence: Schema.transformOrFail<typeof Schema.String, Schema.brand<typeof Schema.String, "PreprocessedHtml">, never>;
24
- //# sourceMappingURL=ConfluencePreprocessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfluencePreprocessor.d.ts","sourceRoot":"","sources":["../../../src/schemas/preprocessing/ConfluencePreprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAI1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAMvC;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wDAElC,CAAA;AAiCD,eAAO,MAAM,8BAA8B,6GAsB1C,CAAA"}
@@ -1,359 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { pipe } from "effect/Function";
3
- import * as ParseResult from "effect/ParseResult";
4
- import * as Schema from "effect/Schema";
5
- import { PanelTypes } from "../../ast/MacroNode.js";
6
- /** Maximum HTML input size (1MB) to prevent ReDoS attacks */
7
- const MAX_HTML_SIZE = 1024 * 1024;
8
- /**
9
- * Schema for preprocessed HTML brand.
10
- *
11
- * @category Schemas
12
- */
13
- export const PreprocessedHtmlSchema = Schema.String.pipe(Schema.brand("PreprocessedHtml"));
14
- /**
15
- * Transform raw Confluence HTML to preprocessed HTML.
16
- *
17
- * Applies the following transformations:
18
- * - Layout section extraction with markers
19
- * - Structured macro expansion (code, info panels, expand, TOC, status)
20
- * - Task list normalization
21
- * - Image attachment processing
22
- * - Emoticon conversion
23
- * - User mention extraction
24
- * - ADF extension handling
25
- * - Namespace stripping (ac:, ri: tags)
26
- *
27
- * @example
28
- * ```typescript
29
- * import { PreprocessedHtmlFromConfluence } from "@knpkv/confluence-to-markdown/schemas/preprocessing"
30
- * import * as Schema from "effect/Schema"
31
- * import { Effect } from "effect"
32
- *
33
- * const program = Effect.gen(function* () {
34
- * const html = yield* Schema.decode(PreprocessedHtmlFromConfluence)(
35
- * '<ac:structured-macro ac:name="info"><ac:rich-text-body>Content</ac:rich-text-body></ac:structured-macro>'
36
- * )
37
- * // html contains: <div data-macro="info">Content</div>
38
- * })
39
- * ```
40
- *
41
- * @category Schemas
42
- */
43
- const makePreprocessedHtml = Schema.decodeSync(PreprocessedHtmlSchema);
44
- export const PreprocessedHtmlFromConfluence = Schema.transformOrFail(Schema.String, PreprocessedHtmlSchema, {
45
- strict: true,
46
- decode: (html, _options, ast) => Effect.gen(function* () {
47
- if (html.length > MAX_HTML_SIZE) {
48
- return yield* Effect.fail(new ParseResult.Type(ast, html, `HTML input too large: ${html.length} bytes (max ${MAX_HTML_SIZE})`));
49
- }
50
- return pipe(html, preprocessConfluenceHtml, makePreprocessedHtml);
51
- }),
52
- encode: (preprocessed) =>
53
- // Identity - branded string is already a string
54
- Effect.succeed(preprocessed)
55
- });
56
- /**
57
- * Main preprocessing pipeline.
58
- */
59
- const preprocessConfluenceHtml = (html) => {
60
- let result = html;
61
- // 1. Process layouts FIRST - before any other preprocessing
62
- result = preprocessLayouts(result);
63
- // 2. Process structured macros iteratively
64
- result = processStructuredMacros(result);
65
- // 3. Process task lists BEFORE stripping ac: tags
66
- result = preprocessTaskLists(result);
67
- // 4. Process images with attachments
68
- result = preprocessImages(result);
69
- // 5. Process emoticons
70
- result = preprocessEmoticons(result);
71
- // 6. Process user mentions
72
- result = preprocessUserMentions(result);
73
- // 7. Process Confluence links with link-body
74
- result = preprocessConfluenceLinks(result);
75
- // 8. Process ADF extensions (decision lists)
76
- result = preprocessAdfExtensions(result);
77
- // 9. Strip remaining ac/ri namespace tags
78
- result = stripNamespaces(result);
79
- return result;
80
- };
81
- /**
82
- * Process Confluence layouts.
83
- * Inserts markers for roundtrip preservation.
84
- */
85
- const preprocessLayouts = (html) => {
86
- return html.replace(/<ac:layout>([\s\S]*?)<\/ac:layout>/gi, (_, layoutContent) => {
87
- let result = "<div data-cf-marker><!--cf:layout-start--></div>";
88
- let sectionIndex = 0;
89
- const sectionRegex = /<ac:layout-section([^>]*)>([\s\S]*?)<\/ac:layout-section>/gi;
90
- let sectionMatch;
91
- while ((sectionMatch = sectionRegex.exec(layoutContent)) !== null) {
92
- const sectionAttrs = sectionMatch[1] ?? "";
93
- const sectionContent = sectionMatch[2] ?? "";
94
- const typeMatch = sectionAttrs.match(/ac:type="([^"]*)"/);
95
- const sectionType = typeMatch?.[1] ?? "fixed-width";
96
- const breakoutModeMatch = sectionAttrs.match(/ac:breakout-mode="([^"]*)"/);
97
- const breakoutWidthMatch = sectionAttrs.match(/ac:breakout-width="([^"]*)"/);
98
- const breakoutMode = breakoutModeMatch?.[1] ?? "";
99
- const breakoutWidth = breakoutWidthMatch?.[1] ?? "";
100
- const cellContents = [];
101
- const cellRegex = /<ac:layout-cell[^>]*>([\s\S]*?)<\/ac:layout-cell>/gi;
102
- let cellMatch;
103
- while ((cellMatch = cellRegex.exec(sectionContent)) !== null) {
104
- cellContents.push(cellMatch[1] ?? "");
105
- }
106
- result += `<div data-cf-marker><!--cf:section:${sectionIndex};${encodeURIComponent(sectionType)};${encodeURIComponent(breakoutMode)};${encodeURIComponent(breakoutWidth)};${cellContents.length}--></div>`;
107
- cellContents.forEach((cellContent, cellIndex) => {
108
- result += `<div data-cf-marker><!--cf:cell:${sectionIndex};${cellIndex}--></div>${cellContent}`;
109
- });
110
- result += `<div data-cf-marker><!--cf:section-end:${sectionIndex}--></div>`;
111
- sectionIndex++;
112
- }
113
- result += "<div data-cf-marker><!--cf:layout-end--></div>";
114
- return result;
115
- });
116
- };
117
- /**
118
- * Process structured macros iteratively.
119
- */
120
- const processStructuredMacros = (html) => {
121
- let result = html;
122
- let iterations = 0;
123
- const maxIterations = 100;
124
- while (iterations < maxIterations) {
125
- const macroStart = result.indexOf("<ac:structured-macro");
126
- if (macroStart === -1)
127
- break;
128
- // First, find the end of the opening tag to check if self-closing
129
- const openingTagEnd = result.indexOf(">", macroStart);
130
- if (openingTagEnd === -1)
131
- break;
132
- // Check if self-closing (ends with />)
133
- const isSelfClosing = result[openingTagEnd - 1] === "/";
134
- let endPos;
135
- if (isSelfClosing) {
136
- // Self-closing macro: <ac:structured-macro ... />
137
- endPos = openingTagEnd + 1;
138
- }
139
- else {
140
- // Regular macro with body: find matching closing tag
141
- let depth = 1;
142
- let pos = openingTagEnd + 1;
143
- endPos = -1;
144
- while (pos < result.length && depth > 0) {
145
- if (result.slice(pos, pos + 20) === "<ac:structured-macro") {
146
- // Check if this nested opening is also self-closing
147
- const nestedEnd = result.indexOf(">", pos);
148
- if (nestedEnd !== -1 && result[nestedEnd - 1] === "/") {
149
- // Self-closing nested macro - don't change depth
150
- pos = nestedEnd + 1;
151
- }
152
- else {
153
- depth++;
154
- pos += 20;
155
- }
156
- }
157
- else if (result.slice(pos, pos + 21) === "</ac:structured-macro") {
158
- depth--;
159
- if (depth === 0) {
160
- endPos = result.indexOf(">", pos) + 1;
161
- }
162
- pos += 21;
163
- }
164
- else {
165
- pos++;
166
- }
167
- }
168
- if (endPos === -1)
169
- break;
170
- }
171
- const macroContent = result.slice(macroStart, endPos);
172
- const replacement = processSingleMacro(macroContent);
173
- result = result.slice(0, macroStart) + replacement + result.slice(endPos);
174
- iterations++;
175
- }
176
- return result;
177
- };
178
- /**
179
- * Process a single Confluence macro to HTML.
180
- */
181
- const processSingleMacro = (macroContent) => {
182
- const nameMatch = macroContent.match(/ac:name="([^"]+)"/);
183
- const macroName = nameMatch?.[1] ?? "";
184
- // Plain-text body (for code macros)
185
- const plainBodyStart = macroContent.indexOf("<ac:plain-text-body><![CDATA[");
186
- const plainBodyEnd = macroContent.indexOf("]]></ac:plain-text-body>");
187
- if (plainBodyStart !== -1 && plainBodyEnd !== -1) {
188
- const content = macroContent.slice(plainBodyStart + 29, plainBodyEnd);
189
- const langMatch = macroContent.match(/ac:name="code".*?<ac:parameter[^>]*ac:name="language"[^>]*>([^<]+)/);
190
- const language = langMatch?.[1] ?? "";
191
- return `<pre data-macro="code" data-language="${language}"><code>${escapeHtml(content)}</code></pre>`;
192
- }
193
- // Rich-text body
194
- const richBodyStart = macroContent.indexOf("<ac:rich-text-body>");
195
- const richBodyEnd = macroContent.indexOf("</ac:rich-text-body>");
196
- if (richBodyStart !== -1 && richBodyEnd !== -1) {
197
- const content = macroContent.slice(richBodyStart + 19, richBodyEnd);
198
- // Info/warning/note panels
199
- if (PanelTypes.includes(macroName)) {
200
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
201
- const title = titleMatch?.[1] ?? "";
202
- return `<div data-macro="${macroName}" data-title="${escapeHtml(title)}">${content}</div>`;
203
- }
204
- // Expand macro
205
- if (macroName === "expand") {
206
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
207
- const title = titleMatch?.[1] ?? "";
208
- return `<details data-macro="expand"><summary>${escapeHtml(title)}</summary>${content}</details>`;
209
- }
210
- return content;
211
- }
212
- // TOC macro
213
- if (macroName === "toc") {
214
- const minMatch = macroContent.match(/<ac:parameter[^>]*ac:name="minLevel"[^>]*>(\d+)/);
215
- const maxMatch = macroContent.match(/<ac:parameter[^>]*ac:name="maxLevel"[^>]*>(\d+)/);
216
- return `<nav data-macro="toc" data-min="${minMatch?.[1] ?? ""}" data-max="${maxMatch?.[1] ?? ""}"></nav>`;
217
- }
218
- // Status macro
219
- if (macroName === "status") {
220
- const colorMatch = macroContent.match(/<ac:parameter[^>]*ac:name="colour"[^>]*>([^<]+)/);
221
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
222
- return `<span data-macro="status" data-color="${colorMatch?.[1] ?? ""}">${escapeHtml(titleMatch?.[1] ?? "")}</span>`;
223
- }
224
- // view-file macro: render as a visible anchor pointing at the attachment.
225
- if (macroName === "view-file") {
226
- const filenameMatch = macroContent.match(/ri:filename="([^"]+)"/);
227
- const filename = filenameMatch?.[1] ?? "";
228
- return `<a data-macro="view-file" href="attachment:${escapeHtml(filename)}">${escapeHtml(filename)}</a>`;
229
- }
230
- // Unknown macro - preserve as unsupported. The body is HTML-escaped so the
231
- // next iteration of processStructuredMacros doesn't re-match the same
232
- // <ac:structured-macro> tag and loop forever.
233
- return `<div data-unsupported-macro="${macroName}">${escapeHtml(macroContent)}</div>`;
234
- };
235
- /**
236
- * Preprocess task lists.
237
- */
238
- const preprocessTaskLists = (html) => {
239
- let result = html;
240
- const taskRegex = /<ac:task>([\s\S]*?)<\/ac:task>/gi;
241
- result = result.replace(taskRegex, (_, taskContent) => {
242
- const idMatch = taskContent.match(/<ac:task-id>([^<]*)<\/ac:task-id>/);
243
- const uuidMatch = taskContent.match(/<ac:task-uuid>([^<]*)<\/ac:task-uuid>/);
244
- const statusMatch = taskContent.match(/<ac:task-status>([^<]*)<\/ac:task-status>/);
245
- const bodyMatch = taskContent.match(/<ac:task-body>([\s\S]*?)<\/ac:task-body>/);
246
- const id = idMatch?.[1] ?? "";
247
- const uuid = uuidMatch?.[1] ?? "";
248
- const status = statusMatch?.[1] ?? "incomplete";
249
- const body = bodyMatch?.[1] ?? "";
250
- const cleanBody = body.replace(/<[^>]+>/g, "").trim();
251
- return `<li data-task-id="${id}" data-task-uuid="${uuid}" data-task-status="${status}">${cleanBody}</li>`;
252
- });
253
- result = result.replace(/<ac:task-list[^>]*>/gi, "<ul data-macro=\"task-list\">");
254
- result = result.replace(/<\/ac:task-list>/gi, "</ul>");
255
- return result;
256
- };
257
- /**
258
- * Preprocess images with attachments.
259
- */
260
- const preprocessImages = (html) => {
261
- return html.replace(/<ac:image([^>]*)>[\s\S]*?<ri:attachment([^>]*)\/>[\s\S]*?<\/ac:image>/gi, (_, imageAttrs, attachmentAttrs) => {
262
- const filename = attachmentAttrs.match(/ri:filename="([^"]*)"/)?.[1] ?? "";
263
- const align = imageAttrs.match(/ac:align="([^"]*)"/)?.[1] ?? "";
264
- const width = imageAttrs.match(/ac:width="([^"]*)"/)?.[1] ?? "";
265
- const alt = imageAttrs.match(/ac:alt="([^"]*)"/)?.[1] ?? "";
266
- const attrs = [
267
- `data-attachment="${escapeHtml(filename)}"`,
268
- align && `data-align="${align}"`,
269
- width && `data-width="${width}"`,
270
- alt && `alt="${escapeHtml(alt)}"`
271
- ].filter(Boolean).join(" ");
272
- return `<img ${attrs}>`;
273
- });
274
- };
275
- /**
276
- * Preprocess emoticons.
277
- */
278
- const preprocessEmoticons = (html) => {
279
- return html.replace(/<ac:emoticon([^>]*)\/?>/gi, (_, attrs) => {
280
- const shortname = attrs.match(/ac:emoji-shortname="([^"]*)"/)?.[1] ?? "";
281
- const emojiId = attrs.match(/ac:emoji-id="([^"]*)"/)?.[1] ?? "";
282
- const fallback = attrs.match(/ac:emoji-fallback="([^"]*)"/)?.[1] ?? "";
283
- return `<span data-emoji="${escapeHtml(shortname)}" data-emoji-id="${emojiId}">${fallback}</span>`;
284
- });
285
- };
286
- /**
287
- * Preprocess user mentions.
288
- */
289
- const preprocessUserMentions = (html) => {
290
- return html.replace(/<ac:link>\s*<ri:user([^>]*)\/?>\s*<\/ac:link>/gi, (_, attrs) => {
291
- const accountId = attrs.match(/ri:account-id="([^"]*)"/)?.[1] ?? "";
292
- return `<span data-user-mention="${escapeHtml(accountId)}"></span>`;
293
- });
294
- };
295
- /**
296
- * Preprocess Confluence links with link-body.
297
- * <ac:link><ac:link-body>Link text</ac:link-body></ac:link>
298
- * -> <span data-confluence-link>Link text</span>
299
- */
300
- const preprocessConfluenceLinks = (html) => {
301
- return html.replace(/<ac:link>\s*<ac:link-body>([\s\S]*?)<\/ac:link-body>\s*<\/ac:link>/gi, (_, linkText) => {
302
- return `<span data-confluence-link>${linkText}</span>`;
303
- });
304
- };
305
- /**
306
- * Preprocess ADF extensions (decision lists).
307
- */
308
- const preprocessAdfExtensions = (html) => {
309
- return html.replace(/<ac:adf-extension>([\s\S]*?)<\/ac:adf-extension>/gi, (_, content) => {
310
- if (content.includes("type=\"decision-list\"")) {
311
- const items = [];
312
- const itemRegex = /<ac:adf-node\s+type="decision-item">([\s\S]*?)<\/ac:adf-node>/gi;
313
- let itemMatch;
314
- while ((itemMatch = itemRegex.exec(content)) !== null) {
315
- const itemContent = itemMatch[1] ?? "";
316
- const localIdMatch = itemContent.match(/<ac:adf-attribute\s+key="local-id">([^<]*)<\/ac:adf-attribute>/);
317
- const stateMatch = itemContent.match(/<ac:adf-attribute\s+key="state">([^<]*)<\/ac:adf-attribute>/);
318
- const textMatch = itemContent.match(/<ac:adf-content>([^<]*)<\/ac:adf-content>/);
319
- items.push({
320
- localId: localIdMatch?.[1] ?? "",
321
- state: stateMatch?.[1] ?? "UNDECIDED",
322
- content: textMatch?.[1] ?? ""
323
- });
324
- }
325
- if (items.length > 0) {
326
- const encoded = items.map((item) => `${encodeURIComponent(item.localId)};${encodeURIComponent(item.state)};${encodeURIComponent(item.content)}`).join("|");
327
- return `<!--cf:decision:${encoded}-->`;
328
- }
329
- }
330
- // Check if it's an ADF panel (note, info, warning, etc.)
331
- if (content.includes("type=\"panel\"")) {
332
- const panelTypeMatch = content.match(/<ac:adf-attribute\s+key="panel-type">([^<]*)<\/ac:adf-attribute>/);
333
- const panelType = panelTypeMatch?.[1] ?? "info";
334
- const contentMatch = content.match(/<ac:adf-content>([\s\S]*?)<\/ac:adf-content>/);
335
- const innerContent = contentMatch?.[1] ?? "";
336
- return `<div data-macro="${panelType}" data-title="">${innerContent}</div>`;
337
- }
338
- const fallbackMatch = content.match(/<ac:adf-fallback>([\s\S]*?)<\/ac:adf-fallback>/);
339
- if (fallbackMatch) {
340
- return fallbackMatch[1] ?? "";
341
- }
342
- return "";
343
- });
344
- };
345
- /**
346
- * Strip remaining ac/ri namespace tags.
347
- */
348
- const stripNamespaces = (html) => {
349
- return html
350
- .replace(/<ac:parameter[^>]{0,1000}>[^<]{0,10000}<\/ac:parameter>/gi, "")
351
- .replace(/<\/?ac:[a-z-]{1,50}[^>]{0,1000}>/gi, "")
352
- .replace(/<\/?ri:[a-z-]{1,50}[^>]{0,1000}\/?>/gi, "");
353
- };
354
- const escapeHtml = (str) => str
355
- .replace(/&/g, "&amp;")
356
- .replace(/</g, "&lt;")
357
- .replace(/>/g, "&gt;")
358
- .replace(/"/g, "&quot;");
359
- //# sourceMappingURL=ConfluencePreprocessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfluencePreprocessor.js","sourceRoot":"","sources":["../../../src/schemas/preprocessing/ConfluencePreprocessor.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Confluence HTML preprocessing schemas.
3
- *
4
- * @module
5
- */
6
- export type { PreprocessedHtml } from "./ConfluencePreprocessor.js";
7
- export { PreprocessedHtmlFromConfluence, PreprocessedHtmlSchema } from "./ConfluencePreprocessor.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/preprocessing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA"}
@@ -1,2 +0,0 @@
1
- export { PreprocessedHtmlFromConfluence, PreprocessedHtmlSchema } from "./ConfluencePreprocessor.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/preprocessing/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA"}