@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
@@ -0,0 +1,547 @@
1
+ /**
2
+ * Reverse the AdfWalker's placeholder syntax back into proper ADF nodes
3
+ * after the @atlaskit markdown transformer has run.
4
+ *
5
+ * The walker emits Confluence-only nodes (status, extension, inlineExtension)
6
+ * as HTML/comment placeholders so they survive a pull. The markdown transformer
7
+ * has no concept of these nodes, so on push it parses the placeholders as
8
+ * plain text — Confluence then renders the literal HTML/comment. This module
9
+ * walks the produced ADF and rewrites those text patterns into the structured
10
+ * nodes the editor expects.
11
+ *
12
+ * Patterns recognized (must match the AdfWalker emission exactly):
13
+ * - `<span class="adf-status" data-color="COLOR">TEXT</span>`
14
+ * - `<!-- adf:extension key=KEY type=TYPE attrs=BASE64 -->` (block, when
15
+ * the whole paragraph is just this comment; `attrs` is base64 JSON of
16
+ * the node's full attrs — parameters, localId, layout — and wins over
17
+ * the readable key/type parts; key/type-only is the legacy form)
18
+ * - `<!-- adf:paragraph marks=BASE64 --> BODY <!-- adf:/paragraph -->`
19
+ * (the body paragraph regains its paragraph-level marks)
20
+ * - `<!-- adf:bodiedExtension … --> BODY <!-- adf:/bodiedExtension -->`
21
+ * (the sibling blocks between the markers become the extension's body)
22
+ * - `<!-- adf:inlineCard attrs=BASE64 -->` (inline)
23
+ * - `<!-- adf:inlineExtension key=KEY type=TYPE attrs=BASE64 -->` (inline)
24
+ * - `<!-- adf:date node=BASE64 -->` and `<!-- adf:emoji node=BASE64 -->`
25
+ * (inline)
26
+ * - `<!-- adf:panel type=TYPE attrs=BASE64 --> BODY <!-- adf:/panel -->`
27
+ * (the sibling blocks between the markers become the panel's body)
28
+ * - `<!-- adf:TYPE node=BASE64 --> BODY <!-- adf:/TYPE -->` for selected
29
+ * native block nodes such as task/decision lists, expands, layouts,
30
+ * cards, and tables
31
+ * - `<u>TEXT</u>`, `<sub>TEXT</sub>`, `<sup>TEXT</sup>`, and exact styled
32
+ * spans emitted for Confluence-only inline marks
33
+ * - `[@Name](confluence-mention://ACCOUNT_ID)` (link mark with a
34
+ * custom scheme — the only way to round-trip mention accountIds)
35
+ * - `[[toc]]`, `[[toc:min=1,max=3]]` (block-level native syntax for the
36
+ * Confluence Table of Contents macro)
37
+ *
38
+ * @module
39
+ */
40
+ import * as Option from "effect/Option";
41
+ import * as Schema from "effect/Schema";
42
+ const STATUS_RE = /<span class="adf-status"\s+data-color="([^"]+)">([^<]*)<\/span>/g;
43
+ const INLINE_NODE_RE = /<!--\s*adf:(date|emoji)(?:\s+node=([\s\S]*?))?\s*-->/g;
44
+ const INLINE_CARD_RE = /<!--\s*adf:inlineCard(?:\s+attrs=([\s\S]*?))?\s*-->/g;
45
+ const INLINE_EXTENSION_RE = /<!--\s*adf:inlineExtension(?:\s+key=(\S+?))?(?:\s+type=(\S+?))?(?:\s+attrs=([\s\S]*?))?\s*-->/g;
46
+ const UNDERLINE_RE = /<u>([^<]*)<\/u>/g;
47
+ const SUBSCRIPT_RE = /<sub>([^<]*)<\/sub>/g;
48
+ const SUPERSCRIPT_RE = /<sup>([^<]*)<\/sup>/g;
49
+ const TEXT_COLOR_RE = /<span style="color:([^"<>]+)">([^<]*)<\/span>/g;
50
+ const BACKGROUND_COLOR_RE = /<span style="background-color:([^"<>]+)">([^<]*)<\/span>/g;
51
+ const COMBINED_INLINE_RE = new RegExp([
52
+ INLINE_NODE_RE.source,
53
+ STATUS_RE.source,
54
+ INLINE_CARD_RE.source,
55
+ INLINE_EXTENSION_RE.source,
56
+ UNDERLINE_RE.source,
57
+ SUBSCRIPT_RE.source,
58
+ SUPERSCRIPT_RE.source,
59
+ TEXT_COLOR_RE.source,
60
+ BACKGROUND_COLOR_RE.source
61
+ ].join("|"), "g");
62
+ const BLOCK_EXTENSION_RE = /^\s*<!--\s*adf:(extension|bodiedExtension)(?:\s+key=(\S+?))?(?:\s+type=(\S+?))?(?:\s+attrs=([\s\S]*?))?\s*-->\s*$/;
63
+ const BODIED_EXTENSION_END_RE = /^\s*<!--\s*adf:\/bodiedExtension\s*-->\s*$/;
64
+ const PANEL_RE = /^\s*<!--\s*adf:panel(?:\s+type=(\S+?))?(?:\s+attrs=([\s\S]*?))?\s*-->\s*$/;
65
+ const PANEL_END_RE = /^\s*<!--\s*adf:\/panel\s*-->\s*$/;
66
+ const ENCODED_BLOCK_NODE_RE = /^\s*<!--\s*adf:(taskList|decisionList|expand|nestedExpand|table|layoutSection|blockCard|embedCard)(?:\s+node=([\s\S]*?))?\s*-->\s*$/;
67
+ const ENCODED_BLOCK_NODE_END_RE = /^\s*<!--\s*adf:\/(taskList|decisionList|expand|nestedExpand|table|layoutSection|blockCard|embedCard)\s*-->\s*$/;
68
+ const PARAGRAPH_MARKS_RE = /^\s*<!--\s*adf:paragraph(?:\s+marks=([\s\S]*?))?\s*-->\s*$/;
69
+ const PARAGRAPH_MARKS_END_RE = /^\s*<!--\s*adf:\/paragraph\s*-->\s*$/;
70
+ const TOC_RE = /^\s*\[\[toc(?::([^\]]+))?\]\]\s*$/;
71
+ const CONFLUENCE_CORE_MACRO_TYPE = "com.atlassian.confluence.macro.core";
72
+ const textNode = (text, marks) => marks && marks.length > 0 ? { type: "text", text, marks } : { type: "text", text };
73
+ const addMark = (marks, mark) => marks && marks.length > 0 ? [...marks, mark] : [mark];
74
+ // Code-marked text is a *quotation* of placeholder syntax, not a placeholder
75
+ // (the walker never emits placeholders with a code mark) — expanding it would
76
+ // corrupt documentation that demonstrates the syntax.
77
+ const hasCodeMark = (n) => (n.marks ?? []).some((m) => m.type === "code");
78
+ // Parents whose content model permits bodiedExtension per @atlaskit/adf-schema
79
+ // (blockquote/listItem/tableCell allow plain extension but NOT bodied — emitting
80
+ // one there fails outgoing validation and the whole push errors out).
81
+ const BODIED_EXTENSION_PARENTS = new Set(["doc", "layoutColumn"]);
82
+ // Web APIs only (atob/TextDecoder) — this module is a standalone subpath
83
+ // export and must not assume Node, mirroring the walker's encoder.
84
+ const fromBase64 = (b64) => {
85
+ const bin = atob(b64);
86
+ return new TextDecoder().decode(Uint8Array.from(bin, (c) => c.charCodeAt(0)));
87
+ };
88
+ // JSON string → free-form attrs record; rejects null/arrays/primitives.
89
+ const AttrsBlob = Schema.Record(Schema.String, Schema.Unknown);
90
+ const decodeAttrsBlob = Schema.decodeUnknownOption(AttrsBlob);
91
+ const decodeAttrs = (b64) => {
92
+ if (!b64)
93
+ return null;
94
+ try {
95
+ const raw = b64.trim();
96
+ const parsed = JSON.parse(raw.startsWith("{") ? raw : fromBase64(raw));
97
+ const decoded = decodeAttrsBlob(parsed);
98
+ return Option.isSome(decoded) ? decoded.value : null;
99
+ }
100
+ catch {
101
+ // Invalid JSON/base64 (hand-edited file?) — fall back to the readable key/type.
102
+ return null;
103
+ }
104
+ };
105
+ const buildExtensionAttrs = (key, type, attrsB64) => {
106
+ const decoded = decodeAttrs(attrsB64);
107
+ if (decoded)
108
+ return decoded;
109
+ const attrs = {};
110
+ if (key)
111
+ attrs.extensionKey = key;
112
+ if (type)
113
+ attrs.extensionType = type;
114
+ return attrs;
115
+ };
116
+ const buildPanelAttrs = (type, attrsB64) => {
117
+ const decoded = decodeAttrs(attrsB64);
118
+ if (decoded)
119
+ return decoded;
120
+ return type ? { panelType: type } : {};
121
+ };
122
+ const buildInlineCardAttrs = (attrsB64) => decodeAttrs(attrsB64) ?? {};
123
+ const decodeMarks = (b64) => {
124
+ if (!b64)
125
+ return [];
126
+ try {
127
+ const raw = b64.trim();
128
+ const parsed = JSON.parse(raw.startsWith("[") ? raw : fromBase64(raw));
129
+ return Array.isArray(parsed)
130
+ ? parsed.filter((mark) => mark !== null && typeof mark === "object" && typeof mark["type"] === "string")
131
+ : [];
132
+ }
133
+ catch {
134
+ return [];
135
+ }
136
+ };
137
+ const decodeNode = (b64) => {
138
+ if (!b64)
139
+ return null;
140
+ try {
141
+ const raw = b64.trim();
142
+ const parsed = JSON.parse(raw.startsWith("{") ? raw : fromBase64(raw));
143
+ return parsed !== null && typeof parsed === "object" &&
144
+ typeof parsed["type"] === "string"
145
+ ? parsed
146
+ : null;
147
+ }
148
+ catch {
149
+ return null;
150
+ }
151
+ };
152
+ /** Split a text node into a sequence of text + status + inlineExtension nodes. */
153
+ const expandInlineText = (text, marks) => {
154
+ // Reset lastIndex; sticky regexes are stateful across calls.
155
+ const re = new RegExp(COMBINED_INLINE_RE.source, "g");
156
+ const out = [];
157
+ let lastIndex = 0;
158
+ let match;
159
+ while ((match = re.exec(text)) !== null) {
160
+ if (match.index > lastIndex) {
161
+ out.push(textNode(text.slice(lastIndex, match.index), marks));
162
+ }
163
+ // Capture groups follow COMBINED_INLINE_RE order.
164
+ // InlineNode: 1=type, 2=node. Status: 3=color, 4=text.
165
+ // InlineCard: 5=attrs. InlineExtension: 6=key, 7=type, 8=attrs.
166
+ // Underline: 9=text. Sub: 10=text. Sup: 11=text.
167
+ // Text color: 12=color, 13=text. Background color: 14=color, 15=text.
168
+ if (match[1] !== undefined) {
169
+ const decoded = decodeNode(match[2]);
170
+ if (decoded && decoded.type === match[1])
171
+ out.push(decoded);
172
+ }
173
+ else if (match[3] !== undefined) {
174
+ out.push({ type: "status", attrs: { text: match[4] ?? "", color: match[3] } });
175
+ }
176
+ else if (match[5] !== undefined) {
177
+ out.push({ type: "inlineCard", attrs: buildInlineCardAttrs(match[5]) });
178
+ }
179
+ else if (match[9] !== undefined) {
180
+ out.push(textNode(match[9], addMark(marks, { type: "underline" })));
181
+ }
182
+ else if (match[10] !== undefined) {
183
+ out.push(textNode(match[10], addMark(marks, { type: "subsup", attrs: { type: "sub" } })));
184
+ }
185
+ else if (match[11] !== undefined) {
186
+ out.push(textNode(match[11], addMark(marks, { type: "subsup", attrs: { type: "sup" } })));
187
+ }
188
+ else if (match[12] !== undefined) {
189
+ out.push(textNode(match[13] ?? "", addMark(marks, { type: "textColor", attrs: { color: match[12] } })));
190
+ }
191
+ else if (match[14] !== undefined) {
192
+ out.push(textNode(match[15] ?? "", addMark(marks, { type: "backgroundColor", attrs: { color: match[14] } })));
193
+ }
194
+ else {
195
+ out.push({ type: "inlineExtension", attrs: buildExtensionAttrs(match[6], match[7], match[8]) });
196
+ }
197
+ lastIndex = match.index + match[0].length;
198
+ }
199
+ if (lastIndex === 0)
200
+ return [textNode(text, marks)];
201
+ if (lastIndex < text.length)
202
+ out.push(textNode(text.slice(lastIndex), marks));
203
+ return out;
204
+ };
205
+ const MENTION_SCHEME = "confluence-mention://";
206
+ /**
207
+ * If the text node carries a `confluence-mention://` link mark, return the
208
+ * corresponding mention node — otherwise null.
209
+ */
210
+ const tryParseMentionTextNode = (n) => {
211
+ if (!n.text || !n.marks)
212
+ return null;
213
+ const link = n.marks.find((m) => m.type === "link");
214
+ if (!link)
215
+ return null;
216
+ const href = link.attrs?.["href"];
217
+ if (typeof href !== "string" || !href.startsWith(MENTION_SCHEME))
218
+ return null;
219
+ let id;
220
+ try {
221
+ id = decodeURIComponent(href.slice(MENTION_SCHEME.length));
222
+ }
223
+ catch {
224
+ // Malformed encoding — leave the link alone rather than crashing the push.
225
+ return null;
226
+ }
227
+ return { type: "mention", attrs: { id, text: n.text } };
228
+ };
229
+ /**
230
+ * If the paragraph's only content is a single text node holding a block-extension
231
+ * comment, return the marker's kind and reconstructed attrs — otherwise null.
232
+ */
233
+ const soleTextChild = (node) => {
234
+ if (node.type !== "paragraph")
235
+ return null;
236
+ const content = node.content ?? [];
237
+ if (content.length !== 1)
238
+ return null;
239
+ const child = content[0];
240
+ if (!child || child.type !== "text" || !child.text || hasCodeMark(child))
241
+ return null;
242
+ return child;
243
+ };
244
+ const parseBlockExtensionParagraph = (node) => {
245
+ const child = soleTextChild(node);
246
+ if (!child || !child.text)
247
+ return null;
248
+ const match = BLOCK_EXTENSION_RE.exec(child.text);
249
+ if (!match)
250
+ return null;
251
+ const [, kind, key, type, attrsB64] = match;
252
+ return {
253
+ kind: kind === "bodiedExtension" ? "bodiedExtension" : "extension",
254
+ attrs: buildExtensionAttrs(key, type, attrsB64)
255
+ };
256
+ };
257
+ const parseTocParagraph = (node) => {
258
+ const child = soleTextChild(node);
259
+ if (!child || !child.text)
260
+ return null;
261
+ const match = TOC_RE.exec(child.text);
262
+ if (!match)
263
+ return null;
264
+ let minLevel;
265
+ let maxLevel;
266
+ const params = match[1]?.trim();
267
+ if (params && params.length > 0) {
268
+ const seen = new Set();
269
+ for (const part of params.split(",")) {
270
+ const [rawKey, rawValue, ...rest] = part.split("=");
271
+ if (rest.length > 0)
272
+ return null;
273
+ const key = rawKey?.trim();
274
+ const value = rawValue?.trim();
275
+ if ((key !== "min" && key !== "max") || !value || !/^[1-6]$/.test(value) || seen.has(key))
276
+ return null;
277
+ seen.add(key);
278
+ if (key === "min")
279
+ minLevel = value;
280
+ else
281
+ maxLevel = value;
282
+ }
283
+ }
284
+ else if (params !== undefined) {
285
+ return null;
286
+ }
287
+ const macroParams = {};
288
+ if (minLevel)
289
+ macroParams.minLevel = { value: minLevel };
290
+ if (maxLevel)
291
+ macroParams.maxLevel = { value: maxLevel };
292
+ const attrs = {
293
+ extensionKey: "toc",
294
+ extensionType: CONFLUENCE_CORE_MACRO_TYPE
295
+ };
296
+ if (Object.keys(macroParams).length > 0) {
297
+ attrs.parameters = { macroParams };
298
+ }
299
+ return { type: "extension", attrs };
300
+ };
301
+ const isBodiedExtensionEnd = (node) => {
302
+ const child = soleTextChild(node);
303
+ return child !== null && typeof child.text === "string" && BODIED_EXTENSION_END_RE.test(child.text);
304
+ };
305
+ const parsePanelParagraph = (node) => {
306
+ const child = soleTextChild(node);
307
+ if (!child || !child.text)
308
+ return null;
309
+ const match = PANEL_RE.exec(child.text);
310
+ if (!match)
311
+ return null;
312
+ const [, type, attrsB64] = match;
313
+ return buildPanelAttrs(type, attrsB64);
314
+ };
315
+ const isPanelEnd = (node) => {
316
+ const child = soleTextChild(node);
317
+ return child !== null && typeof child.text === "string" && PANEL_END_RE.test(child.text);
318
+ };
319
+ const parseEncodedBlockNodeParagraph = (node) => {
320
+ const child = soleTextChild(node);
321
+ if (!child || !child.text)
322
+ return null;
323
+ const match = ENCODED_BLOCK_NODE_RE.exec(child.text);
324
+ if (!match)
325
+ return null;
326
+ const decoded = decodeNode(match[2]);
327
+ if (!decoded || decoded.type !== match[1])
328
+ return null;
329
+ return { type: match[1], node: decoded };
330
+ };
331
+ const isEncodedBlockNodeEnd = (node, type) => {
332
+ const child = soleTextChild(node);
333
+ if (child === null || typeof child.text !== "string")
334
+ return false;
335
+ const match = ENCODED_BLOCK_NODE_END_RE.exec(child.text);
336
+ return match?.[1] === type;
337
+ };
338
+ const parseParagraphMarksParagraph = (node) => {
339
+ const child = soleTextChild(node);
340
+ if (!child || !child.text)
341
+ return null;
342
+ const match = PARAGRAPH_MARKS_RE.exec(child.text);
343
+ if (!match)
344
+ return null;
345
+ return decodeMarks(match[1]);
346
+ };
347
+ const isParagraphMarksEnd = (node) => {
348
+ const child = soleTextChild(node);
349
+ return child !== null && typeof child.text === "string" && PARAGRAPH_MARKS_END_RE.test(child.text);
350
+ };
351
+ /**
352
+ * Replace block-extension marker paragraphs among `children`. A bare
353
+ * `extension` marker becomes an extension node; a `bodiedExtension` marker
354
+ * swallows every sibling up to its `adf:/bodiedExtension` end marker as the
355
+ * extension's body.
356
+ *
357
+ * Pairing rules, in order of defence:
358
+ * - the forward scan stops at the next bodied *open* marker, so an unpaired
359
+ * legacy/hand-edited open cannot steal a later macro's end marker and
360
+ * swallow unrelated content in between;
361
+ * - an open with no end marker is downgraded to a plain extension (macro
362
+ * identity and configuration kept, body left in place as siblings);
363
+ * - an open/end pair with nothing in between keeps its bodied kind via a
364
+ * stub empty paragraph (the schema requires non-empty content);
365
+ * - parents whose content model forbids bodiedExtension (blockquote,
366
+ * listItem, …) get the downgrade too, or outgoing validation would fail;
367
+ * - stray end markers are dropped — they are this module's own syntax,
368
+ * never user content.
369
+ */
370
+ const groupBlockExtensions = (children, parentType) => {
371
+ const allowBodied = BODIED_EXTENSION_PARENTS.has(parentType);
372
+ const out = [];
373
+ for (let i = 0; i < children.length; i++) {
374
+ const child = children[i];
375
+ if (!child)
376
+ continue;
377
+ const marker = parseBlockExtensionParagraph(child);
378
+ if (!marker) {
379
+ if (!isBodiedExtensionEnd(child))
380
+ out.push(child);
381
+ continue;
382
+ }
383
+ if (marker.kind === "extension") {
384
+ out.push({ type: "extension", attrs: marker.attrs });
385
+ continue;
386
+ }
387
+ let end = -1;
388
+ for (let j = i + 1; j < children.length; j++) {
389
+ if (isBodiedExtensionEnd(children[j])) {
390
+ end = j;
391
+ break;
392
+ }
393
+ if (parseBlockExtensionParagraph(children[j])?.kind === "bodiedExtension")
394
+ break;
395
+ }
396
+ if (end === -1 || !allowBodied) {
397
+ out.push({ type: "extension", attrs: marker.attrs });
398
+ continue;
399
+ }
400
+ // Group recursively so an extension marker *inside* the body (a macro
401
+ // nested in a bodied macro) is also reverted, not left as literal text.
402
+ const body = groupBlockExtensions(children.slice(i + 1, end), "bodiedExtension");
403
+ out.push({
404
+ type: "bodiedExtension",
405
+ attrs: marker.attrs,
406
+ content: body.length > 0 ? body : [{ type: "paragraph", content: [] }]
407
+ });
408
+ i = end;
409
+ }
410
+ return out;
411
+ };
412
+ const groupPanels = (children) => {
413
+ const out = [];
414
+ for (let i = 0; i < children.length; i++) {
415
+ const child = children[i];
416
+ if (!child)
417
+ continue;
418
+ const attrs = parsePanelParagraph(child);
419
+ if (!attrs) {
420
+ if (!isPanelEnd(child))
421
+ out.push(child);
422
+ continue;
423
+ }
424
+ let end = -1;
425
+ for (let j = i + 1; j < children.length; j++) {
426
+ if (isPanelEnd(children[j])) {
427
+ end = j;
428
+ break;
429
+ }
430
+ if (parsePanelParagraph(children[j]))
431
+ break;
432
+ }
433
+ if (end === -1) {
434
+ out.push({ type: "panel", attrs, content: [{ type: "paragraph", content: [] }] });
435
+ continue;
436
+ }
437
+ const body = groupPanels(children.slice(i + 1, end));
438
+ out.push({
439
+ type: "panel",
440
+ attrs,
441
+ content: body.length > 0 ? body : [{ type: "paragraph", content: [] }]
442
+ });
443
+ i = end;
444
+ }
445
+ return out;
446
+ };
447
+ const groupEncodedBlockNodes = (children) => {
448
+ const out = [];
449
+ for (let i = 0; i < children.length; i++) {
450
+ const child = children[i];
451
+ if (!child)
452
+ continue;
453
+ const marker = parseEncodedBlockNodeParagraph(child);
454
+ if (!marker) {
455
+ out.push(child);
456
+ continue;
457
+ }
458
+ let end = -1;
459
+ for (let j = i + 1; j < children.length; j++) {
460
+ if (isEncodedBlockNodeEnd(children[j], marker.type)) {
461
+ end = j;
462
+ break;
463
+ }
464
+ if (parseEncodedBlockNodeParagraph(children[j]) !== null)
465
+ break;
466
+ }
467
+ out.push(marker.node);
468
+ if (end !== -1)
469
+ i = end;
470
+ }
471
+ return out;
472
+ };
473
+ const groupMarkedParagraphs = (children) => {
474
+ const out = [];
475
+ for (let i = 0; i < children.length; i++) {
476
+ const child = children[i];
477
+ if (!child)
478
+ continue;
479
+ const marks = parseParagraphMarksParagraph(child);
480
+ if (!marks) {
481
+ if (!isParagraphMarksEnd(child))
482
+ out.push(child);
483
+ continue;
484
+ }
485
+ let end = -1;
486
+ for (let j = i + 1; j < children.length; j++) {
487
+ if (isParagraphMarksEnd(children[j])) {
488
+ end = j;
489
+ break;
490
+ }
491
+ if (parseParagraphMarksParagraph(children[j]) !== null)
492
+ break;
493
+ }
494
+ if (end === -1) {
495
+ out.push({ type: "paragraph", marks, content: [] });
496
+ continue;
497
+ }
498
+ const body = children.slice(i + 1, end);
499
+ const first = body[0];
500
+ if (first?.type === "paragraph") {
501
+ out.push(marks.length > 0 ? { ...first, marks } : first);
502
+ for (const rest of body.slice(1))
503
+ out.push(rest);
504
+ }
505
+ else {
506
+ out.push({ type: "paragraph", marks, content: [] });
507
+ for (const rest of body)
508
+ out.push(rest);
509
+ }
510
+ i = end;
511
+ }
512
+ return out;
513
+ };
514
+ const groupNativeMacros = (children) => children.map((child) => parseTocParagraph(child) ?? child);
515
+ const transform = (node) => {
516
+ // ADF codeBlock permits only plain text children — expanding placeholder-
517
+ // looking text inside one would inject schema-invalid nodes and corrupt
518
+ // code samples that merely *quote* the placeholder syntax.
519
+ if (node.type === "codeBlock")
520
+ return node;
521
+ if (!node.content)
522
+ return node;
523
+ const newContent = [];
524
+ for (const child of node.content) {
525
+ if (child.type === "text" && child.text && !hasCodeMark(child)) {
526
+ const mention = tryParseMentionTextNode(child);
527
+ if (mention) {
528
+ newContent.push(mention);
529
+ }
530
+ else {
531
+ for (const piece of expandInlineText(child.text, child.marks)) {
532
+ newContent.push(piece);
533
+ }
534
+ }
535
+ }
536
+ else {
537
+ newContent.push(transform(child));
538
+ }
539
+ }
540
+ const nativeMacrosRestored = groupNativeMacros(newContent);
541
+ const paragraphsRestored = groupMarkedParagraphs(nativeMacrosRestored);
542
+ const encodedBlocksRestored = groupEncodedBlockNodes(paragraphsRestored);
543
+ return { ...node, content: groupPanels(groupBlockExtensions(encodedBlocksRestored, node.type)) };
544
+ };
545
+ /** Walk the document tree and rewrite placeholder text into proper ADF nodes. */
546
+ export const revertPlaceholders = (doc) => transform(doc);
547
+ //# sourceMappingURL=AdfPlaceholders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdfPlaceholders.js","sourceRoot":"","sources":["../src/AdfPlaceholders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Runtime JSON-Schema validator for ADF documents.
3
+ *
4
+ * Wraps Ajv compiled against the canonical schema bundled in
5
+ * `@atlaskit/adf-schema` (`json-schema/v1/full.json`). Used on both
6
+ * directions of the conversion: incoming (after `JSON.parse`, before walking)
7
+ * and outgoing (after the @atlaskit transformer produces JSON, before
8
+ * `JSON.stringify`). The single project-wide cast `as DocNode` lives here,
9
+ * bridging Ajv's runtime predicate to the TypeScript types.
10
+ *
11
+ * @module
12
+ */
13
+ import type { DocNode } from "@atlaskit/adf-schema";
14
+ import * as Context from "effect/Context";
15
+ import * as Effect from "effect/Effect";
16
+ import * as Layer from "effect/Layer";
17
+ import { AdfSchemaError } from "./ConfluenceError.js";
18
+ declare const AdfSchemaValidator_base: Context.ServiceClass<AdfSchemaValidator, "@knpkv/confluence-to-markdown/AdfSchemaValidator", {
19
+ readonly check: (doc: unknown, direction: "incoming" | "outgoing") => Effect.Effect<DocNode, AdfSchemaError>;
20
+ }>;
21
+ /**
22
+ * Effect service that runtime-validates ADF documents against the canonical
23
+ * @atlaskit/adf-schema JSON Schema and narrows the success type to `DocNode`.
24
+ *
25
+ * @category Service
26
+ */
27
+ export declare class AdfSchemaValidator extends AdfSchemaValidator_base {
28
+ }
29
+ /**
30
+ * Live Layer for `AdfSchemaValidator`. The Ajv validator is compiled once at
31
+ * module load.
32
+ *
33
+ * @category Layers
34
+ */
35
+ export declare const layer: Layer.Layer<AdfSchemaValidator>;
36
+ export {};
37
+ //# sourceMappingURL=AdfSchemaValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdfSchemaValidator.d.ts","sourceRoot":"","sources":["../src/AdfSchemaValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAA;;oBActD,CACd,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,UAAU,GAAG,UAAU,KAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC;;AAZ/C;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,uBAQe;CAAG;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAmBjD,CAAA"}
@@ -0,0 +1,37 @@
1
+ import adfJsonSchema from "@atlaskit/adf-schema/json-schema/v1/full.json" with { type: "json" };
2
+ import Ajv from "ajv-draft-04";
3
+ import * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import { AdfSchemaError } from "./ConfluenceError.js";
7
+ const ajv = new Ajv({ strict: false, allErrors: true });
8
+ const validate = ajv.compile(adfJsonSchema);
9
+ /**
10
+ * Effect service that runtime-validates ADF documents against the canonical
11
+ * @atlaskit/adf-schema JSON Schema and narrows the success type to `DocNode`.
12
+ *
13
+ * @category Service
14
+ */
15
+ export class AdfSchemaValidator extends Context.Service()("@knpkv/confluence-to-markdown/AdfSchemaValidator") {
16
+ }
17
+ /**
18
+ * Live Layer for `AdfSchemaValidator`. The Ajv validator is compiled once at
19
+ * module load.
20
+ *
21
+ * @category Layers
22
+ */
23
+ export const layer = Layer.succeed(AdfSchemaValidator, AdfSchemaValidator.of({
24
+ check: (doc, direction) => validate(doc)
25
+ ? Effect.succeed(doc)
26
+ : Effect.fail(new AdfSchemaError({
27
+ direction,
28
+ issues: (validate.errors ?? []).map((e) => ({
29
+ instancePath: e.instancePath,
30
+ schemaPath: e.schemaPath,
31
+ keyword: e.keyword,
32
+ params: e.params,
33
+ ...(e.message !== undefined ? { message: e.message } : {})
34
+ }))
35
+ }))
36
+ }));
37
+ //# sourceMappingURL=AdfSchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdfSchemaValidator.js","sourceRoot":"","sources":["../src/AdfSchemaValidator.ts"],"names":[],"mappings":"AAaA,OAAO,aAAa,MAAM,+CAA+C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC/F,OAAO,GAAG,MAAM,cAAc,CAAA;AAC9B,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAA;AAE1E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAuB,CAAC,CAAA;AAErD;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,EAQpD,CAAC,kDAAkD,CAAC;CAAG;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAoC,KAAK,CAAC,OAAO,CACjE,kBAAkB,EAClB,kBAAkB,CAAC,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CACxB,QAAQ,CAAC,GAAG,CAAC;QACX,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAc,CAAC;QAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,IAAI,cAAc,CAAC;YACjB,SAAS;YACT,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC;gBAC1D,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,CAAC;SACJ,CAAC,CACH;CACN,CAAC,CACH,CAAA"}