@knpkv/confluence-to-markdown 0.2.0 → 0.4.1

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 (336) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/LICENSE +21 -0
  3. package/README.md +282 -14
  4. package/dist/ConfluenceAuth.d.ts +76 -0
  5. package/dist/ConfluenceAuth.d.ts.map +1 -0
  6. package/dist/ConfluenceAuth.js +356 -0
  7. package/dist/ConfluenceAuth.js.map +1 -0
  8. package/dist/ConfluenceClient.d.ts +26 -2
  9. package/dist/ConfluenceClient.d.ts.map +1 -1
  10. package/dist/ConfluenceClient.js +98 -92
  11. package/dist/ConfluenceClient.js.map +1 -1
  12. package/dist/ConfluenceConfig.d.ts +4 -24
  13. package/dist/ConfluenceConfig.d.ts.map +1 -1
  14. package/dist/ConfluenceConfig.js +45 -7
  15. package/dist/ConfluenceConfig.js.map +1 -1
  16. package/dist/ConfluenceError.d.ts +89 -6
  17. package/dist/ConfluenceError.d.ts.map +1 -1
  18. package/dist/ConfluenceError.js +88 -5
  19. package/dist/ConfluenceError.js.map +1 -1
  20. package/dist/GitError.d.ts +103 -0
  21. package/dist/GitError.d.ts.map +1 -0
  22. package/dist/GitError.js +85 -0
  23. package/dist/GitError.js.map +1 -0
  24. package/dist/GitService.d.ts +175 -0
  25. package/dist/GitService.d.ts.map +1 -0
  26. package/dist/GitService.js +431 -0
  27. package/dist/GitService.js.map +1 -0
  28. package/dist/LocalFileSystem.d.ts +29 -4
  29. package/dist/LocalFileSystem.d.ts.map +1 -1
  30. package/dist/LocalFileSystem.js +80 -6
  31. package/dist/LocalFileSystem.js.map +1 -1
  32. package/dist/MarkdownConverter.d.ts +49 -2
  33. package/dist/MarkdownConverter.d.ts.map +1 -1
  34. package/dist/MarkdownConverter.js +73 -111
  35. package/dist/MarkdownConverter.js.map +1 -1
  36. package/dist/SchemaConverterError.d.ts +108 -0
  37. package/dist/SchemaConverterError.d.ts.map +1 -0
  38. package/dist/SchemaConverterError.js +84 -0
  39. package/dist/SchemaConverterError.js.map +1 -0
  40. package/dist/Schemas.d.ts +225 -1
  41. package/dist/Schemas.d.ts.map +1 -1
  42. package/dist/Schemas.js +155 -6
  43. package/dist/Schemas.js.map +1 -1
  44. package/dist/SyncEngine.d.ts +30 -20
  45. package/dist/SyncEngine.d.ts.map +1 -1
  46. package/dist/SyncEngine.js +566 -117
  47. package/dist/SyncEngine.js.map +1 -1
  48. package/dist/ast/BlockNode.d.ts +468 -0
  49. package/dist/ast/BlockNode.d.ts.map +1 -0
  50. package/dist/ast/BlockNode.js +319 -0
  51. package/dist/ast/BlockNode.js.map +1 -0
  52. package/dist/ast/Document.d.ts +244 -0
  53. package/dist/ast/Document.d.ts.map +1 -0
  54. package/dist/ast/Document.js +69 -0
  55. package/dist/ast/Document.js.map +1 -0
  56. package/dist/ast/InlineNode.d.ts +477 -0
  57. package/dist/ast/InlineNode.d.ts.map +1 -0
  58. package/dist/ast/InlineNode.js +263 -0
  59. package/dist/ast/InlineNode.js.map +1 -0
  60. package/dist/ast/MacroNode.d.ts +267 -0
  61. package/dist/ast/MacroNode.d.ts.map +1 -0
  62. package/dist/ast/MacroNode.js +164 -0
  63. package/dist/ast/MacroNode.js.map +1 -0
  64. package/dist/ast/index.d.ts +10 -0
  65. package/dist/ast/index.d.ts.map +1 -0
  66. package/dist/ast/index.js +14 -0
  67. package/dist/ast/index.js.map +1 -0
  68. package/dist/bin.js +33 -149
  69. package/dist/bin.js.map +1 -1
  70. package/dist/commands/auth.d.ts +15 -0
  71. package/dist/commands/auth.d.ts.map +1 -0
  72. package/dist/commands/auth.js +86 -0
  73. package/dist/commands/auth.js.map +1 -0
  74. package/dist/commands/clone.d.ts +12 -0
  75. package/dist/commands/clone.d.ts.map +1 -0
  76. package/dist/commands/clone.js +93 -0
  77. package/dist/commands/clone.js.map +1 -0
  78. package/dist/commands/delete.d.ts +13 -0
  79. package/dist/commands/delete.d.ts.map +1 -0
  80. package/dist/commands/delete.js +48 -0
  81. package/dist/commands/delete.js.map +1 -0
  82. package/dist/commands/errorHandler.d.ts +14 -0
  83. package/dist/commands/errorHandler.d.ts.map +1 -0
  84. package/dist/commands/errorHandler.js +33 -0
  85. package/dist/commands/errorHandler.js.map +1 -0
  86. package/dist/commands/git.d.ts +22 -0
  87. package/dist/commands/git.d.ts.map +1 -0
  88. package/dist/commands/git.js +72 -0
  89. package/dist/commands/git.js.map +1 -0
  90. package/dist/commands/index.d.ts +11 -0
  91. package/dist/commands/index.d.ts.map +1 -0
  92. package/dist/commands/index.js +11 -0
  93. package/dist/commands/index.js.map +1 -0
  94. package/dist/commands/layers.d.ts +31 -0
  95. package/dist/commands/layers.d.ts.map +1 -0
  96. package/dist/commands/layers.js +137 -0
  97. package/dist/commands/layers.js.map +1 -0
  98. package/dist/commands/new.d.ts +9 -0
  99. package/dist/commands/new.d.ts.map +1 -0
  100. package/dist/commands/new.js +80 -0
  101. package/dist/commands/new.js.map +1 -0
  102. package/dist/commands/pageTree.d.ts +18 -0
  103. package/dist/commands/pageTree.d.ts.map +1 -0
  104. package/dist/commands/pageTree.js +20 -0
  105. package/dist/commands/pageTree.js.map +1 -0
  106. package/dist/commands/shared.d.ts +15 -0
  107. package/dist/commands/shared.d.ts.map +1 -0
  108. package/dist/commands/shared.js +27 -0
  109. package/dist/commands/shared.js.map +1 -0
  110. package/dist/commands/sync.d.ts +15 -0
  111. package/dist/commands/sync.d.ts.map +1 -0
  112. package/dist/commands/sync.js +101 -0
  113. package/dist/commands/sync.js.map +1 -0
  114. package/dist/index.d.ts +10 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +14 -0
  117. package/dist/index.js.map +1 -1
  118. package/dist/internal/NodeLayers.d.ts +7 -0
  119. package/dist/internal/NodeLayers.d.ts.map +1 -0
  120. package/dist/internal/NodeLayers.js +19 -0
  121. package/dist/internal/NodeLayers.js.map +1 -0
  122. package/dist/internal/frontmatter.d.ts +10 -0
  123. package/dist/internal/frontmatter.d.ts.map +1 -1
  124. package/dist/internal/frontmatter.js +16 -0
  125. package/dist/internal/frontmatter.js.map +1 -1
  126. package/dist/internal/gitCommands.d.ts +78 -0
  127. package/dist/internal/gitCommands.d.ts.map +1 -0
  128. package/dist/internal/gitCommands.js +156 -0
  129. package/dist/internal/gitCommands.js.map +1 -0
  130. package/dist/internal/hashUtils.d.ts +42 -1
  131. package/dist/internal/hashUtils.d.ts.map +1 -1
  132. package/dist/internal/hashUtils.js +38 -2
  133. package/dist/internal/hashUtils.js.map +1 -1
  134. package/dist/internal/oauthServer.d.ts +55 -0
  135. package/dist/internal/oauthServer.d.ts.map +1 -0
  136. package/dist/internal/oauthServer.js +110 -0
  137. package/dist/internal/oauthServer.js.map +1 -0
  138. package/dist/internal/pathUtils.d.ts +21 -4
  139. package/dist/internal/pathUtils.d.ts.map +1 -1
  140. package/dist/internal/pathUtils.js +24 -13
  141. package/dist/internal/pathUtils.js.map +1 -1
  142. package/dist/internal/tokenStorage.d.ts +75 -0
  143. package/dist/internal/tokenStorage.d.ts.map +1 -0
  144. package/dist/internal/tokenStorage.js +149 -0
  145. package/dist/internal/tokenStorage.js.map +1 -0
  146. package/dist/internal/userCache.d.ts +42 -0
  147. package/dist/internal/userCache.d.ts.map +1 -0
  148. package/dist/internal/userCache.js +51 -0
  149. package/dist/internal/userCache.js.map +1 -0
  150. package/dist/parsers/ConfluenceParser.d.ts +26 -0
  151. package/dist/parsers/ConfluenceParser.d.ts.map +1 -0
  152. package/dist/parsers/ConfluenceParser.js +792 -0
  153. package/dist/parsers/ConfluenceParser.js.map +1 -0
  154. package/dist/parsers/MarkdownParser.d.ts +26 -0
  155. package/dist/parsers/MarkdownParser.d.ts.map +1 -0
  156. package/dist/parsers/MarkdownParser.js +873 -0
  157. package/dist/parsers/MarkdownParser.js.map +1 -0
  158. package/dist/parsers/index.d.ts +8 -0
  159. package/dist/parsers/index.d.ts.map +1 -0
  160. package/dist/parsers/index.js +8 -0
  161. package/dist/parsers/index.js.map +1 -0
  162. package/dist/schemas/ConfluenceSchema.d.ts +21 -0
  163. package/dist/schemas/ConfluenceSchema.d.ts.map +1 -0
  164. package/dist/schemas/ConfluenceSchema.js +38 -0
  165. package/dist/schemas/ConfluenceSchema.js.map +1 -0
  166. package/dist/schemas/ConversionSchema.d.ts +35 -0
  167. package/dist/schemas/ConversionSchema.d.ts.map +1 -0
  168. package/dist/schemas/ConversionSchema.js +208 -0
  169. package/dist/schemas/ConversionSchema.js.map +1 -0
  170. package/dist/schemas/MarkdownSchema.d.ts +21 -0
  171. package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
  172. package/dist/schemas/MarkdownSchema.js +38 -0
  173. package/dist/schemas/MarkdownSchema.js.map +1 -0
  174. package/dist/schemas/hast/HastFromHtml.d.ts +27 -0
  175. package/dist/schemas/hast/HastFromHtml.d.ts.map +1 -0
  176. package/dist/schemas/hast/HastFromHtml.js +107 -0
  177. package/dist/schemas/hast/HastFromHtml.js.map +1 -0
  178. package/dist/schemas/hast/HastSchema.d.ts +195 -0
  179. package/dist/schemas/hast/HastSchema.d.ts.map +1 -0
  180. package/dist/schemas/hast/HastSchema.js +183 -0
  181. package/dist/schemas/hast/HastSchema.js.map +1 -0
  182. package/dist/schemas/hast/index.d.ts +9 -0
  183. package/dist/schemas/hast/index.d.ts.map +1 -0
  184. package/dist/schemas/hast/index.js +3 -0
  185. package/dist/schemas/hast/index.js.map +1 -0
  186. package/dist/schemas/index.d.ts +14 -0
  187. package/dist/schemas/index.d.ts.map +1 -0
  188. package/dist/schemas/index.js +16 -0
  189. package/dist/schemas/index.js.map +1 -0
  190. package/dist/schemas/mdast/MdastFromMarkdown.d.ts +30 -0
  191. package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +1 -0
  192. package/dist/schemas/mdast/MdastFromMarkdown.js +79 -0
  193. package/dist/schemas/mdast/MdastFromMarkdown.js.map +1 -0
  194. package/dist/schemas/mdast/MdastSchema.d.ts +385 -0
  195. package/dist/schemas/mdast/MdastSchema.d.ts.map +1 -0
  196. package/dist/schemas/mdast/MdastSchema.js +266 -0
  197. package/dist/schemas/mdast/MdastSchema.js.map +1 -0
  198. package/dist/schemas/mdast/index.d.ts +10 -0
  199. package/dist/schemas/mdast/index.d.ts.map +1 -0
  200. package/dist/schemas/mdast/index.js +4 -0
  201. package/dist/schemas/mdast/index.js.map +1 -0
  202. package/dist/schemas/mdast/mdastToString.d.ts +13 -0
  203. package/dist/schemas/mdast/mdastToString.d.ts.map +1 -0
  204. package/dist/schemas/mdast/mdastToString.js +85 -0
  205. package/dist/schemas/mdast/mdastToString.js.map +1 -0
  206. package/dist/schemas/nodes/block/BlockSchema.d.ts +43 -0
  207. package/dist/schemas/nodes/block/BlockSchema.d.ts.map +1 -0
  208. package/dist/schemas/nodes/block/BlockSchema.js +634 -0
  209. package/dist/schemas/nodes/block/BlockSchema.js.map +1 -0
  210. package/dist/schemas/nodes/block/index.d.ts +7 -0
  211. package/dist/schemas/nodes/block/index.d.ts.map +1 -0
  212. package/dist/schemas/nodes/block/index.js +7 -0
  213. package/dist/schemas/nodes/block/index.js.map +1 -0
  214. package/dist/schemas/nodes/index.d.ts +9 -0
  215. package/dist/schemas/nodes/index.d.ts.map +1 -0
  216. package/dist/schemas/nodes/index.js +12 -0
  217. package/dist/schemas/nodes/index.js.map +1 -0
  218. package/dist/schemas/nodes/inline/InlineSchema.d.ts +48 -0
  219. package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +1 -0
  220. package/dist/schemas/nodes/inline/InlineSchema.js +436 -0
  221. package/dist/schemas/nodes/inline/InlineSchema.js.map +1 -0
  222. package/dist/schemas/nodes/inline/index.d.ts +7 -0
  223. package/dist/schemas/nodes/inline/index.d.ts.map +1 -0
  224. package/dist/schemas/nodes/inline/index.js +7 -0
  225. package/dist/schemas/nodes/inline/index.js.map +1 -0
  226. package/dist/schemas/nodes/macro/MacroSchema.d.ts +27 -0
  227. package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +1 -0
  228. package/dist/schemas/nodes/macro/MacroSchema.js +162 -0
  229. package/dist/schemas/nodes/macro/MacroSchema.js.map +1 -0
  230. package/dist/schemas/nodes/macro/index.d.ts +7 -0
  231. package/dist/schemas/nodes/macro/index.d.ts.map +1 -0
  232. package/dist/schemas/nodes/macro/index.js +7 -0
  233. package/dist/schemas/nodes/macro/index.js.map +1 -0
  234. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +24 -0
  235. package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +1 -0
  236. package/dist/schemas/preprocessing/ConfluencePreprocessor.js +351 -0
  237. package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +1 -0
  238. package/dist/schemas/preprocessing/index.d.ts +8 -0
  239. package/dist/schemas/preprocessing/index.d.ts.map +1 -0
  240. package/dist/schemas/preprocessing/index.js +2 -0
  241. package/dist/schemas/preprocessing/index.js.map +1 -0
  242. package/dist/serializers/ConfluenceSerializer.d.ts +30 -0
  243. package/dist/serializers/ConfluenceSerializer.d.ts.map +1 -0
  244. package/dist/serializers/ConfluenceSerializer.js +551 -0
  245. package/dist/serializers/ConfluenceSerializer.js.map +1 -0
  246. package/dist/serializers/MarkdownSerializer.d.ts +34 -0
  247. package/dist/serializers/MarkdownSerializer.d.ts.map +1 -0
  248. package/dist/serializers/MarkdownSerializer.js +355 -0
  249. package/dist/serializers/MarkdownSerializer.js.map +1 -0
  250. package/dist/serializers/index.d.ts +8 -0
  251. package/dist/serializers/index.d.ts.map +1 -0
  252. package/dist/serializers/index.js +8 -0
  253. package/dist/serializers/index.js.map +1 -0
  254. package/package.json +27 -16
  255. package/src/ConfluenceAuth.ts +571 -0
  256. package/src/ConfluenceClient.ts +188 -156
  257. package/src/ConfluenceConfig.ts +63 -7
  258. package/src/ConfluenceError.ts +110 -14
  259. package/src/GitError.ts +92 -0
  260. package/src/GitService.ts +859 -0
  261. package/src/LocalFileSystem.ts +179 -9
  262. package/src/MarkdownConverter.ts +126 -122
  263. package/src/SchemaConverterError.ts +108 -0
  264. package/src/Schemas.ts +223 -6
  265. package/src/SyncEngine.ts +745 -162
  266. package/src/ast/BlockNode.ts +425 -0
  267. package/src/ast/Document.ts +90 -0
  268. package/src/ast/InlineNode.ts +323 -0
  269. package/src/ast/MacroNode.ts +245 -0
  270. package/src/ast/index.ts +83 -0
  271. package/src/bin.ts +50 -249
  272. package/src/commands/auth.ts +117 -0
  273. package/src/commands/clone.ts +145 -0
  274. package/src/commands/delete.ts +57 -0
  275. package/src/commands/errorHandler.ts +32 -0
  276. package/src/commands/git.ts +114 -0
  277. package/src/commands/index.ts +10 -0
  278. package/src/commands/layers.ts +211 -0
  279. package/src/commands/new.ts +99 -0
  280. package/src/commands/pageTree.ts +40 -0
  281. package/src/commands/shared.ts +35 -0
  282. package/src/commands/sync.ts +129 -0
  283. package/src/index.ts +21 -1
  284. package/src/internal/NodeLayers.ts +21 -0
  285. package/src/internal/frontmatter.ts +21 -0
  286. package/src/internal/gitCommands.ts +229 -0
  287. package/src/internal/hashUtils.ts +65 -3
  288. package/src/internal/oauthServer.ts +199 -0
  289. package/src/internal/pathUtils.ts +34 -17
  290. package/src/internal/tokenStorage.ts +240 -0
  291. package/src/internal/userCache.ts +90 -0
  292. package/src/parsers/ConfluenceParser.ts +950 -0
  293. package/src/parsers/MarkdownParser.ts +1198 -0
  294. package/src/parsers/index.ts +8 -0
  295. package/src/schemas/ConfluenceSchema.ts +56 -0
  296. package/src/schemas/ConversionSchema.ts +318 -0
  297. package/src/schemas/MarkdownSchema.ts +56 -0
  298. package/src/schemas/hast/HastFromHtml.ts +153 -0
  299. package/src/schemas/hast/HastSchema.ts +274 -0
  300. package/src/schemas/hast/index.ts +35 -0
  301. package/src/schemas/index.ts +20 -0
  302. package/src/schemas/mdast/MdastFromMarkdown.ts +118 -0
  303. package/src/schemas/mdast/MdastSchema.ts +566 -0
  304. package/src/schemas/mdast/index.ts +59 -0
  305. package/src/schemas/mdast/mdastToString.ts +102 -0
  306. package/src/schemas/nodes/block/BlockSchema.ts +773 -0
  307. package/src/schemas/nodes/block/index.ts +13 -0
  308. package/src/schemas/nodes/index.ts +20 -0
  309. package/src/schemas/nodes/inline/InlineSchema.ts +523 -0
  310. package/src/schemas/nodes/inline/index.ts +14 -0
  311. package/src/schemas/nodes/macro/MacroSchema.ts +226 -0
  312. package/src/schemas/nodes/macro/index.ts +6 -0
  313. package/src/schemas/preprocessing/ConfluencePreprocessor.ts +446 -0
  314. package/src/schemas/preprocessing/index.ts +8 -0
  315. package/src/serializers/ConfluenceSerializer.ts +717 -0
  316. package/src/serializers/MarkdownSerializer.ts +493 -0
  317. package/src/serializers/index.ts +8 -0
  318. package/test/GitService.test.ts +209 -0
  319. package/test/MarkdownConverter.test.ts +37 -3
  320. package/test/Schemas.test.ts +97 -2
  321. package/test/ast/BlockNode.test.ts +265 -0
  322. package/test/ast/Document.test.ts +126 -0
  323. package/test/ast/InlineNode.test.ts +161 -0
  324. package/test/fixtures/integration-test.html.fixture +103 -0
  325. package/test/fixtures/integration-test.md.expected +257 -0
  326. package/test/integration.test.ts +269 -0
  327. package/test/oauthServer.test.ts +50 -0
  328. package/test/parsers/ConfluenceParser.test.ts +283 -0
  329. package/test/schemas/ConfluencePreprocessor.test.ts +180 -0
  330. package/test/schemas/ConversionSchema.test.ts +159 -0
  331. package/test/schemas/HastSchema.test.ts +138 -0
  332. package/test/schemas/MdastSchema.test.ts +145 -0
  333. package/test/schemas/nodes/block/BlockSchema.test.ts +173 -0
  334. package/test/schemas/nodes/inline/InlineSchema.test.ts +198 -0
  335. package/test/schemas/nodes/macro/MacroSchema.test.ts +142 -0
  336. package/test/tokenStorage.test.ts +99 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MacroNode.js","sourceRoot":"","sources":["../../src/ast/MacroNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * AST node types for Confluence <-> Markdown conversion.
3
+ *
4
+ * @module
5
+ */
6
+ export { ColoredText, DateTime, Emoticon, Emphasis, Highlight, InlineCode, InlineNode, type InlineNode as InlineNodeType, LineBreak, Link, Strikethrough, Strong, Subscript, Superscript, Text, Underline, UnsupportedInline, UserMention } from "./InlineNode.js";
7
+ export { BlockNode, type BlockNode as BlockNodeType, BlockQuote, CodeBlock, Heading, Image, ImageAttachment, type ImageAttachment as ImageAttachmentType, List, ListItem, Paragraph, SchemaVersion, Table, TableCell, TableRow, TaskItem, type TaskItem as TaskItemType, TaskList, type TaskList as TaskListType, TextAlignment, type TextAlignment as TextAlignmentValue, ThematicBreak, UnsupportedBlock } from "./BlockNode.js";
8
+ export { CodeMacro, type CodeMacro as CodeMacroType, ExpandMacro, type ExpandMacro as ExpandMacroType, InfoPanel, type InfoPanel as InfoPanelType, MacroNode, type MacroNode as MacroNodeType, PanelType, type PanelType as PanelTypeValue, PanelTypes, StatusMacro, type StatusMacro as StatusMacroType, TocMacro, type TocMacro as TocMacroType } from "./MacroNode.js";
9
+ export { Document, type Document as DocumentType, DocumentNode, type DocumentNode as DocumentNodeType, isDocument, makeDocument } from "./Document.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,UAAU,IAAI,cAAc,EACjC,SAAS,EACT,IAAI,EACJ,aAAa,EACb,MAAM,EACN,SAAS,EACT,WAAW,EACX,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACZ,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,SAAS,EACT,KAAK,SAAS,IAAI,aAAa,EAC/B,UAAU,EACV,SAAS,EACT,OAAO,EACP,KAAK,EACL,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,KAAK,QAAQ,IAAI,YAAY,EAC7B,QAAQ,EACR,KAAK,QAAQ,IAAI,YAAY,EAC7B,aAAa,EACb,KAAK,aAAa,IAAI,kBAAkB,EACxC,aAAa,EACb,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,SAAS,EACT,KAAK,SAAS,IAAI,aAAa,EAC/B,WAAW,EACX,KAAK,WAAW,IAAI,eAAe,EACnC,SAAS,EACT,KAAK,SAAS,IAAI,aAAa,EAC/B,SAAS,EACT,KAAK,SAAS,IAAI,aAAa,EAC/B,SAAS,EACT,KAAK,SAAS,IAAI,cAAc,EAChC,UAAU,EACV,WAAW,EACX,KAAK,WAAW,IAAI,eAAe,EACnC,QAAQ,EACR,KAAK,QAAQ,IAAI,YAAY,EAC9B,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,QAAQ,EACR,KAAK,QAAQ,IAAI,YAAY,EAC7B,YAAY,EACZ,KAAK,YAAY,IAAI,gBAAgB,EACrC,UAAU,EACV,YAAY,EACb,MAAM,eAAe,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AST node types for Confluence <-> Markdown conversion.
3
+ *
4
+ * @module
5
+ */
6
+ // Inline nodes
7
+ export { ColoredText, DateTime, Emoticon, Emphasis, Highlight, InlineCode, InlineNode, LineBreak, Link, Strikethrough, Strong, Subscript, Superscript, Text, Underline, UnsupportedInline, UserMention } from "./InlineNode.js";
8
+ // Block nodes
9
+ export { BlockNode, BlockQuote, CodeBlock, Heading, Image, ImageAttachment, List, ListItem, Paragraph, SchemaVersion, Table, TableCell, TableRow, TaskItem, TaskList, TextAlignment, ThematicBreak, UnsupportedBlock } from "./BlockNode.js";
10
+ // Macro nodes
11
+ export { CodeMacro, ExpandMacro, InfoPanel, MacroNode, PanelType, PanelTypes, StatusMacro, TocMacro } from "./MacroNode.js";
12
+ // Document
13
+ export { Document, DocumentNode, isDocument, makeDocument } from "./Document.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EAEV,SAAS,EACT,IAAI,EACJ,aAAa,EACb,MAAM,EACN,SAAS,EACT,WAAW,EACX,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACZ,MAAM,iBAAiB,CAAA;AAExB,cAAc;AACd,OAAO,EACL,SAAS,EAET,UAAU,EACV,SAAS,EACT,OAAO,EACP,KAAK,EACL,eAAe,EAEf,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EAER,QAAQ,EAER,aAAa,EAEb,aAAa,EACb,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AAEvB,cAAc;AACd,OAAO,EACL,SAAS,EAET,WAAW,EAEX,SAAS,EAET,SAAS,EAET,SAAS,EAET,UAAU,EACV,WAAW,EAEX,QAAQ,EAET,MAAM,gBAAgB,CAAA;AAEvB,WAAW;AACX,OAAO,EACL,QAAQ,EAER,YAAY,EAEZ,UAAU,EACV,YAAY,EACb,MAAM,eAAe,CAAA"}
package/dist/bin.js CHANGED
@@ -2,162 +2,46 @@
2
2
  /**
3
3
  * CLI entry point for confluence-to-markdown.
4
4
  */
5
- import { Command, Options, Prompt } from "@effect/cli";
6
- import * as NodeContext from "@effect/platform-node/NodeContext";
7
- import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
8
- import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
9
- import * as NodeTerminal from "@effect/platform-node/NodeTerminal";
10
- import * as Config from "effect/Config";
11
- import * as Console from "effect/Console";
5
+ import { Command } from "@effect/cli";
12
6
  import * as Effect from "effect/Effect";
13
- import * as Layer from "effect/Layer";
14
- import * as Option from "effect/Option";
7
+ import * as Logger from "effect/Logger";
8
+ import * as LogLevel from "effect/LogLevel";
15
9
  import pkg from "../package.json" with { type: "json" };
16
- import { ConfluenceClient, layer as ConfluenceClientLayer } from "./ConfluenceClient.js";
17
- import { ConfluenceConfig, createConfigFile, layer as ConfluenceConfigLayer, layerFromValues as ConfluenceConfigLayerFromValues } from "./ConfluenceConfig.js";
18
- import { AuthMissingError } from "./ConfluenceError.js";
19
- import { layer as LocalFileSystemLayer } from "./LocalFileSystem.js";
20
- import { layer as MarkdownConverterLayer } from "./MarkdownConverter.js";
21
- import { layer as SyncEngineLayer, SyncEngine } from "./SyncEngine.js";
22
- // === Auth config ===
23
- const AuthConfig = Config.all({
24
- apiKey: Config.string("CONFLUENCE_API_KEY"),
25
- email: Config.string("CONFLUENCE_EMAIL")
26
- });
27
- const getAuth = () => AuthConfig.pipe(Effect.map(({ apiKey, email }) => ({ type: "token", email, token: apiKey })), Effect.mapError(() => new AuthMissingError()));
28
- // === Init command ===
29
- const rootPageIdOption = Options.text("root-page-id").pipe(Options.withDescription("Confluence root page ID to sync from"), Options.optional);
30
- const baseUrlOption = Options.text("base-url").pipe(Options.withDescription("Confluence Cloud base URL (e.g., https://yoursite.atlassian.net)"), Options.optional);
31
- const initCommand = Command.make("init", { rootPageId: rootPageIdOption, baseUrl: baseUrlOption }, ({ baseUrl, rootPageId }) => Effect.gen(function* () {
32
- const pageId = Option.isSome(rootPageId)
33
- ? rootPageId.value
34
- : yield* Prompt.text({ message: "Enter Confluence root page ID:" });
35
- const url = Option.isSome(baseUrl)
36
- ? baseUrl.value
37
- : yield* Prompt.text({ message: "Enter Confluence base URL (e.g., https://yoursite.atlassian.net):" });
38
- const path = yield* createConfigFile(pageId, url);
39
- yield* Console.log(`Created configuration file: ${path}`);
40
- })).pipe(Command.withDescription("Initialize .confluence.json configuration"));
41
- // === Pull command ===
42
- const forceOption = Options.boolean("force").pipe(Options.withAlias("f"), Options.withDescription("Overwrite local changes"));
43
- const pullCommand = Command.make("pull", { force: forceOption }, ({ force }) => Effect.gen(function* () {
44
- const engine = yield* SyncEngine;
45
- yield* Console.log("Pulling pages from Confluence...");
46
- const result = yield* engine.pull({ force });
47
- yield* Console.log(`Pulled ${result.pulled} pages`);
48
- if (result.errors.length > 0) {
49
- yield* Console.error("Errors:", result.errors.join("\n"));
50
- }
51
- })).pipe(Command.withDescription("Download pages from Confluence to local markdown"));
52
- // === Push command ===
53
- const dryRunOption = Options.boolean("dry-run").pipe(Options.withAlias("n"), Options.withDescription("Show changes without applying"));
54
- const pushCommand = Command.make("push", { dryRun: dryRunOption }, ({ dryRun }) => Effect.gen(function* () {
55
- const engine = yield* SyncEngine;
56
- yield* Console.log(dryRun ? "Dry run - showing changes..." : "Pushing changes to Confluence...");
57
- const result = yield* engine.push({ dryRun });
58
- yield* Console.log(`Pushed: ${result.pushed}, Created: ${result.created}, Skipped: ${result.skipped}`);
59
- if (result.errors.length > 0) {
60
- yield* Console.error("Errors:", result.errors.join("\n"));
61
- }
62
- })).pipe(Command.withDescription("Upload local markdown changes to Confluence"));
63
- // === Sync command ===
64
- const syncCommand = Command.make("sync", {}, () => Effect.gen(function* () {
65
- const engine = yield* SyncEngine;
66
- yield* Console.log("Syncing with Confluence...");
67
- const result = yield* engine.sync();
68
- yield* Console.log(`Pulled: ${result.pulled}, Pushed: ${result.pushed}, Created: ${result.created}`);
69
- if (result.conflicts > 0) {
70
- yield* Console.warn(`Conflicts: ${result.conflicts}`);
71
- }
72
- if (result.errors.length > 0) {
73
- yield* Console.error("Errors:", result.errors.join("\n"));
74
- }
75
- })).pipe(Command.withDescription("Bidirectional sync with conflict detection"));
76
- // === Status command ===
77
- const statusCommand = Command.make("status", {}, () => Effect.gen(function* () {
78
- const engine = yield* SyncEngine;
79
- const result = yield* engine.status();
80
- yield* Console.log(`
81
- Sync Status:
82
- Synced: ${result.synced}
83
- Local Modified: ${result.localModified}
84
- Remote Modified: ${result.remoteModified}
85
- Conflicts: ${result.conflicts}
86
- Local Only: ${result.localOnly}
87
- Remote Only: ${result.remoteOnly}
88
- `);
89
- if (result.files.length > 0 && result.synced < result.files.length) {
90
- yield* Console.log("Changed files:");
91
- for (const file of result.files) {
92
- if (file._tag !== "Synced" && file._tag !== "RemoteOnly") {
93
- yield* Console.log(` [${file._tag}] ${file.path}`);
94
- }
95
- else if (file._tag === "RemoteOnly") {
96
- yield* Console.log(` [${file._tag}] ${file.page.title}`);
97
- }
98
- }
99
- }
100
- })).pipe(Command.withDescription("Show sync status"));
10
+ import { handleError } from "./commands/errorHandler.js";
11
+ import { authCommand, cloneCommand, commitCommand, deleteCommand, diffCommand, logCommand, newCommand, pullCommand, pushCommand, statusCommand } from "./commands/index.js";
12
+ import { AppLayer, AuthOnlyLayer, CloneLayer, getLayerType, MinimalLayer } from "./commands/layers.js";
101
13
  // === Main command ===
102
- const confluence = Command.make("confluence").pipe(Command.withDescription("Sync Confluence pages to local markdown"), Command.withSubcommands([initCommand, pullCommand, pushCommand, syncCommand, statusCommand]));
103
- // === Build app layer ===
104
- // Dummy config layer for help/init
105
- const DummyConfigLayer = ConfluenceConfigLayerFromValues({
106
- rootPageId: "dummy",
107
- baseUrl: "https://dummy.atlassian.net",
108
- docsPath: ".docs/confluence",
109
- excludePatterns: []
110
- });
111
- // Dummy client layer for help/init (will fail if actually used)
112
- const DummyConfluenceClientLayer = Layer.succeed(ConfluenceClient, ConfluenceClient.of({
113
- getPage: () => Effect.dieMessage("Not configured"),
114
- getChildren: () => Effect.dieMessage("Not configured"),
115
- getAllChildren: () => Effect.dieMessage("Not configured"),
116
- createPage: () => Effect.dieMessage("Not configured"),
117
- updatePage: () => Effect.dieMessage("Not configured"),
118
- deletePage: () => Effect.dieMessage("Not configured")
119
- }));
120
- // Dummy sync engine that will fail if actually used
121
- const DummySyncEngineLayer = Layer.succeed(SyncEngine, SyncEngine.of({
122
- pull: () => Effect.dieMessage("Not configured - run 'confluence init' first"),
123
- push: () => Effect.dieMessage("Not configured - run 'confluence init' first"),
124
- sync: () => Effect.dieMessage("Not configured - run 'confluence init' first"),
125
- status: () => Effect.dieMessage("Not configured - run 'confluence init' first")
126
- }));
127
- // Build client layer dynamically based on auth
128
- const ConfluenceClientLive = Layer.unwrapEffect(Effect.gen(function* () {
129
- const auth = yield* getAuth();
130
- const config = yield* ConfluenceConfig;
131
- const clientConfig = {
132
- baseUrl: config.baseUrl,
133
- auth
134
- };
135
- return ConfluenceClientLayer(clientConfig);
136
- }));
137
- // Full app layer with all services
138
- const AppLayer = SyncEngineLayer.pipe(Layer.provideMerge(ConfluenceClientLive), Layer.provideMerge(MarkdownConverterLayer), Layer.provideMerge(LocalFileSystemLayer), Layer.provideMerge(ConfluenceConfigLayer()), Layer.provideMerge(NodeHttpClient.layer), Layer.provideMerge(NodeContext.layer));
139
- // Minimal layer for init/help (dummy services, won't be invoked)
140
- const MinimalLayer = DummySyncEngineLayer.pipe(Layer.provideMerge(DummyConfluenceClientLayer), Layer.provideMerge(MarkdownConverterLayer), Layer.provideMerge(LocalFileSystemLayer), Layer.provideMerge(DummyConfigLayer), Layer.provideMerge(NodeTerminal.layer), Layer.provideMerge(NodeContext.layer));
14
+ const confluence = Command.make("confluence").pipe(Command.withDescription("Sync Confluence pages to local markdown"), Command.withSubcommands([
15
+ cloneCommand,
16
+ authCommand,
17
+ pullCommand,
18
+ pushCommand,
19
+ statusCommand,
20
+ commitCommand,
21
+ logCommand,
22
+ diffCommand,
23
+ newCommand,
24
+ deleteCommand
25
+ ]));
141
26
  // === Run CLI ===
142
27
  const cli = Command.run(confluence, {
143
28
  name: pkg.name,
144
29
  version: pkg.version
145
30
  });
146
- // Check if we need the full layer based on command
147
- const needsFullLayer = () => {
148
- const args = process.argv;
149
- const cmd = args[2];
150
- // init, --help, -h, --version don't need config
151
- if (!cmd || cmd === "init" || cmd === "--help" || cmd === "-h" || cmd === "--version") {
152
- return false;
31
+ const layerType = getLayerType();
32
+ const layer = layerType === "full"
33
+ ? AppLayer
34
+ : layerType === "auth"
35
+ ? AuthOnlyLayer
36
+ : layerType === "clone"
37
+ ? CloneLayer
38
+ : MinimalLayer;
39
+ // Suppress verbose Effect logs (e.g. token refresh messages)
40
+ const SilentLogger = Logger.replace(Logger.defaultLogger, Logger.none);
41
+ Effect.suspend(() => cli(process.argv)).pipe(Effect.provide(layer), Effect.provide(SilentLogger), Logger.withMinimumLogLevel(LogLevel.None), Effect.runPromiseExit).then((exit) => {
42
+ if (exit._tag === "Failure") {
43
+ handleError(exit.cause);
44
+ process.exit(1);
153
45
  }
154
- return true;
155
- };
156
- const main = Effect.suspend(() => cli(process.argv));
157
- if (needsFullLayer()) {
158
- main.pipe(Effect.provide(AppLayer), Effect.tapErrorCause(Effect.logError), NodeRuntime.runMain);
159
- }
160
- else {
161
- main.pipe(Effect.provide(MinimalLayer), Effect.tapErrorCause(Effect.logError), NodeRuntime.runMain);
162
- }
46
+ });
163
47
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEtG,uBAAuB;AACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAChD,OAAO,CAAC,eAAe,CAAC,yCAAyC,CAAC,EAClE,OAAO,CAAC,eAAe,CAAC;IACtB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,aAAa;IACb,UAAU;IACV,WAAW;IACX,UAAU;IACV,aAAa;CACd,CAAC,CACH,CAAA;AAED,kBAAkB;AAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;IAClC,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,OAAO,EAAE,GAAG,CAAC,OAAO;CACrB,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;AAChC,MAAM,KAAK,GAAG,SAAS,KAAK,MAAM;IAChC,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,SAAS,KAAK,MAAM;QACtB,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,SAAS,KAAK,OAAO;YACvB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,YAAY,CAAA;AAEhB,6DAA6D;AAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;AAEtE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzC,MAAM,CAAC,cAAc,CACtB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Authentication commands for Confluence CLI.
3
+ */
4
+ import { Command } from "@effect/cli";
5
+ import * as Option from "effect/Option";
6
+ import { ConfluenceAuth } from "../ConfluenceAuth.js";
7
+ export declare const authCommand: Command.Command<"auth", ConfluenceAuth | import("@effect/platform/Terminal").Terminal, import("../ConfluenceError.js").FileSystemError | import("../ConfluenceError.js").OAuthError | import("@effect/platform/Terminal").QuitException, {
8
+ readonly subcommand: Option.Option<{} | {
9
+ readonly clientId: Option.Option<string>;
10
+ readonly clientSecret: Option.Option<string>;
11
+ } | {
12
+ readonly site: Option.Option<string>;
13
+ } | {} | {}>;
14
+ }>;
15
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAA;AAGtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAoGrD,eAAO,MAAM,WAAW;;;;;;;EASvB,CAAA"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Authentication commands for Confluence CLI.
3
+ */
4
+ import { Command, Options, Prompt } from "@effect/cli";
5
+ import * as Console from "effect/Console";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Option from "effect/Option";
8
+ import { ConfluenceAuth } from "../ConfluenceAuth.js";
9
+ // === Auth create command ===
10
+ const createCommand = Command.make("create", {}, () => Effect.gen(function* () {
11
+ yield* Console.log(`
12
+ Creating OAuth app in Atlassian Developer Console...
13
+
14
+ 1. Browser will open to create a new OAuth 2.0 (3LO) app
15
+ 2. Enter app name (e.g., "Confluence CLI")
16
+ 3. After creation, go to "Permissions" and add:
17
+ - Confluence API (granular): read:page:confluence, write:page:confluence, delete:page:confluence
18
+ - User Identity API: read:me
19
+ 4. Go to "Authorization" and set callback URL:
20
+ http://localhost:8585/callback
21
+ 5. Go to "Settings" and copy Client ID and Secret
22
+ 6. Run: confluence auth configure --client-id <ID> --client-secret <SECRET>
23
+ `);
24
+ const url = "https://developer.atlassian.com/console/myapps/create-3lo-app/";
25
+ yield* Effect.promise(() => import("node:child_process").then((cp) => new Promise((resolve, reject) => {
26
+ const platform = process.platform;
27
+ if (platform === "darwin") {
28
+ cp.execFile("open", [url], (err) => err ? reject(err) : resolve());
29
+ }
30
+ else if (platform === "win32") {
31
+ cp.execFile("cmd", ["/c", "start", "", url], (err) => err ? reject(err) : resolve());
32
+ }
33
+ else {
34
+ cp.execFile("xdg-open", [url], (err) => err ? reject(err) : resolve());
35
+ }
36
+ })));
37
+ })).pipe(Command.withDescription("Create OAuth app in Atlassian Developer Console"));
38
+ // === Auth configure command ===
39
+ const clientIdOption = Options.text("client-id").pipe(Options.withDescription("OAuth client ID from Atlassian Developer Console"), Options.optional);
40
+ const clientSecretOption = Options.text("client-secret").pipe(Options.withDescription("OAuth client secret"), Options.optional);
41
+ const configureCommand = Command.make("configure", { clientId: clientIdOption, clientSecret: clientSecretOption }, ({ clientId, clientSecret }) => Effect.gen(function* () {
42
+ const auth = yield* ConfluenceAuth;
43
+ const rawClientId = Option.isSome(clientId)
44
+ ? clientId.value
45
+ : yield* Prompt.text({ message: "Enter OAuth client ID:" });
46
+ const rawClientSecret = Option.isSome(clientSecret)
47
+ ? clientSecret.value
48
+ : yield* Prompt.text({ message: "Enter OAuth client secret:" });
49
+ yield* auth.configure({ clientId: rawClientId, clientSecret: rawClientSecret });
50
+ yield* Console.log("OAuth configured. Run 'confluence auth login' to authenticate.");
51
+ })).pipe(Command.withDescription("Configure OAuth client credentials"));
52
+ // === Auth login command ===
53
+ const siteOption = Options.text("site").pipe(Options.withDescription("Confluence site URL to use (for accounts with multiple sites)"), Options.optional);
54
+ const loginCommand = Command.make("login", { site: siteOption }, ({ site }) => Effect.gen(function* () {
55
+ const auth = yield* ConfluenceAuth;
56
+ const result = yield* auth.login(Option.isSome(site) ? { siteUrl: site.value } : undefined);
57
+ if (Array.isArray(result) && result.length > 0) {
58
+ yield* Console.log("\nRe-run with --site to select a specific site.");
59
+ }
60
+ })).pipe(Command.withDescription("Authenticate with Atlassian via OAuth"));
61
+ // === Auth logout command ===
62
+ const logoutCommand = Command.make("logout", {}, () => Effect.gen(function* () {
63
+ const auth = yield* ConfluenceAuth;
64
+ yield* auth.logout();
65
+ yield* Console.log("Logged out");
66
+ })).pipe(Command.withDescription("Remove stored authentication"));
67
+ // === Auth status command ===
68
+ const statusCommand = Command.make("status", {}, () => Effect.gen(function* () {
69
+ const auth = yield* ConfluenceAuth;
70
+ const user = yield* auth.getCurrentUser();
71
+ if (user) {
72
+ yield* Console.log(`Logged in as: ${user.name} (${user.email})`);
73
+ }
74
+ else {
75
+ yield* Console.log("Not logged in. Use 'confluence auth login' to authenticate.");
76
+ }
77
+ })).pipe(Command.withDescription("Show authentication status"));
78
+ // === Auth command group ===
79
+ export const authCommand = Command.make("auth").pipe(Command.withDescription("Manage OAuth authentication"), Command.withSubcommands([
80
+ createCommand,
81
+ configureCommand,
82
+ loginCommand,
83
+ logoutCommand,
84
+ statusCommand
85
+ ]));
86
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,8BAA8B;AAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYtB,CAAC,CAAA;IACE,MAAM,GAAG,GAAG,gEAAgE,CAAA;IAC5E,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACvC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QACjC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACpE,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACtF,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACxE,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAA;AACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iDAAiD,CAAC,CAAC,CAAA;AAEtF,iCAAiC;AACjC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACnD,OAAO,CAAC,eAAe,CAAC,kDAAkD,CAAC,EAC3E,OAAO,CAAC,QAAQ,CACjB,CAAA;AACD,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAC3D,OAAO,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAC9C,OAAO,CAAC,QAAQ,CACjB,CAAA;AAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CACnC,WAAW,EACX,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,EAC9D,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,CAC7B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAElC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzC,CAAC,CAAC,QAAQ,CAAC,KAAK;QAChB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAA;IAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACjD,CAAC,CAAC,YAAY,CAAC,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAA;IAEjE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAA;IAC/E,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;AACtF,CAAC,CAAC,CACL,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,oCAAoC,CAAC,CAAC,CAAA;AAErE,6BAA6B;AAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1C,OAAO,CAAC,eAAe,CAAC,+DAA+D,CAAC,EACxF,OAAO,CAAC,QAAQ,CACjB,CAAA;AAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAC5E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC3F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;IACvE,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAAC,CAAA;AAE5E,8BAA8B;AAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAClC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAClC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC,CAAA;AAEnE,8BAA8B;AAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAA;IACzC,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;IACnF,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC,CAAA;AAEjE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAClD,OAAO,CAAC,eAAe,CAAC,6BAA6B,CAAC,EACtD,OAAO,CAAC,eAAe,CAAC;IACtB,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,aAAa;CACd,CAAC,CACH,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Clone command for Confluence CLI.
3
+ */
4
+ import { Command } from "@effect/cli";
5
+ import * as Option from "effect/Option";
6
+ import { ConfigError } from "../ConfluenceError.js";
7
+ import { GitService } from "../GitService.js";
8
+ export declare const cloneCommand: Command.Command<"clone", import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("../ConfluenceAuth.js").ConfluenceAuth | GitService | import("@effect/platform/Terminal").Terminal, import("../ConfluenceError.js").ConfigParseError | ConfigError | import("../ConfluenceError.js").AuthMissingError | import("../ConfluenceError.js").ApiError | import("../ConfluenceError.js").RateLimitError | import("../ConfluenceError.js").ConversionError | import("../ConfluenceError.js").FileSystemError | import("../ConfluenceError.js").OAuthError | import("../ConfluenceError.js").FrontMatterError | import("../ConfluenceError.js").StructureError | import("../GitError.js").GitError | import("../GitError.js").GitNotInstalledError | import("../GitError.js").GitNoChangesError | import("../GitError.js").GitMergeConflictError | import("../GitError.js").GitNotInitializedError | import("@effect/platform/Terminal").QuitException, {
9
+ readonly rootPageId: Option.Option<string>;
10
+ readonly baseUrl: Option.Option<string>;
11
+ }>;
12
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAA;AAMtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAA;AAmCvE,eAAO,MAAM,YAAY;;;EA+F0D,CAAA"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Clone command for Confluence CLI.
3
+ */
4
+ import { Command, Options, Prompt } from "@effect/cli";
5
+ import * as NodeContext from "@effect/platform-node/NodeContext";
6
+ import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
7
+ import * as Console from "effect/Console";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Option from "effect/Option";
11
+ import { layer as ConfluenceClientLayer } from "../ConfluenceClient.js";
12
+ import { createConfigFile, layerFromValues as ConfluenceConfigLayerFromValues } from "../ConfluenceConfig.js";
13
+ import { ConfigError } from "../ConfluenceError.js";
14
+ import { GitService, layer as GitServiceLayer } from "../GitService.js";
15
+ import { UserCacheLayer } from "../internal/userCache.js";
16
+ import { layer as LocalFileSystemLayer } from "../LocalFileSystem.js";
17
+ import { layer as MarkdownConverterLayer } from "../MarkdownConverter.js";
18
+ import { layer as SyncEngineLayer, SyncEngine } from "../SyncEngine.js";
19
+ import { getAuth } from "./shared.js";
20
+ const rootPageIdOption = Options.text("root-page-id").pipe(Options.withDescription("Confluence root page ID to sync from"), Options.optional);
21
+ const baseUrlOption = Options.text("base-url").pipe(Options.withDescription("Confluence Cloud base URL (e.g., https://yoursite.atlassian.net)"), Options.optional);
22
+ /** Validate page ID format */
23
+ const validatePageId = (input) => input.trim().length > 0
24
+ ? Effect.succeed(input.trim())
25
+ : Effect.fail(new ConfigError({ message: "Page ID cannot be empty" }));
26
+ /** Validate base URL format */
27
+ const validateBaseUrl = (input) => {
28
+ const pattern = /^https:\/\/[a-z0-9-]+\.atlassian\.net$/;
29
+ return pattern.test(input)
30
+ ? Effect.succeed(input)
31
+ : Effect.fail(new ConfigError({
32
+ message: `Invalid Confluence URL: ${input}. Expected format: https://yoursite.atlassian.net`
33
+ }));
34
+ };
35
+ export const cloneCommand = Command.make("clone", { rootPageId: rootPageIdOption, baseUrl: baseUrlOption }, ({ baseUrl, rootPageId }) => Effect.gen(function* () {
36
+ const git = yield* GitService;
37
+ // Fail if .confluence already exists
38
+ const isGitInit = yield* git.isInitialized();
39
+ if (isGitInit) {
40
+ return yield* Effect.fail(new ConfigError({ message: "Already cloned. Use 'confluence pull' to update." }));
41
+ }
42
+ // Validate git is installed
43
+ yield* Console.log("Checking git installation...");
44
+ const gitVersion = yield* git.validateGit().pipe(Effect.mapError(() => new ConfigError({ message: "Git is required but not installed. Please install git first." })));
45
+ yield* Console.log(`Found git ${gitVersion}`);
46
+ const rawPageId = Option.isSome(rootPageId)
47
+ ? rootPageId.value
48
+ : yield* Prompt.text({ message: "Enter Confluence root page ID:" });
49
+ const rawUrl = Option.isSome(baseUrl)
50
+ ? baseUrl.value
51
+ : yield* Prompt.text({ message: "Enter Confluence base URL (e.g., https://yoursite.atlassian.net):" });
52
+ const pageId = yield* validatePageId(rawPageId);
53
+ const url = yield* validateBaseUrl(rawUrl);
54
+ const path = yield* createConfigFile(pageId, url);
55
+ yield* Console.log(`Created configuration file: ${path}`);
56
+ // Initialize git repo
57
+ yield* Console.log("Initializing git repository...");
58
+ yield* git.init().pipe(Effect.mapError(() => new ConfigError({ message: "Failed to initialize git repository" })));
59
+ // Build services dynamically with the new config
60
+ yield* Console.log("Cloning pages from Confluence with full history...");
61
+ // Get auth
62
+ const auth = yield* getAuth();
63
+ const clientConfig = { baseUrl: url, auth };
64
+ // Build layers for the clone operation
65
+ const configLayer = ConfluenceConfigLayerFromValues({
66
+ rootPageId: pageId,
67
+ baseUrl: url,
68
+ docsPath: ".confluence/docs",
69
+ excludePatterns: [],
70
+ saveSource: false,
71
+ trackedPaths: ["**/*.md"]
72
+ });
73
+ const clientLayer = ConfluenceClientLayer(clientConfig).pipe(Layer.provide(NodeHttpClient.layer));
74
+ const cloneLayer = SyncEngineLayer.pipe(Layer.provideMerge(UserCacheLayer), Layer.provideMerge(GitServiceLayer), Layer.provideMerge(clientLayer), Layer.provideMerge(MarkdownConverterLayer), Layer.provideMerge(LocalFileSystemLayer), Layer.provideMerge(configLayer), Layer.provideMerge(NodeContext.layer));
75
+ const result = yield* Effect.gen(function* () {
76
+ const engine = yield* SyncEngine;
77
+ const gitService = yield* GitService;
78
+ const pullResult = yield* engine.pull({
79
+ force: true,
80
+ replayHistory: true,
81
+ onProgress: (current, total, message) => {
82
+ process.stdout.write(`\r Replaying history: ${current}/${total} - ${message}`);
83
+ }
84
+ });
85
+ // Create origin/confluence branch at HEAD to track remote state
86
+ yield* gitService.createBranch("origin/confluence");
87
+ return pullResult;
88
+ }).pipe(Effect.provide(cloneLayer));
89
+ // Clear progress line and print final result
90
+ process.stdout.write("\r" + " ".repeat(80) + "\r");
91
+ yield* Console.log(`Cloned ${result.pulled} pages with ${result.commits} commits`);
92
+ })).pipe(Command.withDescription("Clone Confluence pages with full version history"));
93
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Delete command for Confluence CLI.
3
+ *
4
+ * Interactive mode: select page from tree, delete local file only.
5
+ * Push to actually delete from Confluence.
6
+ */
7
+ import { Command } from "@effect/cli";
8
+ import * as FileSystem from "@effect/platform/FileSystem";
9
+ import * as Path from "@effect/platform/Path";
10
+ import { ConfluenceConfig } from "../ConfluenceConfig.js";
11
+ import { LocalFileSystem } from "../LocalFileSystem.js";
12
+ export declare const deleteCommand: Command.Command<"delete", FileSystem.FileSystem | Path.Path | ConfluenceConfig | import("@effect/platform/Terminal").Terminal | LocalFileSystem, import("../ConfluenceError.js").FileSystemError | import("../ConfluenceError.js").FrontMatterError | import("@effect/platform/Error").PlatformError | import("@effect/platform/Terminal").QuitException, {}>;
13
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAU,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,eAAO,MAAM,aAAa,+VAyCmE,CAAA"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Delete command for Confluence CLI.
3
+ *
4
+ * Interactive mode: select page from tree, delete local file only.
5
+ * Push to actually delete from Confluence.
6
+ */
7
+ import { Command, Prompt } from "@effect/cli";
8
+ import * as FileSystem from "@effect/platform/FileSystem";
9
+ import * as Path from "@effect/platform/Path";
10
+ import * as Console from "effect/Console";
11
+ import * as Effect from "effect/Effect";
12
+ import { ConfluenceConfig } from "../ConfluenceConfig.js";
13
+ import { LocalFileSystem } from "../LocalFileSystem.js";
14
+ import { flattenPageTree } from "./pageTree.js";
15
+ export const deleteCommand = Command.make("delete", {}, () => Effect.gen(function* () {
16
+ const localFs = yield* LocalFileSystem;
17
+ const config = yield* ConfluenceConfig;
18
+ const pathService = yield* Path.Path;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const docsPath = pathService.join(process.cwd(), config.docsPath);
21
+ // Interactive mode - show page tree, delete local file
22
+ yield* Console.log("Scanning page structure...");
23
+ const tree = yield* localFs.buildPageTree(docsPath, config.rootPageId, "Root");
24
+ // Flatten to choices (exclude pages without pageId - they're not on Confluence)
25
+ const allChoices = flattenPageTree(tree);
26
+ const choices = allChoices.filter((c) => c.value.pageId !== null);
27
+ if (choices.length === 0) {
28
+ yield* Console.log("No pages found to delete. Run 'confluence clone' or 'confluence pull' first.");
29
+ return;
30
+ }
31
+ const selected = yield* Prompt.select({
32
+ message: "Select page to delete:",
33
+ choices
34
+ });
35
+ if (!selected.pageId || !selected.path) {
36
+ yield* Console.log("Selected page has no pageId - cannot delete.");
37
+ return;
38
+ }
39
+ // Delete local file
40
+ const filePath = pathService.join(docsPath, selected.path);
41
+ yield* fs.remove(filePath);
42
+ yield* Console.log(`Deleted: ${selected.path}`);
43
+ yield* Console.log("");
44
+ yield* Console.log("Next steps:");
45
+ yield* Console.log(" 1. Run 'confluence commit' to stage the deletion");
46
+ yield* Console.log(" 2. Run 'confluence push' to delete from Confluence");
47
+ })).pipe(Command.withDescription("Delete a page locally (push to remove from Confluence)"));
48
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAEvC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEjE,uDAAuD;IACvD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE9E,gFAAgF;IAChF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAA;IAEjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAA;QAClG,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,OAAO,EAAE,wBAAwB;QACjC,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAED,oBAAoB;IACpB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAE1B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/C,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACjC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;IACxE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;AAC5E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,wDAAwD,CAAC,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI error handler.
3
+ *
4
+ * We use custom error handling instead of built-in options because:
5
+ * - Cause.pretty() includes stack traces which are noisy for CLI users
6
+ * - Logger.pretty is for logging, not error output
7
+ * - NodeRuntime.runMain error reporting shows full cause structure
8
+ */
9
+ import * as Cause from "effect/Cause";
10
+ /**
11
+ * Print errors to stderr without stack traces.
12
+ */
13
+ export declare const handleError: <E>(cause: Cause.Cause<E>) => void;
14
+ //# sourceMappingURL=errorHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/commands/errorHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,IAkBtD,CAAA"}