@knpkv/confluence-to-markdown 0.2.0 → 0.4.2
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.
- package/CHANGELOG.md +73 -0
- package/LICENSE +21 -0
- package/README.md +282 -14
- package/dist/ConfluenceAuth.d.ts +76 -0
- package/dist/ConfluenceAuth.d.ts.map +1 -0
- package/dist/ConfluenceAuth.js +366 -0
- package/dist/ConfluenceAuth.js.map +1 -0
- package/dist/ConfluenceClient.d.ts +26 -12
- package/dist/ConfluenceClient.d.ts.map +1 -1
- package/dist/ConfluenceClient.js +139 -97
- package/dist/ConfluenceClient.js.map +1 -1
- package/dist/ConfluenceConfig.d.ts +4 -24
- package/dist/ConfluenceConfig.d.ts.map +1 -1
- package/dist/ConfluenceConfig.js +45 -7
- package/dist/ConfluenceConfig.js.map +1 -1
- package/dist/ConfluenceError.d.ts +99 -16
- package/dist/ConfluenceError.d.ts.map +1 -1
- package/dist/ConfluenceError.js +88 -5
- package/dist/ConfluenceError.js.map +1 -1
- package/dist/GitError.d.ts +103 -0
- package/dist/GitError.d.ts.map +1 -0
- package/dist/GitError.js +85 -0
- package/dist/GitError.js.map +1 -0
- package/dist/GitService.d.ts +175 -0
- package/dist/GitService.d.ts.map +1 -0
- package/dist/GitService.js +431 -0
- package/dist/GitService.js.map +1 -0
- package/dist/LocalFileSystem.d.ts +29 -4
- package/dist/LocalFileSystem.d.ts.map +1 -1
- package/dist/LocalFileSystem.js +80 -6
- package/dist/LocalFileSystem.js.map +1 -1
- package/dist/MarkdownConverter.d.ts +49 -2
- package/dist/MarkdownConverter.d.ts.map +1 -1
- package/dist/MarkdownConverter.js +73 -111
- package/dist/MarkdownConverter.js.map +1 -1
- package/dist/SchemaConverterError.d.ts +108 -0
- package/dist/SchemaConverterError.d.ts.map +1 -0
- package/dist/SchemaConverterError.js +84 -0
- package/dist/SchemaConverterError.js.map +1 -0
- package/dist/Schemas.d.ts +225 -1
- package/dist/Schemas.d.ts.map +1 -1
- package/dist/Schemas.js +155 -6
- package/dist/Schemas.js.map +1 -1
- package/dist/SyncEngine.d.ts +30 -20
- package/dist/SyncEngine.d.ts.map +1 -1
- package/dist/SyncEngine.js +566 -117
- package/dist/SyncEngine.js.map +1 -1
- package/dist/ast/BlockNode.d.ts +468 -0
- package/dist/ast/BlockNode.d.ts.map +1 -0
- package/dist/ast/BlockNode.js +319 -0
- package/dist/ast/BlockNode.js.map +1 -0
- package/dist/ast/Document.d.ts +244 -0
- package/dist/ast/Document.d.ts.map +1 -0
- package/dist/ast/Document.js +69 -0
- package/dist/ast/Document.js.map +1 -0
- package/dist/ast/InlineNode.d.ts +477 -0
- package/dist/ast/InlineNode.d.ts.map +1 -0
- package/dist/ast/InlineNode.js +263 -0
- package/dist/ast/InlineNode.js.map +1 -0
- package/dist/ast/MacroNode.d.ts +267 -0
- package/dist/ast/MacroNode.d.ts.map +1 -0
- package/dist/ast/MacroNode.js +164 -0
- package/dist/ast/MacroNode.js.map +1 -0
- package/dist/ast/index.d.ts +10 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +14 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/bin.js +33 -149
- package/dist/bin.js.map +1 -1
- package/dist/commands/auth.d.ts +15 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +86 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/clone.d.ts +12 -0
- package/dist/commands/clone.d.ts.map +1 -0
- package/dist/commands/clone.js +93 -0
- package/dist/commands/clone.js.map +1 -0
- package/dist/commands/delete.d.ts +13 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +48 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/errorHandler.d.ts +14 -0
- package/dist/commands/errorHandler.d.ts.map +1 -0
- package/dist/commands/errorHandler.js +33 -0
- package/dist/commands/errorHandler.js.map +1 -0
- package/dist/commands/git.d.ts +22 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +72 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/index.d.ts +11 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/layers.d.ts +31 -0
- package/dist/commands/layers.d.ts.map +1 -0
- package/dist/commands/layers.js +137 -0
- package/dist/commands/layers.js.map +1 -0
- package/dist/commands/new.d.ts +9 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +80 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pageTree.d.ts +18 -0
- package/dist/commands/pageTree.d.ts.map +1 -0
- package/dist/commands/pageTree.js +20 -0
- package/dist/commands/pageTree.js.map +1 -0
- package/dist/commands/shared.d.ts +15 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +27 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/sync.d.ts +15 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +101 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/NodeLayers.d.ts +7 -0
- package/dist/internal/NodeLayers.d.ts.map +1 -0
- package/dist/internal/NodeLayers.js +19 -0
- package/dist/internal/NodeLayers.js.map +1 -0
- package/dist/internal/frontmatter.d.ts +10 -0
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +16 -0
- package/dist/internal/frontmatter.js.map +1 -1
- package/dist/internal/gitCommands.d.ts +78 -0
- package/dist/internal/gitCommands.d.ts.map +1 -0
- package/dist/internal/gitCommands.js +156 -0
- package/dist/internal/gitCommands.js.map +1 -0
- package/dist/internal/hashUtils.d.ts +42 -1
- package/dist/internal/hashUtils.d.ts.map +1 -1
- package/dist/internal/hashUtils.js +38 -2
- package/dist/internal/hashUtils.js.map +1 -1
- package/dist/internal/oauthServer.d.ts +55 -0
- package/dist/internal/oauthServer.d.ts.map +1 -0
- package/dist/internal/oauthServer.js +110 -0
- package/dist/internal/oauthServer.js.map +1 -0
- package/dist/internal/pathUtils.d.ts +21 -4
- package/dist/internal/pathUtils.d.ts.map +1 -1
- package/dist/internal/pathUtils.js +24 -13
- package/dist/internal/pathUtils.js.map +1 -1
- package/dist/internal/tokenStorage.d.ts +75 -0
- package/dist/internal/tokenStorage.d.ts.map +1 -0
- package/dist/internal/tokenStorage.js +149 -0
- package/dist/internal/tokenStorage.js.map +1 -0
- package/dist/internal/userCache.d.ts +42 -0
- package/dist/internal/userCache.d.ts.map +1 -0
- package/dist/internal/userCache.js +51 -0
- package/dist/internal/userCache.js.map +1 -0
- package/dist/parsers/ConfluenceParser.d.ts +26 -0
- package/dist/parsers/ConfluenceParser.d.ts.map +1 -0
- package/dist/parsers/ConfluenceParser.js +792 -0
- package/dist/parsers/ConfluenceParser.js.map +1 -0
- package/dist/parsers/MarkdownParser.d.ts +26 -0
- package/dist/parsers/MarkdownParser.d.ts.map +1 -0
- package/dist/parsers/MarkdownParser.js +873 -0
- package/dist/parsers/MarkdownParser.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +8 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/schemas/ConfluenceSchema.d.ts +21 -0
- package/dist/schemas/ConfluenceSchema.d.ts.map +1 -0
- package/dist/schemas/ConfluenceSchema.js +38 -0
- package/dist/schemas/ConfluenceSchema.js.map +1 -0
- package/dist/schemas/ConversionSchema.d.ts +35 -0
- package/dist/schemas/ConversionSchema.d.ts.map +1 -0
- package/dist/schemas/ConversionSchema.js +208 -0
- package/dist/schemas/ConversionSchema.js.map +1 -0
- package/dist/schemas/MarkdownSchema.d.ts +21 -0
- package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
- package/dist/schemas/MarkdownSchema.js +38 -0
- package/dist/schemas/MarkdownSchema.js.map +1 -0
- package/dist/schemas/hast/HastFromHtml.d.ts +27 -0
- package/dist/schemas/hast/HastFromHtml.d.ts.map +1 -0
- package/dist/schemas/hast/HastFromHtml.js +107 -0
- package/dist/schemas/hast/HastFromHtml.js.map +1 -0
- package/dist/schemas/hast/HastSchema.d.ts +195 -0
- package/dist/schemas/hast/HastSchema.d.ts.map +1 -0
- package/dist/schemas/hast/HastSchema.js +183 -0
- package/dist/schemas/hast/HastSchema.js.map +1 -0
- package/dist/schemas/hast/index.d.ts +9 -0
- package/dist/schemas/hast/index.d.ts.map +1 -0
- package/dist/schemas/hast/index.js +3 -0
- package/dist/schemas/hast/index.js.map +1 -0
- package/dist/schemas/index.d.ts +14 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +16 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts +30 -0
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +1 -0
- package/dist/schemas/mdast/MdastFromMarkdown.js +79 -0
- package/dist/schemas/mdast/MdastFromMarkdown.js.map +1 -0
- package/dist/schemas/mdast/MdastSchema.d.ts +385 -0
- package/dist/schemas/mdast/MdastSchema.d.ts.map +1 -0
- package/dist/schemas/mdast/MdastSchema.js +266 -0
- package/dist/schemas/mdast/MdastSchema.js.map +1 -0
- package/dist/schemas/mdast/index.d.ts +10 -0
- package/dist/schemas/mdast/index.d.ts.map +1 -0
- package/dist/schemas/mdast/index.js +4 -0
- package/dist/schemas/mdast/index.js.map +1 -0
- package/dist/schemas/mdast/mdastToString.d.ts +13 -0
- package/dist/schemas/mdast/mdastToString.d.ts.map +1 -0
- package/dist/schemas/mdast/mdastToString.js +85 -0
- package/dist/schemas/mdast/mdastToString.js.map +1 -0
- package/dist/schemas/nodes/block/BlockSchema.d.ts +43 -0
- package/dist/schemas/nodes/block/BlockSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/block/BlockSchema.js +634 -0
- package/dist/schemas/nodes/block/BlockSchema.js.map +1 -0
- package/dist/schemas/nodes/block/index.d.ts +7 -0
- package/dist/schemas/nodes/block/index.d.ts.map +1 -0
- package/dist/schemas/nodes/block/index.js +7 -0
- package/dist/schemas/nodes/block/index.js.map +1 -0
- package/dist/schemas/nodes/index.d.ts +9 -0
- package/dist/schemas/nodes/index.d.ts.map +1 -0
- package/dist/schemas/nodes/index.js +12 -0
- package/dist/schemas/nodes/index.js.map +1 -0
- package/dist/schemas/nodes/inline/InlineSchema.d.ts +48 -0
- package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/inline/InlineSchema.js +436 -0
- package/dist/schemas/nodes/inline/InlineSchema.js.map +1 -0
- package/dist/schemas/nodes/inline/index.d.ts +7 -0
- package/dist/schemas/nodes/inline/index.d.ts.map +1 -0
- package/dist/schemas/nodes/inline/index.js +7 -0
- package/dist/schemas/nodes/inline/index.js.map +1 -0
- package/dist/schemas/nodes/macro/MacroSchema.d.ts +27 -0
- package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/macro/MacroSchema.js +162 -0
- package/dist/schemas/nodes/macro/MacroSchema.js.map +1 -0
- package/dist/schemas/nodes/macro/index.d.ts +7 -0
- package/dist/schemas/nodes/macro/index.d.ts.map +1 -0
- package/dist/schemas/nodes/macro/index.js +7 -0
- package/dist/schemas/nodes/macro/index.js.map +1 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +24 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +1 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js +351 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +1 -0
- package/dist/schemas/preprocessing/index.d.ts +8 -0
- package/dist/schemas/preprocessing/index.d.ts.map +1 -0
- package/dist/schemas/preprocessing/index.js +2 -0
- package/dist/schemas/preprocessing/index.js.map +1 -0
- package/dist/serializers/ConfluenceSerializer.d.ts +30 -0
- package/dist/serializers/ConfluenceSerializer.d.ts.map +1 -0
- package/dist/serializers/ConfluenceSerializer.js +551 -0
- package/dist/serializers/ConfluenceSerializer.js.map +1 -0
- package/dist/serializers/MarkdownSerializer.d.ts +34 -0
- package/dist/serializers/MarkdownSerializer.d.ts.map +1 -0
- package/dist/serializers/MarkdownSerializer.js +355 -0
- package/dist/serializers/MarkdownSerializer.js.map +1 -0
- package/dist/serializers/index.d.ts +8 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/serializers/index.js +8 -0
- package/dist/serializers/index.js.map +1 -0
- package/package.json +32 -21
- package/src/ConfluenceAuth.ts +581 -0
- package/src/ConfluenceClient.ts +230 -165
- package/src/ConfluenceConfig.ts +63 -7
- package/src/ConfluenceError.ts +110 -14
- package/src/GitError.ts +92 -0
- package/src/GitService.ts +859 -0
- package/src/LocalFileSystem.ts +179 -9
- package/src/MarkdownConverter.ts +126 -122
- package/src/SchemaConverterError.ts +108 -0
- package/src/Schemas.ts +223 -6
- package/src/SyncEngine.ts +745 -162
- package/src/ast/BlockNode.ts +425 -0
- package/src/ast/Document.ts +90 -0
- package/src/ast/InlineNode.ts +323 -0
- package/src/ast/MacroNode.ts +245 -0
- package/src/ast/index.ts +83 -0
- package/src/bin.ts +50 -249
- package/src/commands/auth.ts +117 -0
- package/src/commands/clone.ts +145 -0
- package/src/commands/delete.ts +57 -0
- package/src/commands/errorHandler.ts +32 -0
- package/src/commands/git.ts +114 -0
- package/src/commands/index.ts +10 -0
- package/src/commands/layers.ts +211 -0
- package/src/commands/new.ts +99 -0
- package/src/commands/pageTree.ts +40 -0
- package/src/commands/shared.ts +35 -0
- package/src/commands/sync.ts +129 -0
- package/src/index.ts +21 -1
- package/src/internal/NodeLayers.ts +21 -0
- package/src/internal/frontmatter.ts +21 -0
- package/src/internal/gitCommands.ts +229 -0
- package/src/internal/hashUtils.ts +65 -3
- package/src/internal/oauthServer.ts +199 -0
- package/src/internal/pathUtils.ts +34 -17
- package/src/internal/tokenStorage.ts +240 -0
- package/src/internal/userCache.ts +90 -0
- package/src/parsers/ConfluenceParser.ts +950 -0
- package/src/parsers/MarkdownParser.ts +1198 -0
- package/src/parsers/index.ts +8 -0
- package/src/schemas/ConfluenceSchema.ts +56 -0
- package/src/schemas/ConversionSchema.ts +318 -0
- package/src/schemas/MarkdownSchema.ts +56 -0
- package/src/schemas/hast/HastFromHtml.ts +153 -0
- package/src/schemas/hast/HastSchema.ts +274 -0
- package/src/schemas/hast/index.ts +35 -0
- package/src/schemas/index.ts +20 -0
- package/src/schemas/mdast/MdastFromMarkdown.ts +118 -0
- package/src/schemas/mdast/MdastSchema.ts +566 -0
- package/src/schemas/mdast/index.ts +59 -0
- package/src/schemas/mdast/mdastToString.ts +102 -0
- package/src/schemas/nodes/block/BlockSchema.ts +773 -0
- package/src/schemas/nodes/block/index.ts +13 -0
- package/src/schemas/nodes/index.ts +20 -0
- package/src/schemas/nodes/inline/InlineSchema.ts +523 -0
- package/src/schemas/nodes/inline/index.ts +14 -0
- package/src/schemas/nodes/macro/MacroSchema.ts +226 -0
- package/src/schemas/nodes/macro/index.ts +6 -0
- package/src/schemas/preprocessing/ConfluencePreprocessor.ts +446 -0
- package/src/schemas/preprocessing/index.ts +8 -0
- package/src/serializers/ConfluenceSerializer.ts +717 -0
- package/src/serializers/MarkdownSerializer.ts +493 -0
- package/src/serializers/index.ts +8 -0
- package/test/GitService.test.ts +209 -0
- package/test/MarkdownConverter.test.ts +37 -3
- package/test/Schemas.test.ts +97 -2
- package/test/ast/BlockNode.test.ts +265 -0
- package/test/ast/Document.test.ts +126 -0
- package/test/ast/InlineNode.test.ts +161 -0
- package/test/fixtures/integration-test.html.fixture +103 -0
- package/test/fixtures/integration-test.md.expected +257 -0
- package/test/integration.test.ts +269 -0
- package/test/oauthServer.test.ts +50 -0
- package/test/parsers/ConfluenceParser.test.ts +283 -0
- package/test/schemas/ConfluencePreprocessor.test.ts +180 -0
- package/test/schemas/ConversionSchema.test.ts +159 -0
- package/test/schemas/HastSchema.test.ts +138 -0
- package/test/schemas/MdastSchema.test.ts +145 -0
- package/test/schemas/nodes/block/BlockSchema.test.ts +173 -0
- package/test/schemas/nodes/inline/InlineSchema.test.ts +198 -0
- package/test/schemas/nodes/macro/MacroSchema.test.ts +142 -0
- package/test/tokenStorage.test.ts +99 -0
package/src/ConfluenceError.ts
CHANGED
|
@@ -26,7 +26,15 @@ import * as Data from "effect/Data"
|
|
|
26
26
|
*/
|
|
27
27
|
export class ConfigNotFoundError extends Data.TaggedError("ConfigNotFoundError")<{
|
|
28
28
|
readonly path: string
|
|
29
|
-
|
|
29
|
+
readonly message: string
|
|
30
|
+
}> {
|
|
31
|
+
constructor(params: { path: string }) {
|
|
32
|
+
super({
|
|
33
|
+
path: params.path,
|
|
34
|
+
message: `Config not found: ${params.path}\nRun 'confluence clone' to initialize.`
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
}
|
|
30
38
|
|
|
31
39
|
/**
|
|
32
40
|
* Error thrown when .confluence.json parsing fails.
|
|
@@ -36,7 +44,16 @@ export class ConfigNotFoundError extends Data.TaggedError("ConfigNotFoundError")
|
|
|
36
44
|
export class ConfigParseError extends Data.TaggedError("ConfigParseError")<{
|
|
37
45
|
readonly path: string
|
|
38
46
|
readonly cause: unknown
|
|
39
|
-
|
|
47
|
+
readonly message: string
|
|
48
|
+
}> {
|
|
49
|
+
constructor(params: { path: string; cause: unknown }) {
|
|
50
|
+
super({
|
|
51
|
+
path: params.path,
|
|
52
|
+
cause: params.cause,
|
|
53
|
+
message: `Invalid config file: ${params.path}`
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
}
|
|
40
57
|
|
|
41
58
|
/**
|
|
42
59
|
* Error thrown when configuration validation fails.
|
|
@@ -58,8 +75,8 @@ export class ConfigError extends Data.TaggedError("ConfigError")<{
|
|
|
58
75
|
* Effect.gen(function* () {
|
|
59
76
|
* // ... operation that needs auth
|
|
60
77
|
* }).pipe(
|
|
61
|
-
* Effect.catchTag("AuthMissingError", () =>
|
|
62
|
-
* Effect.sync(() => console.error(
|
|
78
|
+
* Effect.catchTag("AuthMissingError", (error) =>
|
|
79
|
+
* Effect.sync(() => console.error(error.message))
|
|
63
80
|
* )
|
|
64
81
|
* )
|
|
65
82
|
* ```
|
|
@@ -69,8 +86,11 @@ export class ConfigError extends Data.TaggedError("ConfigError")<{
|
|
|
69
86
|
export class AuthMissingError extends Data.TaggedError("AuthMissingError")<{
|
|
70
87
|
readonly message: string
|
|
71
88
|
}> {
|
|
72
|
-
constructor() {
|
|
73
|
-
super({
|
|
89
|
+
constructor(params?: { message?: string }) {
|
|
90
|
+
super({
|
|
91
|
+
message: params?.message ??
|
|
92
|
+
"Not authenticated. Run 'confluence login' or set CONFLUENCE_API_KEY + CONFLUENCE_EMAIL"
|
|
93
|
+
})
|
|
74
94
|
}
|
|
75
95
|
}
|
|
76
96
|
|
|
@@ -92,8 +112,16 @@ export class ApiError extends Data.TaggedError("ApiError")<{
|
|
|
92
112
|
* @category Errors
|
|
93
113
|
*/
|
|
94
114
|
export class RateLimitError extends Data.TaggedError("RateLimitError")<{
|
|
95
|
-
readonly retryAfter?: number
|
|
96
|
-
|
|
115
|
+
readonly retryAfter?: number | undefined
|
|
116
|
+
readonly message: string
|
|
117
|
+
}> {
|
|
118
|
+
constructor(params?: { retryAfter?: number }) {
|
|
119
|
+
const message = params?.retryAfter
|
|
120
|
+
? `Rate limited. Retry after ${params.retryAfter}s.`
|
|
121
|
+
: "Rate limited. Please wait and try again."
|
|
122
|
+
super({ retryAfter: params?.retryAfter, message })
|
|
123
|
+
}
|
|
124
|
+
}
|
|
97
125
|
|
|
98
126
|
/**
|
|
99
127
|
* Error thrown when HTML/Markdown conversion fails.
|
|
@@ -103,7 +131,16 @@ export class RateLimitError extends Data.TaggedError("RateLimitError")<{
|
|
|
103
131
|
export class ConversionError extends Data.TaggedError("ConversionError")<{
|
|
104
132
|
readonly direction: "htmlToMarkdown" | "markdownToHtml"
|
|
105
133
|
readonly cause: unknown
|
|
106
|
-
|
|
134
|
+
readonly message: string
|
|
135
|
+
}> {
|
|
136
|
+
constructor(params: { direction: "htmlToMarkdown" | "markdownToHtml"; cause: unknown }) {
|
|
137
|
+
super({
|
|
138
|
+
direction: params.direction,
|
|
139
|
+
cause: params.cause,
|
|
140
|
+
message: `Conversion failed (${params.direction}): ${params.cause}`
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
}
|
|
107
144
|
|
|
108
145
|
/**
|
|
109
146
|
* Error thrown when sync conflict is detected.
|
|
@@ -115,7 +152,15 @@ export class ConflictError extends Data.TaggedError("ConflictError")<{
|
|
|
115
152
|
readonly localVersion: number
|
|
116
153
|
readonly remoteVersion: number
|
|
117
154
|
readonly path: string
|
|
118
|
-
|
|
155
|
+
readonly message: string
|
|
156
|
+
}> {
|
|
157
|
+
constructor(params: { pageId: string; localVersion: number; remoteVersion: number; path: string }) {
|
|
158
|
+
super({
|
|
159
|
+
...params,
|
|
160
|
+
message: `Conflict: ${params.path} (local v${params.localVersion} vs remote v${params.remoteVersion})`
|
|
161
|
+
})
|
|
162
|
+
}
|
|
163
|
+
}
|
|
119
164
|
|
|
120
165
|
/**
|
|
121
166
|
* Error thrown when file system operation fails.
|
|
@@ -126,7 +171,15 @@ export class FileSystemError extends Data.TaggedError("FileSystemError")<{
|
|
|
126
171
|
readonly operation: "read" | "write" | "delete" | "mkdir" | "rename"
|
|
127
172
|
readonly path: string
|
|
128
173
|
readonly cause: unknown
|
|
129
|
-
|
|
174
|
+
readonly message: string
|
|
175
|
+
}> {
|
|
176
|
+
constructor(params: { operation: "read" | "write" | "delete" | "mkdir" | "rename"; path: string; cause: unknown }) {
|
|
177
|
+
super({
|
|
178
|
+
...params,
|
|
179
|
+
message: `File ${params.operation} failed: ${params.path}`
|
|
180
|
+
})
|
|
181
|
+
}
|
|
182
|
+
}
|
|
130
183
|
|
|
131
184
|
/**
|
|
132
185
|
* Error thrown when OAuth2 flow fails.
|
|
@@ -134,9 +187,17 @@ export class FileSystemError extends Data.TaggedError("FileSystemError")<{
|
|
|
134
187
|
* @category Errors
|
|
135
188
|
*/
|
|
136
189
|
export class OAuthError extends Data.TaggedError("OAuthError")<{
|
|
137
|
-
readonly step: "authorize" | "token" | "refresh"
|
|
190
|
+
readonly step: "authorize" | "token" | "refresh" | "revoke"
|
|
138
191
|
readonly cause: unknown
|
|
139
|
-
|
|
192
|
+
readonly message: string
|
|
193
|
+
}> {
|
|
194
|
+
constructor(params: { step: "authorize" | "token" | "refresh" | "revoke"; cause: unknown }) {
|
|
195
|
+
super({
|
|
196
|
+
...params,
|
|
197
|
+
message: `OAuth ${params.step} failed: ${params.cause}`
|
|
198
|
+
})
|
|
199
|
+
}
|
|
200
|
+
}
|
|
140
201
|
|
|
141
202
|
/**
|
|
142
203
|
* Error thrown when front-matter parsing fails.
|
|
@@ -146,6 +207,39 @@ export class OAuthError extends Data.TaggedError("OAuthError")<{
|
|
|
146
207
|
export class FrontMatterError extends Data.TaggedError("FrontMatterError")<{
|
|
147
208
|
readonly path: string
|
|
148
209
|
readonly cause: unknown
|
|
210
|
+
readonly message: string
|
|
211
|
+
}> {
|
|
212
|
+
constructor(params: { path: string; cause: unknown }) {
|
|
213
|
+
super({
|
|
214
|
+
...params,
|
|
215
|
+
message: `Invalid front-matter in: ${params.path}`
|
|
216
|
+
})
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Error thrown when directory structure is inconsistent.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* import { Effect } from "effect"
|
|
226
|
+
* import { StructureError } from "@knpkv/confluence-to-markdown/ConfluenceError"
|
|
227
|
+
*
|
|
228
|
+
* Effect.gen(function* () {
|
|
229
|
+
* // ... validate structure
|
|
230
|
+
* }).pipe(
|
|
231
|
+
* Effect.catchTag("StructureError", (error) =>
|
|
232
|
+
* Effect.sync(() => console.error(`${error.message}\nAdvice: ${error.advice}`))
|
|
233
|
+
* )
|
|
234
|
+
* )
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* @category Errors
|
|
238
|
+
*/
|
|
239
|
+
export class StructureError extends Data.TaggedError("StructureError")<{
|
|
240
|
+
readonly path: string
|
|
241
|
+
readonly advice: string
|
|
242
|
+
readonly message: string
|
|
149
243
|
}> {}
|
|
150
244
|
|
|
151
245
|
/**
|
|
@@ -165,6 +259,7 @@ export type ConfluenceError =
|
|
|
165
259
|
| FileSystemError
|
|
166
260
|
| OAuthError
|
|
167
261
|
| FrontMatterError
|
|
262
|
+
| StructureError
|
|
168
263
|
|
|
169
264
|
/**
|
|
170
265
|
* Type guard to check if error is a ConfluenceError.
|
|
@@ -189,5 +284,6 @@ export const isConfluenceError = (error: unknown): error is ConfluenceError =>
|
|
|
189
284
|
"ConflictError",
|
|
190
285
|
"FileSystemError",
|
|
191
286
|
"OAuthError",
|
|
192
|
-
"FrontMatterError"
|
|
287
|
+
"FrontMatterError",
|
|
288
|
+
"StructureError"
|
|
193
289
|
].includes((error as { _tag: string })._tag)
|
package/src/GitError.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-specific error types.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import * as Data from "effect/Data"
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Base git error for command execution failures.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { GitError } from "@knpkv/confluence-to-markdown/GitError"
|
|
14
|
+
*
|
|
15
|
+
* const error = new GitError({
|
|
16
|
+
* command: "git commit",
|
|
17
|
+
* message: "nothing to commit",
|
|
18
|
+
* exitCode: 1
|
|
19
|
+
* })
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @category Error
|
|
23
|
+
*/
|
|
24
|
+
export class GitError extends Data.TaggedError("GitError")<{
|
|
25
|
+
readonly command: string
|
|
26
|
+
readonly message: string
|
|
27
|
+
readonly exitCode?: number
|
|
28
|
+
}> {}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Error when git is not installed on the system.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import { GitNotInstalledError } from "@knpkv/confluence-to-markdown/GitError"
|
|
36
|
+
*
|
|
37
|
+
* const error = new GitNotInstalledError({
|
|
38
|
+
* message: "git command not found"
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @category Error
|
|
43
|
+
*/
|
|
44
|
+
export class GitNotInstalledError extends Data.TaggedError("GitNotInstalledError")<{
|
|
45
|
+
readonly message: string
|
|
46
|
+
}> {}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Error when there are no changes to commit.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* import { GitNoChangesError } from "@knpkv/confluence-to-markdown/GitError"
|
|
54
|
+
*
|
|
55
|
+
* const error = new GitNoChangesError({})
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @category Error
|
|
59
|
+
*/
|
|
60
|
+
export class GitNoChangesError extends Data.TaggedError("GitNoChangesError")<{}> {}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Error when merge conflicts exist.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* import { GitMergeConflictError } from "@knpkv/confluence-to-markdown/GitError"
|
|
68
|
+
*
|
|
69
|
+
* const error = new GitMergeConflictError({
|
|
70
|
+
* files: ["docs/page1.md", "docs/page2.md"]
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @category Error
|
|
75
|
+
*/
|
|
76
|
+
export class GitMergeConflictError extends Data.TaggedError("GitMergeConflictError")<{
|
|
77
|
+
readonly files: ReadonlyArray<string>
|
|
78
|
+
}> {}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Error when git repository is not initialized.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* import { GitNotInitializedError } from "@knpkv/confluence-to-markdown/GitError"
|
|
86
|
+
*
|
|
87
|
+
* const error = new GitNotInitializedError({})
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @category Error
|
|
91
|
+
*/
|
|
92
|
+
export class GitNotInitializedError extends Data.TaggedError("GitNotInitializedError")<{}> {}
|