@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,183 +0,0 @@
1
- /**
2
- * Effect Schema definitions for HAST (Hypertext Abstract Syntax Tree) nodes.
3
- *
4
- * HAST is the intermediate representation used when parsing HTML.
5
- * These schemas provide type-safe transformation between raw HTML and our AST.
6
- *
7
- * @module
8
- */
9
- import * as Schema from "effect/Schema";
10
- /**
11
- * Create a HAST text node.
12
- *
13
- * @example
14
- * ```typescript
15
- * import { makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
16
- *
17
- * const text = makeHastText("Hello world")
18
- * console.log(text.value) // "Hello world"
19
- * ```
20
- *
21
- * @category Constructors
22
- */
23
- export const makeHastText = (value) => ({
24
- _tag: "text",
25
- value
26
- });
27
- /**
28
- * Create a HAST comment node.
29
- *
30
- * @example
31
- * ```typescript
32
- * import { makeHastComment } from "@knpkv/confluence-to-markdown/schemas/hast"
33
- *
34
- * const comment = makeHastComment("cf:layout-start")
35
- * ```
36
- *
37
- * @category Constructors
38
- */
39
- export const makeHastComment = (value) => ({
40
- _tag: "comment",
41
- value
42
- });
43
- /**
44
- * Create a HAST doctype node.
45
- *
46
- * @category Constructors
47
- */
48
- export const makeHastDoctype = () => ({
49
- _tag: "doctype"
50
- });
51
- /**
52
- * Create a HAST element node.
53
- *
54
- * @example
55
- * ```typescript
56
- * import { makeHastElement, makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
57
- *
58
- * const heading = makeHastElement("h1", { id: "title" }, [makeHastText("Hello")])
59
- * ```
60
- *
61
- * @category Constructors
62
- */
63
- export const makeHastElement = (tagName, properties = {}, children = []) => ({
64
- _tag: "element",
65
- tagName,
66
- properties,
67
- children
68
- });
69
- /**
70
- * Create a HAST root node.
71
- *
72
- * @example
73
- * ```typescript
74
- * import { makeHastRoot, makeHastElement, makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
75
- *
76
- * const root = makeHastRoot([
77
- * makeHastElement("p", {}, [makeHastText("Content")])
78
- * ])
79
- * ```
80
- *
81
- * @category Constructors
82
- */
83
- export const makeHastRoot = (children) => ({
84
- _tag: "root",
85
- children
86
- });
87
- /**
88
- * Type guard to check if a HastNode is a HastElement.
89
- *
90
- * @category Guards
91
- */
92
- export const isHastElement = (node) => node._tag === "element";
93
- /**
94
- * Type guard to check if a HastNode is a HastText.
95
- *
96
- * @category Guards
97
- */
98
- export const isHastText = (node) => node._tag === "text";
99
- /**
100
- * Type guard to check if a HastNode is a HastComment.
101
- *
102
- * @category Guards
103
- */
104
- export const isHastComment = (node) => node._tag === "comment";
105
- /**
106
- * Get text content from a HastNode recursively.
107
- *
108
- * @category Utilities
109
- */
110
- export const getTextContent = (node) => {
111
- if (isHastText(node)) {
112
- return node.value;
113
- }
114
- if (isHastElement(node)) {
115
- return node.children.map(getTextContent).join("");
116
- }
117
- return "";
118
- };
119
- // Schema definitions for validation
120
- /**
121
- * Schema for HAST text node.
122
- *
123
- * @category Schemas
124
- */
125
- export const HastTextSchema = Schema.Struct({
126
- _tag: Schema.Literal("text"),
127
- value: Schema.String
128
- });
129
- /**
130
- * Schema for HAST comment node.
131
- *
132
- * @category Schemas
133
- */
134
- export const HastCommentSchema = Schema.Struct({
135
- _tag: Schema.Literal("comment"),
136
- value: Schema.String
137
- });
138
- /**
139
- * Schema for HAST doctype node.
140
- *
141
- * @category Schemas
142
- */
143
- export const HastDoctypeSchema = Schema.Struct({
144
- _tag: Schema.Literal("doctype")
145
- });
146
- /**
147
- * Schema for HAST properties.
148
- *
149
- * @category Schemas
150
- */
151
- export const HastPropertiesSchema = Schema.Record({
152
- key: Schema.String,
153
- value: Schema.Unknown
154
- });
155
- // Forward reference for recursive schema
156
- const HastNodeSchemaLazy = Schema.suspend(() => HastNodeSchema);
157
- /**
158
- * Schema for HAST element node.
159
- *
160
- * @category Schemas
161
- */
162
- export const HastElementSchema = Schema.Struct({
163
- _tag: Schema.Literal("element"),
164
- tagName: Schema.String,
165
- properties: HastPropertiesSchema,
166
- children: Schema.Array(HastNodeSchemaLazy)
167
- });
168
- /**
169
- * Schema for HAST node union.
170
- *
171
- * @category Schemas
172
- */
173
- export const HastNodeSchema = Schema.Union(HastTextSchema, HastElementSchema, HastCommentSchema, HastDoctypeSchema);
174
- /**
175
- * Schema for HAST root.
176
- *
177
- * @category Schemas
178
- */
179
- export const HastRootSchema = Schema.Struct({
180
- _tag: Schema.Literal("root"),
181
- children: Schema.Array(HastNodeSchema)
182
- });
183
- //# sourceMappingURL=HastSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HastSchema.js","sourceRoot":"","sources":["../../../src/schemas/hast/HastSchema.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * HAST (Hypertext Abstract Syntax Tree) schemas.
3
- *
4
- * @module
5
- */
6
- export type { HastComment, HastDoctype, HastElement, HastNode, HastProperties, HastRoot, HastText } from "./HastSchema.js";
7
- export { getTextContent, HastCommentSchema, HastDoctypeSchema, HastElementSchema, HastNodeSchema, HastPropertiesSchema, HastRootSchema, HastTextSchema, isHastComment, isHastElement, isHastText, makeHastComment, makeHastDoctype, makeHastElement, makeHastRoot, makeHastText } from "./HastSchema.js";
8
- export { HastFromHtml } from "./HastFromHtml.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/hast/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,QAAQ,EACT,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,3 +0,0 @@
1
- export { getTextContent, HastCommentSchema, HastDoctypeSchema, HastElementSchema, HastNodeSchema, HastPropertiesSchema, HastRootSchema, HastTextSchema, isHastComment, isHastElement, isHastText, makeHastComment, makeHastDoctype, makeHastElement, makeHastRoot, makeHastText } from "./HastSchema.js";
2
- export { HastFromHtml } from "./HastFromHtml.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/hast/index.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Bi-directional schemas for AST transformations.
3
- *
4
- * @module
5
- */
6
- export { DocumentFromConfluence } from "./ConfluenceSchema.js";
7
- export { ConfluenceToMarkdown, DocumentFromHast, DocumentFromMdast } from "./ConversionSchema.js";
8
- export { DocumentFromMarkdown } from "./MarkdownSchema.js";
9
- export * from "./nodes/index.js";
10
- export { PreprocessedHtmlFromConfluence } from "./preprocessing/index.js";
11
- export type { PreprocessedHtml } from "./preprocessing/index.js";
12
- export * from "./hast/index.js";
13
- export * from "./mdast/index.js";
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG1D,cAAc,kBAAkB,CAAA;AAGhC,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAA;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Bi-directional schemas for AST transformations.
3
- *
4
- * @module
5
- */
6
- export { DocumentFromConfluence } from "./ConfluenceSchema.js";
7
- export { ConfluenceToMarkdown, DocumentFromHast, DocumentFromMdast } from "./ConversionSchema.js";
8
- export { DocumentFromMarkdown } from "./MarkdownSchema.js";
9
- // Re-export node schemas
10
- export * from "./nodes/index.js";
11
- // Re-export preprocessing
12
- export { PreprocessedHtmlFromConfluence } from "./preprocessing/index.js";
13
- // Re-export HAST/MDAST types and schemas
14
- export * from "./hast/index.js";
15
- export * from "./mdast/index.js";
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,yBAAyB;AACzB,cAAc,kBAAkB,CAAA;AAEhC,0BAA0B;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAA;AAGzE,yCAAyC;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
@@ -1,30 +0,0 @@
1
- import * as Schema from "effect/Schema";
2
- import type { MdastRoot } from "./MdastSchema.js";
3
- /**
4
- * Transform Markdown string to MDAST root.
5
- *
6
- * Uses remark-parse to parse Markdown and converts the result to our schema types.
7
- * Supports bidirectional transformation (decode Markdown -> MDAST, encode MDAST -> Markdown).
8
- *
9
- * @example
10
- * ```typescript
11
- * import { MdastFromMarkdown } from "@knpkv/confluence-to-markdown/schemas/mdast"
12
- * import * as Schema from "effect/Schema"
13
- * import { Effect } from "effect"
14
- *
15
- * const program = Effect.gen(function* () {
16
- * const mdast = yield* Schema.decode(MdastFromMarkdown)("# Hello\n\nWorld")
17
- * console.log(mdast.children.length) // 2
18
- * console.log(mdast.children[0].type) // "heading"
19
- * })
20
- *
21
- * Effect.runPromise(program)
22
- * ```
23
- *
24
- * @category Mdast
25
- */
26
- export declare const MdastFromMarkdown: Schema.transformOrFail<typeof Schema.String, Schema.Schema<MdastRoot, {
27
- type: "root";
28
- children: ReadonlyArray<unknown>;
29
- }, never>, never>;
30
- //# sourceMappingURL=MdastFromMarkdown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MdastFromMarkdown.d.ts","sourceRoot":"","sources":["../../../src/schemas/mdast/MdastFromMarkdown.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAwCjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB;;;iBAwC7B,CAAA"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Schema transformation from Markdown string to MDAST (Markdown Abstract Syntax Tree).
3
- *
4
- * Uses remark-parse for Markdown parsing and wraps the result in Effect Schema types.
5
- *
6
- * @module
7
- */
8
- import * as Effect from "effect/Effect";
9
- import * as ParseResult from "effect/ParseResult";
10
- import * as Schema from "effect/Schema";
11
- import remarkGfm from "remark-gfm";
12
- import remarkParse from "remark-parse";
13
- import remarkStringify from "remark-stringify";
14
- import { unified } from "unified";
15
- import { makeMdastRoot, MdastRootSchema } from "./MdastSchema.js";
16
- /**
17
- * Convert unist node from remark-parse to our MdastNode type.
18
- * For now, we pass through the structure since MdastNode types match unist closely.
19
- */
20
- const convertToMdastRoot = (root) =>
21
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
- makeMdastRoot(root.children);
23
- /**
24
- * Convert our MdastRoot type back to unist format for serialization.
25
- */
26
- const convertFromMdastRoot = (root) => ({
27
- type: "root",
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
- children: root.children
30
- });
31
- /**
32
- * Transform Markdown string to MDAST root.
33
- *
34
- * Uses remark-parse to parse Markdown and converts the result to our schema types.
35
- * Supports bidirectional transformation (decode Markdown -> MDAST, encode MDAST -> Markdown).
36
- *
37
- * @example
38
- * ```typescript
39
- * import { MdastFromMarkdown } from "@knpkv/confluence-to-markdown/schemas/mdast"
40
- * import * as Schema from "effect/Schema"
41
- * import { Effect } from "effect"
42
- *
43
- * const program = Effect.gen(function* () {
44
- * const mdast = yield* Schema.decode(MdastFromMarkdown)("# Hello\n\nWorld")
45
- * console.log(mdast.children.length) // 2
46
- * console.log(mdast.children[0].type) // "heading"
47
- * })
48
- *
49
- * Effect.runPromise(program)
50
- * ```
51
- *
52
- * @category Mdast
53
- */
54
- export const MdastFromMarkdown = Schema.transformOrFail(Schema.String, MdastRootSchema, {
55
- strict: true,
56
- decode: (markdown, _options, ast) => Effect.try({
57
- try: () => {
58
- const result = unified()
59
- .use(remarkParse)
60
- .use(remarkGfm)
61
- .parse(markdown);
62
- return convertToMdastRoot(result);
63
- },
64
- catch: (error) => new ParseResult.Type(ast, markdown, `Markdown parse error: ${error instanceof Error ? error.message : String(error)}`)
65
- }),
66
- encode: (mdast, _options, ast) => Effect.try({
67
- try: () => {
68
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
- const unist = convertFromMdastRoot(mdast);
70
- return unified()
71
- .use(remarkGfm)
72
- .use(remarkStringify, { bullet: "-", emphasis: "_" })
73
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- .stringify(unist);
75
- },
76
- catch: (error) => new ParseResult.Type(ast, mdast, `Markdown stringify error: ${error instanceof Error ? error.message : String(error)}`)
77
- })
78
- });
79
- //# sourceMappingURL=MdastFromMarkdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MdastFromMarkdown.js","sourceRoot":"","sources":["../../../src/schemas/mdast/MdastFromMarkdown.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,eAAe,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAsBjE;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAAe,EAAa,EAAE;AACxD,8DAA8D;AAC9D,aAAa,CAAC,IAAI,CAAC,QAAe,CAAC,CAAA;AAErC;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAa,EAAE,CAAC,CAAC;IAC5D,IAAI,EAAE,MAAM;IACZ,8DAA8D;IAC9D,QAAQ,EAAE,IAAI,CAAC,QAAe;CAC/B,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe,CACrD,MAAM,CAAC,MAAM,EACb,eAAe,EACf;IACE,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC;QACT,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,OAAO,EAAE;iBACrB,GAAG,CAAC,WAAW,CAAC;iBAChB,GAAG,CAAC,SAAS,CAAC;iBACd,KAAK,CAAC,QAAQ,CAAc,CAAA;YAC/B,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,IAAI,CAClB,GAAG,EACH,QAAQ,EACR,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF;KACJ,CAAC;IACJ,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAC/B,MAAM,CAAC,GAAG,CAAC;QACT,GAAG,EAAE,GAAG,EAAE;YACR,8DAA8D;YAC9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAY,CAAC,CAAA;YAChD,OAAO,OAAO,EAAE;iBACb,GAAG,CAAC,SAAS,CAAC;iBACd,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;gBACrD,8DAA8D;iBAC7D,SAAS,CAAC,KAAY,CAAC,CAAA;QAC5B,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,IAAI,CAClB,GAAG,EACH,KAAK,EACL,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtF;KACJ,CAAC;CACL,CACF,CAAA"}