@knpkv/confluence-to-markdown 0.6.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 (357) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/LICENSE +21 -0
  3. package/README.md +22 -13
  4. package/dist/AdfPlaceholders.d.ts +42 -0
  5. package/dist/AdfPlaceholders.d.ts.map +1 -0
  6. package/dist/AdfPlaceholders.js +547 -0
  7. package/dist/AdfPlaceholders.js.map +1 -0
  8. package/dist/AdfSchemaValidator.d.ts +37 -0
  9. package/dist/AdfSchemaValidator.d.ts.map +1 -0
  10. package/dist/AdfSchemaValidator.js +37 -0
  11. package/dist/AdfSchemaValidator.js.map +1 -0
  12. package/dist/AdfWalker.d.ts +39 -0
  13. package/dist/AdfWalker.d.ts.map +1 -0
  14. package/dist/AdfWalker.js +527 -0
  15. package/dist/AdfWalker.js.map +1 -0
  16. package/dist/AtlaskitTransformers.d.ts +35 -0
  17. package/dist/AtlaskitTransformers.d.ts.map +1 -0
  18. package/dist/AtlaskitTransformers.js +48 -0
  19. package/dist/AtlaskitTransformers.js.map +1 -0
  20. package/dist/Brand.d.ts +6 -6
  21. package/dist/Brand.d.ts.map +1 -1
  22. package/dist/Brand.js +8 -6
  23. package/dist/Brand.js.map +1 -1
  24. package/dist/ConfluenceAuth.d.ts +4 -4
  25. package/dist/ConfluenceAuth.d.ts.map +1 -1
  26. package/dist/ConfluenceAuth.js +37 -39
  27. package/dist/ConfluenceAuth.js.map +1 -1
  28. package/dist/ConfluenceClient.d.ts +7 -17
  29. package/dist/ConfluenceClient.d.ts.map +1 -1
  30. package/dist/ConfluenceClient.js +81 -38
  31. package/dist/ConfluenceClient.js.map +1 -1
  32. package/dist/ConfluenceConfig.d.ts +3 -3
  33. package/dist/ConfluenceConfig.d.ts.map +1 -1
  34. package/dist/ConfluenceConfig.js +13 -11
  35. package/dist/ConfluenceConfig.js.map +1 -1
  36. package/dist/ConfluenceError.d.ts +68 -16
  37. package/dist/ConfluenceError.d.ts.map +1 -1
  38. package/dist/ConfluenceError.js +30 -1
  39. package/dist/ConfluenceError.js.map +1 -1
  40. package/dist/GitError.d.ts +5 -5
  41. package/dist/GitService.d.ts +11 -3
  42. package/dist/GitService.d.ts.map +1 -1
  43. package/dist/GitService.js +22 -27
  44. package/dist/GitService.js.map +1 -1
  45. package/dist/LocalFileSystem.d.ts +3 -3
  46. package/dist/LocalFileSystem.d.ts.map +1 -1
  47. package/dist/LocalFileSystem.js +6 -6
  48. package/dist/LocalFileSystem.js.map +1 -1
  49. package/dist/MarkdownConverter.d.ts +16 -65
  50. package/dist/MarkdownConverter.d.ts.map +1 -1
  51. package/dist/MarkdownConverter.js +64 -85
  52. package/dist/MarkdownConverter.js.map +1 -1
  53. package/dist/Schemas.d.ts +128 -141
  54. package/dist/Schemas.d.ts.map +1 -1
  55. package/dist/Schemas.js +21 -23
  56. package/dist/Schemas.js.map +1 -1
  57. package/dist/SyncEngine.d.ts +8 -5
  58. package/dist/SyncEngine.d.ts.map +1 -1
  59. package/dist/SyncEngine.js +189 -113
  60. package/dist/SyncEngine.js.map +1 -1
  61. package/dist/bin.js +23 -35
  62. package/dist/bin.js.map +1 -1
  63. package/dist/commands/auth.d.ts +2 -14
  64. package/dist/commands/auth.d.ts.map +1 -1
  65. package/dist/commands/auth.js +11 -16
  66. package/dist/commands/auth.js.map +1 -1
  67. package/dist/commands/clone.d.ts +4 -6
  68. package/dist/commands/clone.d.ts.map +1 -1
  69. package/dist/commands/clone.js +34 -32
  70. package/dist/commands/clone.js.map +1 -1
  71. package/dist/commands/delete.d.ts +2 -10
  72. package/dist/commands/delete.d.ts.map +1 -1
  73. package/dist/commands/delete.js +5 -4
  74. package/dist/commands/delete.js.map +1 -1
  75. package/dist/commands/errorHandler.d.ts +2 -1
  76. package/dist/commands/errorHandler.d.ts.map +1 -1
  77. package/dist/commands/errorHandler.js +22 -15
  78. package/dist/commands/errorHandler.js.map +1 -1
  79. package/dist/commands/fetch.d.ts +27 -0
  80. package/dist/commands/fetch.d.ts.map +1 -0
  81. package/dist/commands/fetch.js +48 -0
  82. package/dist/commands/fetch.js.map +1 -0
  83. package/dist/commands/git.d.ts +7 -10
  84. package/dist/commands/git.d.ts.map +1 -1
  85. package/dist/commands/git.js +6 -6
  86. package/dist/commands/git.js.map +1 -1
  87. package/dist/commands/index.d.ts +1 -0
  88. package/dist/commands/index.d.ts.map +1 -1
  89. package/dist/commands/index.js +1 -0
  90. package/dist/commands/index.js.map +1 -1
  91. package/dist/commands/layers.d.ts +10 -9
  92. package/dist/commands/layers.d.ts.map +1 -1
  93. package/dist/commands/layers.js +41 -30
  94. package/dist/commands/layers.js.map +1 -1
  95. package/dist/commands/new.d.ts +2 -6
  96. package/dist/commands/new.d.ts.map +1 -1
  97. package/dist/commands/new.js +5 -4
  98. package/dist/commands/new.js.map +1 -1
  99. package/dist/commands/pageInput.d.ts +19 -0
  100. package/dist/commands/pageInput.d.ts.map +1 -0
  101. package/dist/commands/pageInput.js +68 -0
  102. package/dist/commands/pageInput.js.map +1 -0
  103. package/dist/commands/root.d.ts +8 -0
  104. package/dist/commands/root.d.ts.map +1 -0
  105. package/dist/commands/root.js +29 -0
  106. package/dist/commands/root.js.map +1 -0
  107. package/dist/commands/sync.d.ts +6 -9
  108. package/dist/commands/sync.d.ts.map +1 -1
  109. package/dist/commands/sync.js +5 -6
  110. package/dist/commands/sync.js.map +1 -1
  111. package/dist/index.d.ts +3 -8
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +2 -13
  114. package/dist/index.js.map +1 -1
  115. package/dist/internal/NodeLayers.d.ts.map +1 -1
  116. package/dist/internal/NodeLayers.js +1 -2
  117. package/dist/internal/NodeLayers.js.map +1 -1
  118. package/dist/internal/adfMetadata.d.ts +30 -0
  119. package/dist/internal/adfMetadata.d.ts.map +1 -0
  120. package/dist/internal/adfMetadata.js +126 -0
  121. package/dist/internal/adfMetadata.js.map +1 -0
  122. package/dist/internal/cleanMarkdown.d.ts +5 -0
  123. package/dist/internal/cleanMarkdown.d.ts.map +1 -0
  124. package/dist/internal/cleanMarkdown.js +13 -0
  125. package/dist/internal/cleanMarkdown.js.map +1 -0
  126. package/dist/internal/frontmatter.d.ts.map +1 -1
  127. package/dist/internal/frontmatter.js +41 -8
  128. package/dist/internal/frontmatter.js.map +1 -1
  129. package/dist/internal/gitCommands.d.ts +9 -3
  130. package/dist/internal/gitCommands.d.ts.map +1 -1
  131. package/dist/internal/gitCommands.js +18 -9
  132. package/dist/internal/gitCommands.js.map +1 -1
  133. package/dist/internal/hashUtils.d.ts +1 -1
  134. package/dist/internal/hashUtils.d.ts.map +1 -1
  135. package/dist/internal/hashUtils.js +1 -1
  136. package/dist/internal/hashUtils.js.map +1 -1
  137. package/dist/internal/oauthServer.d.ts +10 -5
  138. package/dist/internal/oauthServer.d.ts.map +1 -1
  139. package/dist/internal/oauthServer.js +19 -40
  140. package/dist/internal/oauthServer.js.map +1 -1
  141. package/dist/internal/pathUtils.d.ts +1 -1
  142. package/dist/internal/pathUtils.d.ts.map +1 -1
  143. package/dist/internal/pathUtils.js +1 -1
  144. package/dist/internal/pathUtils.js.map +1 -1
  145. package/dist/internal/process.d.ts +15 -0
  146. package/dist/internal/process.d.ts.map +1 -0
  147. package/dist/internal/process.js +10 -0
  148. package/dist/internal/process.js.map +1 -0
  149. package/dist/internal/stdio.d.ts +6 -0
  150. package/dist/internal/stdio.d.ts.map +1 -0
  151. package/dist/internal/stdio.js +15 -0
  152. package/dist/internal/stdio.js.map +1 -0
  153. package/dist/internal/tokenStorage.d.ts +3 -13
  154. package/dist/internal/tokenStorage.d.ts.map +1 -1
  155. package/dist/internal/tokenStorage.js +26 -24
  156. package/dist/internal/tokenStorage.js.map +1 -1
  157. package/dist/internal/userCache.d.ts +1 -1
  158. package/dist/internal/userCache.d.ts.map +1 -1
  159. package/dist/internal/userCache.js +1 -1
  160. package/dist/internal/userCache.js.map +1 -1
  161. package/package.json +30 -30
  162. package/skills/confluence/SKILL.md +143 -0
  163. package/skills/confluence/agents/openai.yaml +4 -0
  164. package/src/AdfPlaceholders.ts +310 -13
  165. package/src/AdfSchemaValidator.ts +2 -4
  166. package/src/AdfWalker.ts +122 -42
  167. package/src/AtlaskitTransformers.ts +2 -4
  168. package/src/Brand.ts +11 -16
  169. package/src/ConfluenceAuth.ts +22 -30
  170. package/src/ConfluenceClient.ts +24 -20
  171. package/src/ConfluenceConfig.ts +14 -14
  172. package/src/GitService.ts +39 -49
  173. package/src/LocalFileSystem.ts +7 -9
  174. package/src/MarkdownConverter.ts +2 -4
  175. package/src/Schemas.ts +13 -12
  176. package/src/SyncEngine.ts +151 -53
  177. package/src/bin.ts +30 -56
  178. package/src/commands/auth.ts +21 -18
  179. package/src/commands/clone.ts +38 -37
  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 +53 -33
  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/internal/NodeLayers.ts +1 -2
  191. package/src/internal/adfMetadata.ts +145 -0
  192. package/src/internal/cleanMarkdown.ts +15 -0
  193. package/src/internal/frontmatter.ts +45 -8
  194. package/src/internal/gitCommands.ts +23 -17
  195. package/src/internal/hashUtils.ts +2 -2
  196. package/src/internal/oauthServer.ts +84 -105
  197. package/src/internal/pathUtils.ts +1 -1
  198. package/src/internal/process.ts +15 -0
  199. package/src/internal/stdio.ts +22 -0
  200. package/src/internal/tokenStorage.ts +39 -29
  201. package/src/internal/userCache.ts +2 -2
  202. package/test/AdfPlaceholders.test.ts +213 -0
  203. package/test/AdfSchemaValidator.test.ts +6 -6
  204. package/test/AdfWalker.test.ts +167 -21
  205. package/test/AtlaskitTransformers.test.ts +4 -4
  206. package/test/Brand.test.ts +11 -11
  207. package/test/GitService.test.ts +6 -2
  208. package/test/MarkdownConverter.test.ts +12 -11
  209. package/test/RoundTrip.test.ts +258 -3
  210. package/test/Schemas.test.ts +40 -40
  211. package/test/adfMetadata.test.ts +110 -0
  212. package/test/cleanMarkdown.test.ts +36 -0
  213. package/test/commandHarness.test.ts +79 -0
  214. package/test/commandHarness.ts +147 -0
  215. package/test/fetch.test.ts +61 -0
  216. package/test/frontmatter.test.ts +41 -0
  217. package/test/integration.test.ts +569 -156
  218. package/test/layers.test.ts +12 -0
  219. package/test/oauthServer.test.ts +4 -5
  220. package/test/pageInput.test.ts +83 -0
  221. package/test/tokenStorage.test.ts +17 -17
  222. package/dist/SchemaConverterError.d.ts +0 -108
  223. package/dist/SchemaConverterError.d.ts.map +0 -1
  224. package/dist/SchemaConverterError.js +0 -84
  225. package/dist/SchemaConverterError.js.map +0 -1
  226. package/dist/ast/BlockNode.d.ts +0 -468
  227. package/dist/ast/BlockNode.d.ts.map +0 -1
  228. package/dist/ast/BlockNode.js +0 -319
  229. package/dist/ast/BlockNode.js.map +0 -1
  230. package/dist/ast/Document.d.ts +0 -244
  231. package/dist/ast/Document.d.ts.map +0 -1
  232. package/dist/ast/Document.js +0 -69
  233. package/dist/ast/Document.js.map +0 -1
  234. package/dist/ast/InlineNode.d.ts +0 -477
  235. package/dist/ast/InlineNode.d.ts.map +0 -1
  236. package/dist/ast/InlineNode.js +0 -263
  237. package/dist/ast/InlineNode.js.map +0 -1
  238. package/dist/ast/MacroNode.d.ts +0 -267
  239. package/dist/ast/MacroNode.d.ts.map +0 -1
  240. package/dist/ast/MacroNode.js +0 -164
  241. package/dist/ast/MacroNode.js.map +0 -1
  242. package/dist/ast/index.d.ts +0 -10
  243. package/dist/ast/index.d.ts.map +0 -1
  244. package/dist/ast/index.js +0 -14
  245. package/dist/ast/index.js.map +0 -1
  246. package/dist/parsers/ConfluenceParser.d.ts +0 -26
  247. package/dist/parsers/ConfluenceParser.d.ts.map +0 -1
  248. package/dist/parsers/ConfluenceParser.js +0 -792
  249. package/dist/parsers/ConfluenceParser.js.map +0 -1
  250. package/dist/parsers/MarkdownParser.d.ts +0 -26
  251. package/dist/parsers/MarkdownParser.d.ts.map +0 -1
  252. package/dist/parsers/MarkdownParser.js +0 -873
  253. package/dist/parsers/MarkdownParser.js.map +0 -1
  254. package/dist/parsers/index.d.ts +0 -8
  255. package/dist/parsers/index.d.ts.map +0 -1
  256. package/dist/parsers/index.js +0 -8
  257. package/dist/parsers/index.js.map +0 -1
  258. package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts +0 -23
  259. package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts.map +0 -1
  260. package/dist/parsers/preprocessing/ConfluencePreprocessing.js +0 -323
  261. package/dist/parsers/preprocessing/ConfluencePreprocessing.js.map +0 -1
  262. package/dist/parsers/preprocessing/index.d.ts +0 -7
  263. package/dist/parsers/preprocessing/index.d.ts.map +0 -1
  264. package/dist/parsers/preprocessing/index.js +0 -7
  265. package/dist/parsers/preprocessing/index.js.map +0 -1
  266. package/dist/schemas/ConfluenceSchema.d.ts +0 -21
  267. package/dist/schemas/ConfluenceSchema.d.ts.map +0 -1
  268. package/dist/schemas/ConfluenceSchema.js +0 -38
  269. package/dist/schemas/ConfluenceSchema.js.map +0 -1
  270. package/dist/schemas/ConversionSchema.d.ts +0 -35
  271. package/dist/schemas/ConversionSchema.d.ts.map +0 -1
  272. package/dist/schemas/ConversionSchema.js +0 -208
  273. package/dist/schemas/ConversionSchema.js.map +0 -1
  274. package/dist/schemas/MarkdownSchema.d.ts +0 -21
  275. package/dist/schemas/MarkdownSchema.d.ts.map +0 -1
  276. package/dist/schemas/MarkdownSchema.js +0 -38
  277. package/dist/schemas/MarkdownSchema.js.map +0 -1
  278. package/dist/schemas/hast/HastFromHtml.d.ts +0 -27
  279. package/dist/schemas/hast/HastFromHtml.d.ts.map +0 -1
  280. package/dist/schemas/hast/HastFromHtml.js +0 -107
  281. package/dist/schemas/hast/HastFromHtml.js.map +0 -1
  282. package/dist/schemas/hast/HastSchema.d.ts +0 -195
  283. package/dist/schemas/hast/HastSchema.d.ts.map +0 -1
  284. package/dist/schemas/hast/HastSchema.js +0 -183
  285. package/dist/schemas/hast/HastSchema.js.map +0 -1
  286. package/dist/schemas/hast/index.d.ts +0 -9
  287. package/dist/schemas/hast/index.d.ts.map +0 -1
  288. package/dist/schemas/hast/index.js +0 -3
  289. package/dist/schemas/hast/index.js.map +0 -1
  290. package/dist/schemas/index.d.ts +0 -14
  291. package/dist/schemas/index.d.ts.map +0 -1
  292. package/dist/schemas/index.js +0 -16
  293. package/dist/schemas/index.js.map +0 -1
  294. package/dist/schemas/mdast/MdastFromMarkdown.d.ts +0 -30
  295. package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +0 -1
  296. package/dist/schemas/mdast/MdastFromMarkdown.js +0 -79
  297. package/dist/schemas/mdast/MdastFromMarkdown.js.map +0 -1
  298. package/dist/schemas/mdast/MdastSchema.d.ts +0 -385
  299. package/dist/schemas/mdast/MdastSchema.d.ts.map +0 -1
  300. package/dist/schemas/mdast/MdastSchema.js +0 -266
  301. package/dist/schemas/mdast/MdastSchema.js.map +0 -1
  302. package/dist/schemas/mdast/index.d.ts +0 -10
  303. package/dist/schemas/mdast/index.d.ts.map +0 -1
  304. package/dist/schemas/mdast/index.js +0 -4
  305. package/dist/schemas/mdast/index.js.map +0 -1
  306. package/dist/schemas/mdast/mdastToString.d.ts +0 -13
  307. package/dist/schemas/mdast/mdastToString.d.ts.map +0 -1
  308. package/dist/schemas/mdast/mdastToString.js +0 -85
  309. package/dist/schemas/mdast/mdastToString.js.map +0 -1
  310. package/dist/schemas/nodes/block/BlockSchema.d.ts +0 -43
  311. package/dist/schemas/nodes/block/BlockSchema.d.ts.map +0 -1
  312. package/dist/schemas/nodes/block/BlockSchema.js +0 -634
  313. package/dist/schemas/nodes/block/BlockSchema.js.map +0 -1
  314. package/dist/schemas/nodes/block/index.d.ts +0 -7
  315. package/dist/schemas/nodes/block/index.d.ts.map +0 -1
  316. package/dist/schemas/nodes/block/index.js +0 -7
  317. package/dist/schemas/nodes/block/index.js.map +0 -1
  318. package/dist/schemas/nodes/index.d.ts +0 -9
  319. package/dist/schemas/nodes/index.d.ts.map +0 -1
  320. package/dist/schemas/nodes/index.js +0 -12
  321. package/dist/schemas/nodes/index.js.map +0 -1
  322. package/dist/schemas/nodes/inline/InlineSchema.d.ts +0 -48
  323. package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +0 -1
  324. package/dist/schemas/nodes/inline/InlineSchema.js +0 -436
  325. package/dist/schemas/nodes/inline/InlineSchema.js.map +0 -1
  326. package/dist/schemas/nodes/inline/index.d.ts +0 -7
  327. package/dist/schemas/nodes/inline/index.d.ts.map +0 -1
  328. package/dist/schemas/nodes/inline/index.js +0 -7
  329. package/dist/schemas/nodes/inline/index.js.map +0 -1
  330. package/dist/schemas/nodes/macro/MacroSchema.d.ts +0 -27
  331. package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +0 -1
  332. package/dist/schemas/nodes/macro/MacroSchema.js +0 -162
  333. package/dist/schemas/nodes/macro/MacroSchema.js.map +0 -1
  334. package/dist/schemas/nodes/macro/index.d.ts +0 -7
  335. package/dist/schemas/nodes/macro/index.d.ts.map +0 -1
  336. package/dist/schemas/nodes/macro/index.js +0 -7
  337. package/dist/schemas/nodes/macro/index.js.map +0 -1
  338. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +0 -53
  339. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +0 -1
  340. package/dist/schemas/preprocessing/ConfluencePreprocessor.js +0 -349
  341. package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +0 -1
  342. package/dist/schemas/preprocessing/index.d.ts +0 -8
  343. package/dist/schemas/preprocessing/index.d.ts.map +0 -1
  344. package/dist/schemas/preprocessing/index.js +0 -2
  345. package/dist/schemas/preprocessing/index.js.map +0 -1
  346. package/dist/serializers/ConfluenceSerializer.d.ts +0 -30
  347. package/dist/serializers/ConfluenceSerializer.d.ts.map +0 -1
  348. package/dist/serializers/ConfluenceSerializer.js +0 -551
  349. package/dist/serializers/ConfluenceSerializer.js.map +0 -1
  350. package/dist/serializers/MarkdownSerializer.d.ts +0 -34
  351. package/dist/serializers/MarkdownSerializer.d.ts.map +0 -1
  352. package/dist/serializers/MarkdownSerializer.js +0 -355
  353. package/dist/serializers/MarkdownSerializer.js.map +0 -1
  354. package/dist/serializers/index.d.ts +0 -8
  355. package/dist/serializers/index.d.ts.map +0 -1
  356. package/dist/serializers/index.js +0 -8
  357. package/dist/serializers/index.js.map +0 -1
@@ -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,53 +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
- /**
24
- * Transform raw Confluence HTML to preprocessed HTML.
25
- *
26
- * Applies the following transformations:
27
- * - Layout section extraction with markers
28
- * - Structured macro expansion (code, info panels, expand, TOC, status)
29
- * - Task list normalization
30
- * - Image attachment processing
31
- * - Emoticon conversion
32
- * - User mention extraction
33
- * - ADF extension handling
34
- * - Namespace stripping (ac:, ri: tags)
35
- *
36
- * @example
37
- * ```typescript
38
- * import { PreprocessedHtmlFromConfluence } from "@knpkv/confluence-to-markdown/schemas/preprocessing"
39
- * import * as Schema from "effect/Schema"
40
- * import { Effect } from "effect"
41
- *
42
- * const program = Effect.gen(function* () {
43
- * const html = yield* Schema.decode(PreprocessedHtmlFromConfluence)(
44
- * '<ac:structured-macro ac:name="info"><ac:rich-text-body>Content</ac:rich-text-body></ac:structured-macro>'
45
- * )
46
- * // html contains: <div data-macro="info">Content</div>
47
- * })
48
- * ```
49
- *
50
- * @category Schemas
51
- */
52
- export declare const PreprocessedHtmlFromConfluence: Schema.transformOrFail<typeof Schema.String, Schema.brand<typeof Schema.String, "PreprocessedHtml">, never>;
53
- //# 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;AAG1C,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;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,8BAA8B,6GAsB1C,CAAA"}
@@ -1,349 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as ParseResult from "effect/ParseResult";
3
- import * as Schema from "effect/Schema";
4
- import { PanelTypes } from "../../ast/MacroNode.js";
5
- /** Maximum HTML input size (1MB) to prevent ReDoS attacks */
6
- const MAX_HTML_SIZE = 1024 * 1024;
7
- /**
8
- * Schema for preprocessed HTML brand.
9
- *
10
- * @category Schemas
11
- */
12
- export const PreprocessedHtmlSchema = Schema.String.pipe(Schema.brand("PreprocessedHtml"));
13
- /**
14
- * Transform raw Confluence HTML to preprocessed HTML.
15
- *
16
- * Applies the following transformations:
17
- * - Layout section extraction with markers
18
- * - Structured macro expansion (code, info panels, expand, TOC, status)
19
- * - Task list normalization
20
- * - Image attachment processing
21
- * - Emoticon conversion
22
- * - User mention extraction
23
- * - ADF extension handling
24
- * - Namespace stripping (ac:, ri: tags)
25
- *
26
- * @example
27
- * ```typescript
28
- * import { PreprocessedHtmlFromConfluence } from "@knpkv/confluence-to-markdown/schemas/preprocessing"
29
- * import * as Schema from "effect/Schema"
30
- * import { Effect } from "effect"
31
- *
32
- * const program = Effect.gen(function* () {
33
- * const html = yield* Schema.decode(PreprocessedHtmlFromConfluence)(
34
- * '<ac:structured-macro ac:name="info"><ac:rich-text-body>Content</ac:rich-text-body></ac:structured-macro>'
35
- * )
36
- * // html contains: <div data-macro="info">Content</div>
37
- * })
38
- * ```
39
- *
40
- * @category Schemas
41
- */
42
- export const PreprocessedHtmlFromConfluence = Schema.transformOrFail(Schema.String, PreprocessedHtmlSchema, {
43
- strict: true,
44
- decode: (html, _options, ast) => Effect.gen(function* () {
45
- if (html.length > MAX_HTML_SIZE) {
46
- return yield* Effect.fail(new ParseResult.Type(ast, html, `HTML input too large: ${html.length} bytes (max ${MAX_HTML_SIZE})`));
47
- }
48
- return preprocessConfluenceHtml(html);
49
- }),
50
- encode: (preprocessed, _options, _ast) =>
51
- // Identity - we can't reverse preprocessing
52
- Effect.succeed(preprocessed)
53
- });
54
- /**
55
- * Main preprocessing pipeline.
56
- */
57
- const preprocessConfluenceHtml = (html) => {
58
- let result = html;
59
- // 1. Process layouts FIRST - before any other preprocessing
60
- result = preprocessLayouts(result);
61
- // 2. Process structured macros iteratively
62
- result = processStructuredMacros(result);
63
- // 3. Process task lists BEFORE stripping ac: tags
64
- result = preprocessTaskLists(result);
65
- // 4. Process images with attachments
66
- result = preprocessImages(result);
67
- // 5. Process emoticons
68
- result = preprocessEmoticons(result);
69
- // 6. Process user mentions
70
- result = preprocessUserMentions(result);
71
- // 7. Process Confluence links with link-body
72
- result = preprocessConfluenceLinks(result);
73
- // 8. Process ADF extensions (decision lists)
74
- result = preprocessAdfExtensions(result);
75
- // 9. Strip remaining ac/ri namespace tags
76
- result = stripNamespaces(result);
77
- return result;
78
- };
79
- /**
80
- * Process Confluence layouts.
81
- * Inserts markers for roundtrip preservation.
82
- */
83
- const preprocessLayouts = (html) => {
84
- return html.replace(/<ac:layout>([\s\S]*?)<\/ac:layout>/gi, (_, layoutContent) => {
85
- let result = "<div data-cf-marker><!--cf:layout-start--></div>";
86
- let sectionIndex = 0;
87
- const sectionRegex = /<ac:layout-section([^>]*)>([\s\S]*?)<\/ac:layout-section>/gi;
88
- let sectionMatch;
89
- while ((sectionMatch = sectionRegex.exec(layoutContent)) !== null) {
90
- const sectionAttrs = sectionMatch[1] ?? "";
91
- const sectionContent = sectionMatch[2] ?? "";
92
- const typeMatch = sectionAttrs.match(/ac:type="([^"]*)"/);
93
- const sectionType = typeMatch?.[1] ?? "fixed-width";
94
- const breakoutModeMatch = sectionAttrs.match(/ac:breakout-mode="([^"]*)"/);
95
- const breakoutWidthMatch = sectionAttrs.match(/ac:breakout-width="([^"]*)"/);
96
- const breakoutMode = breakoutModeMatch?.[1] ?? "";
97
- const breakoutWidth = breakoutWidthMatch?.[1] ?? "";
98
- const cellContents = [];
99
- const cellRegex = /<ac:layout-cell[^>]*>([\s\S]*?)<\/ac:layout-cell>/gi;
100
- let cellMatch;
101
- while ((cellMatch = cellRegex.exec(sectionContent)) !== null) {
102
- cellContents.push(cellMatch[1] ?? "");
103
- }
104
- result += `<div data-cf-marker><!--cf:section:${sectionIndex};${encodeURIComponent(sectionType)};${encodeURIComponent(breakoutMode)};${encodeURIComponent(breakoutWidth)};${cellContents.length}--></div>`;
105
- cellContents.forEach((cellContent, cellIndex) => {
106
- result += `<div data-cf-marker><!--cf:cell:${sectionIndex};${cellIndex}--></div>${cellContent}`;
107
- });
108
- result += `<div data-cf-marker><!--cf:section-end:${sectionIndex}--></div>`;
109
- sectionIndex++;
110
- }
111
- result += "<div data-cf-marker><!--cf:layout-end--></div>";
112
- return result;
113
- });
114
- };
115
- /**
116
- * Process structured macros iteratively.
117
- */
118
- const processStructuredMacros = (html) => {
119
- let result = html;
120
- let iterations = 0;
121
- const maxIterations = 100;
122
- while (iterations < maxIterations) {
123
- const macroStart = result.indexOf("<ac:structured-macro");
124
- if (macroStart === -1)
125
- break;
126
- // First, find the end of the opening tag to check if self-closing
127
- const openingTagEnd = result.indexOf(">", macroStart);
128
- if (openingTagEnd === -1)
129
- break;
130
- // Check if self-closing (ends with />)
131
- const isSelfClosing = result[openingTagEnd - 1] === "/";
132
- let endPos;
133
- if (isSelfClosing) {
134
- // Self-closing macro: <ac:structured-macro ... />
135
- endPos = openingTagEnd + 1;
136
- }
137
- else {
138
- // Regular macro with body: find matching closing tag
139
- let depth = 1;
140
- let pos = openingTagEnd + 1;
141
- endPos = -1;
142
- while (pos < result.length && depth > 0) {
143
- if (result.slice(pos, pos + 20) === "<ac:structured-macro") {
144
- // Check if this nested opening is also self-closing
145
- const nestedEnd = result.indexOf(">", pos);
146
- if (nestedEnd !== -1 && result[nestedEnd - 1] === "/") {
147
- // Self-closing nested macro - don't change depth
148
- pos = nestedEnd + 1;
149
- }
150
- else {
151
- depth++;
152
- pos += 20;
153
- }
154
- }
155
- else if (result.slice(pos, pos + 21) === "</ac:structured-macro") {
156
- depth--;
157
- if (depth === 0) {
158
- endPos = result.indexOf(">", pos) + 1;
159
- }
160
- pos += 21;
161
- }
162
- else {
163
- pos++;
164
- }
165
- }
166
- if (endPos === -1)
167
- break;
168
- }
169
- const macroContent = result.slice(macroStart, endPos);
170
- const replacement = processSingleMacro(macroContent);
171
- result = result.slice(0, macroStart) + replacement + result.slice(endPos);
172
- iterations++;
173
- }
174
- return result;
175
- };
176
- /**
177
- * Process a single Confluence macro to HTML.
178
- */
179
- const processSingleMacro = (macroContent) => {
180
- const nameMatch = macroContent.match(/ac:name="([^"]+)"/);
181
- const macroName = nameMatch?.[1] ?? "";
182
- // Plain-text body (for code macros)
183
- const plainBodyStart = macroContent.indexOf("<ac:plain-text-body><![CDATA[");
184
- const plainBodyEnd = macroContent.indexOf("]]></ac:plain-text-body>");
185
- if (plainBodyStart !== -1 && plainBodyEnd !== -1) {
186
- const content = macroContent.slice(plainBodyStart + 29, plainBodyEnd);
187
- const langMatch = macroContent.match(/ac:name="code".*?<ac:parameter[^>]*ac:name="language"[^>]*>([^<]+)/);
188
- const language = langMatch?.[1] ?? "";
189
- return `<pre data-macro="code" data-language="${language}"><code>${escapeHtml(content)}</code></pre>`;
190
- }
191
- // Rich-text body
192
- const richBodyStart = macroContent.indexOf("<ac:rich-text-body>");
193
- const richBodyEnd = macroContent.indexOf("</ac:rich-text-body>");
194
- if (richBodyStart !== -1 && richBodyEnd !== -1) {
195
- const content = macroContent.slice(richBodyStart + 19, richBodyEnd);
196
- // Info/warning/note panels
197
- if (PanelTypes.includes(macroName)) {
198
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
199
- const title = titleMatch?.[1] ?? "";
200
- return `<div data-macro="${macroName}" data-title="${escapeHtml(title)}">${content}</div>`;
201
- }
202
- // Expand macro
203
- if (macroName === "expand") {
204
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
205
- const title = titleMatch?.[1] ?? "";
206
- return `<details data-macro="expand"><summary>${escapeHtml(title)}</summary>${content}</details>`;
207
- }
208
- return content;
209
- }
210
- // TOC macro
211
- if (macroName === "toc") {
212
- const minMatch = macroContent.match(/<ac:parameter[^>]*ac:name="minLevel"[^>]*>(\d+)/);
213
- const maxMatch = macroContent.match(/<ac:parameter[^>]*ac:name="maxLevel"[^>]*>(\d+)/);
214
- return `<nav data-macro="toc" data-min="${minMatch?.[1] ?? ""}" data-max="${maxMatch?.[1] ?? ""}"></nav>`;
215
- }
216
- // Status macro
217
- if (macroName === "status") {
218
- const colorMatch = macroContent.match(/<ac:parameter[^>]*ac:name="colour"[^>]*>([^<]+)/);
219
- const titleMatch = macroContent.match(/<ac:parameter[^>]*ac:name="title"[^>]*>([^<]+)/);
220
- return `<span data-macro="status" data-color="${colorMatch?.[1] ?? ""}">${escapeHtml(titleMatch?.[1] ?? "")}</span>`;
221
- }
222
- // Unknown macro - preserve as unsupported
223
- return `<div data-unsupported-macro="${macroName}">${macroContent}</div>`;
224
- };
225
- /**
226
- * Preprocess task lists.
227
- */
228
- const preprocessTaskLists = (html) => {
229
- let result = html;
230
- const taskRegex = /<ac:task>([\s\S]*?)<\/ac:task>/gi;
231
- result = result.replace(taskRegex, (_, taskContent) => {
232
- const idMatch = taskContent.match(/<ac:task-id>([^<]*)<\/ac:task-id>/);
233
- const uuidMatch = taskContent.match(/<ac:task-uuid>([^<]*)<\/ac:task-uuid>/);
234
- const statusMatch = taskContent.match(/<ac:task-status>([^<]*)<\/ac:task-status>/);
235
- const bodyMatch = taskContent.match(/<ac:task-body>([\s\S]*?)<\/ac:task-body>/);
236
- const id = idMatch?.[1] ?? "";
237
- const uuid = uuidMatch?.[1] ?? "";
238
- const status = statusMatch?.[1] ?? "incomplete";
239
- const body = bodyMatch?.[1] ?? "";
240
- const cleanBody = body.replace(/<[^>]+>/g, "").trim();
241
- return `<li data-task-id="${id}" data-task-uuid="${uuid}" data-task-status="${status}">${cleanBody}</li>`;
242
- });
243
- result = result.replace(/<ac:task-list[^>]*>/gi, "<ul data-macro=\"task-list\">");
244
- result = result.replace(/<\/ac:task-list>/gi, "</ul>");
245
- return result;
246
- };
247
- /**
248
- * Preprocess images with attachments.
249
- */
250
- const preprocessImages = (html) => {
251
- return html.replace(/<ac:image([^>]*)>[\s\S]*?<ri:attachment([^>]*)\/>[\s\S]*?<\/ac:image>/gi, (_, imageAttrs, attachmentAttrs) => {
252
- const filename = attachmentAttrs.match(/ri:filename="([^"]*)"/)?.[1] ?? "";
253
- const align = imageAttrs.match(/ac:align="([^"]*)"/)?.[1] ?? "";
254
- const width = imageAttrs.match(/ac:width="([^"]*)"/)?.[1] ?? "";
255
- const alt = imageAttrs.match(/ac:alt="([^"]*)"/)?.[1] ?? "";
256
- const attrs = [
257
- `data-attachment="${escapeHtml(filename)}"`,
258
- align && `data-align="${align}"`,
259
- width && `data-width="${width}"`,
260
- alt && `alt="${escapeHtml(alt)}"`
261
- ].filter(Boolean).join(" ");
262
- return `<img ${attrs}>`;
263
- });
264
- };
265
- /**
266
- * Preprocess emoticons.
267
- */
268
- const preprocessEmoticons = (html) => {
269
- return html.replace(/<ac:emoticon([^>]*)\/?>/gi, (_, attrs) => {
270
- const shortname = attrs.match(/ac:emoji-shortname="([^"]*)"/)?.[1] ?? "";
271
- const emojiId = attrs.match(/ac:emoji-id="([^"]*)"/)?.[1] ?? "";
272
- const fallback = attrs.match(/ac:emoji-fallback="([^"]*)"/)?.[1] ?? "";
273
- return `<span data-emoji="${escapeHtml(shortname)}" data-emoji-id="${emojiId}">${fallback}</span>`;
274
- });
275
- };
276
- /**
277
- * Preprocess user mentions.
278
- */
279
- const preprocessUserMentions = (html) => {
280
- return html.replace(/<ac:link>\s*<ri:user([^>]*)\/?>\s*<\/ac:link>/gi, (_, attrs) => {
281
- const accountId = attrs.match(/ri:account-id="([^"]*)"/)?.[1] ?? "";
282
- return `<span data-user-mention="${escapeHtml(accountId)}"></span>`;
283
- });
284
- };
285
- /**
286
- * Preprocess Confluence links with link-body.
287
- * <ac:link><ac:link-body>Link text</ac:link-body></ac:link>
288
- * -> <span data-confluence-link>Link text</span>
289
- */
290
- const preprocessConfluenceLinks = (html) => {
291
- return html.replace(/<ac:link>\s*<ac:link-body>([\s\S]*?)<\/ac:link-body>\s*<\/ac:link>/gi, (_, linkText) => {
292
- return `<span data-confluence-link>${linkText}</span>`;
293
- });
294
- };
295
- /**
296
- * Preprocess ADF extensions (decision lists).
297
- */
298
- const preprocessAdfExtensions = (html) => {
299
- return html.replace(/<ac:adf-extension>([\s\S]*?)<\/ac:adf-extension>/gi, (_, content) => {
300
- if (content.includes("type=\"decision-list\"")) {
301
- const items = [];
302
- const itemRegex = /<ac:adf-node\s+type="decision-item">([\s\S]*?)<\/ac:adf-node>/gi;
303
- let itemMatch;
304
- while ((itemMatch = itemRegex.exec(content)) !== null) {
305
- const itemContent = itemMatch[1] ?? "";
306
- const localIdMatch = itemContent.match(/<ac:adf-attribute\s+key="local-id">([^<]*)<\/ac:adf-attribute>/);
307
- const stateMatch = itemContent.match(/<ac:adf-attribute\s+key="state">([^<]*)<\/ac:adf-attribute>/);
308
- const textMatch = itemContent.match(/<ac:adf-content>([^<]*)<\/ac:adf-content>/);
309
- items.push({
310
- localId: localIdMatch?.[1] ?? "",
311
- state: stateMatch?.[1] ?? "UNDECIDED",
312
- content: textMatch?.[1] ?? ""
313
- });
314
- }
315
- if (items.length > 0) {
316
- const encoded = items.map((item) => `${encodeURIComponent(item.localId)};${encodeURIComponent(item.state)};${encodeURIComponent(item.content)}`).join("|");
317
- return `<!--cf:decision:${encoded}-->`;
318
- }
319
- }
320
- // Check if it's an ADF panel (note, info, warning, etc.)
321
- if (content.includes("type=\"panel\"")) {
322
- const panelTypeMatch = content.match(/<ac:adf-attribute\s+key="panel-type">([^<]*)<\/ac:adf-attribute>/);
323
- const panelType = panelTypeMatch?.[1] ?? "info";
324
- const contentMatch = content.match(/<ac:adf-content>([\s\S]*?)<\/ac:adf-content>/);
325
- const innerContent = contentMatch?.[1] ?? "";
326
- return `<div data-macro="${panelType}" data-title="">${innerContent}</div>`;
327
- }
328
- const fallbackMatch = content.match(/<ac:adf-fallback>([\s\S]*?)<\/ac:adf-fallback>/);
329
- if (fallbackMatch) {
330
- return fallbackMatch[1] ?? "";
331
- }
332
- return "";
333
- });
334
- };
335
- /**
336
- * Strip remaining ac/ri namespace tags.
337
- */
338
- const stripNamespaces = (html) => {
339
- return html
340
- .replace(/<ac:parameter[^>]{0,1000}>[^<]{0,10000}<\/ac:parameter>/gi, "")
341
- .replace(/<\/?ac:[a-z-]{1,50}[^>]{0,1000}>/gi, "")
342
- .replace(/<\/?ri:[a-z-]{1,50}[^>]{0,1000}\/?>/gi, "");
343
- };
344
- const escapeHtml = (str) => str
345
- .replace(/&/g, "&amp;")
346
- .replace(/</g, "&lt;")
347
- .replace(/>/g, "&gt;")
348
- .replace(/"/g, "&quot;");
349
- //# 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"}