@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.
- package/CHANGELOG.md +39 -0
- package/LICENSE +21 -0
- package/README.md +22 -13
- package/dist/AdfPlaceholders.d.ts +42 -0
- package/dist/AdfPlaceholders.d.ts.map +1 -0
- package/dist/AdfPlaceholders.js +547 -0
- package/dist/AdfPlaceholders.js.map +1 -0
- package/dist/AdfSchemaValidator.d.ts +37 -0
- package/dist/AdfSchemaValidator.d.ts.map +1 -0
- package/dist/AdfSchemaValidator.js +37 -0
- package/dist/AdfSchemaValidator.js.map +1 -0
- package/dist/AdfWalker.d.ts +39 -0
- package/dist/AdfWalker.d.ts.map +1 -0
- package/dist/AdfWalker.js +527 -0
- package/dist/AdfWalker.js.map +1 -0
- package/dist/AtlaskitTransformers.d.ts +35 -0
- package/dist/AtlaskitTransformers.d.ts.map +1 -0
- package/dist/AtlaskitTransformers.js +48 -0
- package/dist/AtlaskitTransformers.js.map +1 -0
- package/dist/Brand.d.ts +6 -6
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +8 -6
- package/dist/Brand.js.map +1 -1
- package/dist/ConfluenceAuth.d.ts +4 -4
- package/dist/ConfluenceAuth.d.ts.map +1 -1
- package/dist/ConfluenceAuth.js +37 -39
- package/dist/ConfluenceAuth.js.map +1 -1
- package/dist/ConfluenceClient.d.ts +7 -17
- package/dist/ConfluenceClient.d.ts.map +1 -1
- package/dist/ConfluenceClient.js +81 -38
- package/dist/ConfluenceClient.js.map +1 -1
- package/dist/ConfluenceConfig.d.ts +3 -3
- package/dist/ConfluenceConfig.d.ts.map +1 -1
- package/dist/ConfluenceConfig.js +13 -11
- package/dist/ConfluenceConfig.js.map +1 -1
- package/dist/ConfluenceError.d.ts +68 -16
- package/dist/ConfluenceError.d.ts.map +1 -1
- package/dist/ConfluenceError.js +30 -1
- package/dist/ConfluenceError.js.map +1 -1
- package/dist/GitError.d.ts +5 -5
- package/dist/GitService.d.ts +11 -3
- package/dist/GitService.d.ts.map +1 -1
- package/dist/GitService.js +22 -27
- package/dist/GitService.js.map +1 -1
- package/dist/LocalFileSystem.d.ts +3 -3
- package/dist/LocalFileSystem.d.ts.map +1 -1
- package/dist/LocalFileSystem.js +6 -6
- package/dist/LocalFileSystem.js.map +1 -1
- package/dist/MarkdownConverter.d.ts +16 -65
- package/dist/MarkdownConverter.d.ts.map +1 -1
- package/dist/MarkdownConverter.js +64 -85
- package/dist/MarkdownConverter.js.map +1 -1
- package/dist/Schemas.d.ts +128 -141
- package/dist/Schemas.d.ts.map +1 -1
- package/dist/Schemas.js +21 -23
- package/dist/Schemas.js.map +1 -1
- package/dist/SyncEngine.d.ts +8 -5
- package/dist/SyncEngine.d.ts.map +1 -1
- package/dist/SyncEngine.js +189 -113
- package/dist/SyncEngine.js.map +1 -1
- package/dist/bin.js +23 -35
- package/dist/bin.js.map +1 -1
- package/dist/commands/auth.d.ts +2 -14
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +11 -16
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/clone.d.ts +4 -6
- package/dist/commands/clone.d.ts.map +1 -1
- package/dist/commands/clone.js +34 -32
- package/dist/commands/clone.js.map +1 -1
- package/dist/commands/delete.d.ts +2 -10
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +5 -4
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/errorHandler.d.ts +2 -1
- package/dist/commands/errorHandler.d.ts.map +1 -1
- package/dist/commands/errorHandler.js +22 -15
- package/dist/commands/errorHandler.js.map +1 -1
- package/dist/commands/fetch.d.ts +27 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +48 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/git.d.ts +7 -10
- package/dist/commands/git.d.ts.map +1 -1
- package/dist/commands/git.js +6 -6
- package/dist/commands/git.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/layers.d.ts +10 -9
- package/dist/commands/layers.d.ts.map +1 -1
- package/dist/commands/layers.js +41 -30
- package/dist/commands/layers.js.map +1 -1
- package/dist/commands/new.d.ts +2 -6
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +5 -4
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/pageInput.d.ts +19 -0
- package/dist/commands/pageInput.d.ts.map +1 -0
- package/dist/commands/pageInput.js +68 -0
- package/dist/commands/pageInput.js.map +1 -0
- package/dist/commands/root.d.ts +8 -0
- package/dist/commands/root.d.ts.map +1 -0
- package/dist/commands/root.js +29 -0
- package/dist/commands/root.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -9
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +5 -6
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -13
- package/dist/index.js.map +1 -1
- package/dist/internal/NodeLayers.d.ts.map +1 -1
- package/dist/internal/NodeLayers.js +1 -2
- package/dist/internal/NodeLayers.js.map +1 -1
- package/dist/internal/adfMetadata.d.ts +30 -0
- package/dist/internal/adfMetadata.d.ts.map +1 -0
- package/dist/internal/adfMetadata.js +126 -0
- package/dist/internal/adfMetadata.js.map +1 -0
- package/dist/internal/cleanMarkdown.d.ts +5 -0
- package/dist/internal/cleanMarkdown.d.ts.map +1 -0
- package/dist/internal/cleanMarkdown.js +13 -0
- package/dist/internal/cleanMarkdown.js.map +1 -0
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +41 -8
- package/dist/internal/frontmatter.js.map +1 -1
- package/dist/internal/gitCommands.d.ts +9 -3
- package/dist/internal/gitCommands.d.ts.map +1 -1
- package/dist/internal/gitCommands.js +18 -9
- package/dist/internal/gitCommands.js.map +1 -1
- package/dist/internal/hashUtils.d.ts +1 -1
- package/dist/internal/hashUtils.d.ts.map +1 -1
- package/dist/internal/hashUtils.js +1 -1
- package/dist/internal/hashUtils.js.map +1 -1
- package/dist/internal/oauthServer.d.ts +10 -5
- package/dist/internal/oauthServer.d.ts.map +1 -1
- package/dist/internal/oauthServer.js +19 -40
- package/dist/internal/oauthServer.js.map +1 -1
- package/dist/internal/pathUtils.d.ts +1 -1
- package/dist/internal/pathUtils.d.ts.map +1 -1
- package/dist/internal/pathUtils.js +1 -1
- package/dist/internal/pathUtils.js.map +1 -1
- package/dist/internal/process.d.ts +15 -0
- package/dist/internal/process.d.ts.map +1 -0
- package/dist/internal/process.js +10 -0
- package/dist/internal/process.js.map +1 -0
- package/dist/internal/stdio.d.ts +6 -0
- package/dist/internal/stdio.d.ts.map +1 -0
- package/dist/internal/stdio.js +15 -0
- package/dist/internal/stdio.js.map +1 -0
- package/dist/internal/tokenStorage.d.ts +3 -13
- package/dist/internal/tokenStorage.d.ts.map +1 -1
- package/dist/internal/tokenStorage.js +26 -24
- package/dist/internal/tokenStorage.js.map +1 -1
- package/dist/internal/userCache.d.ts +1 -1
- package/dist/internal/userCache.d.ts.map +1 -1
- package/dist/internal/userCache.js +1 -1
- package/dist/internal/userCache.js.map +1 -1
- package/package.json +30 -30
- package/skills/confluence/SKILL.md +143 -0
- package/skills/confluence/agents/openai.yaml +4 -0
- package/src/AdfPlaceholders.ts +310 -13
- package/src/AdfSchemaValidator.ts +2 -4
- package/src/AdfWalker.ts +122 -42
- package/src/AtlaskitTransformers.ts +2 -4
- package/src/Brand.ts +11 -16
- package/src/ConfluenceAuth.ts +22 -30
- package/src/ConfluenceClient.ts +24 -20
- package/src/ConfluenceConfig.ts +14 -14
- package/src/GitService.ts +39 -49
- package/src/LocalFileSystem.ts +7 -9
- package/src/MarkdownConverter.ts +2 -4
- package/src/Schemas.ts +13 -12
- package/src/SyncEngine.ts +151 -53
- package/src/bin.ts +30 -56
- package/src/commands/auth.ts +21 -18
- package/src/commands/clone.ts +38 -37
- package/src/commands/delete.ts +5 -4
- package/src/commands/errorHandler.ts +25 -18
- package/src/commands/fetch.ts +90 -0
- package/src/commands/git.ts +6 -6
- package/src/commands/index.ts +1 -0
- package/src/commands/layers.ts +53 -33
- package/src/commands/new.ts +5 -4
- package/src/commands/pageInput.ts +103 -0
- package/src/commands/root.ts +59 -0
- package/src/commands/sync.ts +7 -6
- package/src/internal/NodeLayers.ts +1 -2
- package/src/internal/adfMetadata.ts +145 -0
- package/src/internal/cleanMarkdown.ts +15 -0
- package/src/internal/frontmatter.ts +45 -8
- package/src/internal/gitCommands.ts +23 -17
- package/src/internal/hashUtils.ts +2 -2
- package/src/internal/oauthServer.ts +84 -105
- package/src/internal/pathUtils.ts +1 -1
- package/src/internal/process.ts +15 -0
- package/src/internal/stdio.ts +22 -0
- package/src/internal/tokenStorage.ts +39 -29
- package/src/internal/userCache.ts +2 -2
- package/test/AdfPlaceholders.test.ts +213 -0
- package/test/AdfSchemaValidator.test.ts +6 -6
- package/test/AdfWalker.test.ts +167 -21
- package/test/AtlaskitTransformers.test.ts +4 -4
- package/test/Brand.test.ts +11 -11
- package/test/GitService.test.ts +6 -2
- package/test/MarkdownConverter.test.ts +12 -11
- package/test/RoundTrip.test.ts +258 -3
- package/test/Schemas.test.ts +40 -40
- package/test/adfMetadata.test.ts +110 -0
- package/test/cleanMarkdown.test.ts +36 -0
- package/test/commandHarness.test.ts +79 -0
- package/test/commandHarness.ts +147 -0
- package/test/fetch.test.ts +61 -0
- package/test/frontmatter.test.ts +41 -0
- package/test/integration.test.ts +569 -156
- package/test/layers.test.ts +12 -0
- package/test/oauthServer.test.ts +4 -5
- package/test/pageInput.test.ts +83 -0
- package/test/tokenStorage.test.ts +17 -17
- package/dist/SchemaConverterError.d.ts +0 -108
- package/dist/SchemaConverterError.d.ts.map +0 -1
- package/dist/SchemaConverterError.js +0 -84
- package/dist/SchemaConverterError.js.map +0 -1
- package/dist/ast/BlockNode.d.ts +0 -468
- package/dist/ast/BlockNode.d.ts.map +0 -1
- package/dist/ast/BlockNode.js +0 -319
- package/dist/ast/BlockNode.js.map +0 -1
- package/dist/ast/Document.d.ts +0 -244
- package/dist/ast/Document.d.ts.map +0 -1
- package/dist/ast/Document.js +0 -69
- package/dist/ast/Document.js.map +0 -1
- package/dist/ast/InlineNode.d.ts +0 -477
- package/dist/ast/InlineNode.d.ts.map +0 -1
- package/dist/ast/InlineNode.js +0 -263
- package/dist/ast/InlineNode.js.map +0 -1
- package/dist/ast/MacroNode.d.ts +0 -267
- package/dist/ast/MacroNode.d.ts.map +0 -1
- package/dist/ast/MacroNode.js +0 -164
- package/dist/ast/MacroNode.js.map +0 -1
- package/dist/ast/index.d.ts +0 -10
- package/dist/ast/index.d.ts.map +0 -1
- package/dist/ast/index.js +0 -14
- package/dist/ast/index.js.map +0 -1
- package/dist/parsers/ConfluenceParser.d.ts +0 -26
- package/dist/parsers/ConfluenceParser.d.ts.map +0 -1
- package/dist/parsers/ConfluenceParser.js +0 -792
- package/dist/parsers/ConfluenceParser.js.map +0 -1
- package/dist/parsers/MarkdownParser.d.ts +0 -26
- package/dist/parsers/MarkdownParser.d.ts.map +0 -1
- package/dist/parsers/MarkdownParser.js +0 -873
- package/dist/parsers/MarkdownParser.js.map +0 -1
- package/dist/parsers/index.d.ts +0 -8
- package/dist/parsers/index.d.ts.map +0 -1
- package/dist/parsers/index.js +0 -8
- package/dist/parsers/index.js.map +0 -1
- package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts +0 -23
- package/dist/parsers/preprocessing/ConfluencePreprocessing.d.ts.map +0 -1
- package/dist/parsers/preprocessing/ConfluencePreprocessing.js +0 -323
- package/dist/parsers/preprocessing/ConfluencePreprocessing.js.map +0 -1
- package/dist/parsers/preprocessing/index.d.ts +0 -7
- package/dist/parsers/preprocessing/index.d.ts.map +0 -1
- package/dist/parsers/preprocessing/index.js +0 -7
- package/dist/parsers/preprocessing/index.js.map +0 -1
- package/dist/schemas/ConfluenceSchema.d.ts +0 -21
- package/dist/schemas/ConfluenceSchema.d.ts.map +0 -1
- package/dist/schemas/ConfluenceSchema.js +0 -38
- package/dist/schemas/ConfluenceSchema.js.map +0 -1
- package/dist/schemas/ConversionSchema.d.ts +0 -35
- package/dist/schemas/ConversionSchema.d.ts.map +0 -1
- package/dist/schemas/ConversionSchema.js +0 -208
- package/dist/schemas/ConversionSchema.js.map +0 -1
- package/dist/schemas/MarkdownSchema.d.ts +0 -21
- package/dist/schemas/MarkdownSchema.d.ts.map +0 -1
- package/dist/schemas/MarkdownSchema.js +0 -38
- package/dist/schemas/MarkdownSchema.js.map +0 -1
- package/dist/schemas/hast/HastFromHtml.d.ts +0 -27
- package/dist/schemas/hast/HastFromHtml.d.ts.map +0 -1
- package/dist/schemas/hast/HastFromHtml.js +0 -107
- package/dist/schemas/hast/HastFromHtml.js.map +0 -1
- package/dist/schemas/hast/HastSchema.d.ts +0 -195
- package/dist/schemas/hast/HastSchema.d.ts.map +0 -1
- package/dist/schemas/hast/HastSchema.js +0 -183
- package/dist/schemas/hast/HastSchema.js.map +0 -1
- package/dist/schemas/hast/index.d.ts +0 -9
- package/dist/schemas/hast/index.d.ts.map +0 -1
- package/dist/schemas/hast/index.js +0 -3
- package/dist/schemas/hast/index.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -14
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -16
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts +0 -30
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +0 -1
- package/dist/schemas/mdast/MdastFromMarkdown.js +0 -79
- package/dist/schemas/mdast/MdastFromMarkdown.js.map +0 -1
- package/dist/schemas/mdast/MdastSchema.d.ts +0 -385
- package/dist/schemas/mdast/MdastSchema.d.ts.map +0 -1
- package/dist/schemas/mdast/MdastSchema.js +0 -266
- package/dist/schemas/mdast/MdastSchema.js.map +0 -1
- package/dist/schemas/mdast/index.d.ts +0 -10
- package/dist/schemas/mdast/index.d.ts.map +0 -1
- package/dist/schemas/mdast/index.js +0 -4
- package/dist/schemas/mdast/index.js.map +0 -1
- package/dist/schemas/mdast/mdastToString.d.ts +0 -13
- package/dist/schemas/mdast/mdastToString.d.ts.map +0 -1
- package/dist/schemas/mdast/mdastToString.js +0 -85
- package/dist/schemas/mdast/mdastToString.js.map +0 -1
- package/dist/schemas/nodes/block/BlockSchema.d.ts +0 -43
- package/dist/schemas/nodes/block/BlockSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/block/BlockSchema.js +0 -634
- package/dist/schemas/nodes/block/BlockSchema.js.map +0 -1
- package/dist/schemas/nodes/block/index.d.ts +0 -7
- package/dist/schemas/nodes/block/index.d.ts.map +0 -1
- package/dist/schemas/nodes/block/index.js +0 -7
- package/dist/schemas/nodes/block/index.js.map +0 -1
- package/dist/schemas/nodes/index.d.ts +0 -9
- package/dist/schemas/nodes/index.d.ts.map +0 -1
- package/dist/schemas/nodes/index.js +0 -12
- package/dist/schemas/nodes/index.js.map +0 -1
- package/dist/schemas/nodes/inline/InlineSchema.d.ts +0 -48
- package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/inline/InlineSchema.js +0 -436
- package/dist/schemas/nodes/inline/InlineSchema.js.map +0 -1
- package/dist/schemas/nodes/inline/index.d.ts +0 -7
- package/dist/schemas/nodes/inline/index.d.ts.map +0 -1
- package/dist/schemas/nodes/inline/index.js +0 -7
- package/dist/schemas/nodes/inline/index.js.map +0 -1
- package/dist/schemas/nodes/macro/MacroSchema.d.ts +0 -27
- package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +0 -1
- package/dist/schemas/nodes/macro/MacroSchema.js +0 -162
- package/dist/schemas/nodes/macro/MacroSchema.js.map +0 -1
- package/dist/schemas/nodes/macro/index.d.ts +0 -7
- package/dist/schemas/nodes/macro/index.d.ts.map +0 -1
- package/dist/schemas/nodes/macro/index.js +0 -7
- package/dist/schemas/nodes/macro/index.js.map +0 -1
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +0 -53
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +0 -1
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js +0 -349
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +0 -1
- package/dist/schemas/preprocessing/index.d.ts +0 -8
- package/dist/schemas/preprocessing/index.d.ts.map +0 -1
- package/dist/schemas/preprocessing/index.js +0 -2
- package/dist/schemas/preprocessing/index.js.map +0 -1
- package/dist/serializers/ConfluenceSerializer.d.ts +0 -30
- package/dist/serializers/ConfluenceSerializer.d.ts.map +0 -1
- package/dist/serializers/ConfluenceSerializer.js +0 -551
- package/dist/serializers/ConfluenceSerializer.js.map +0 -1
- package/dist/serializers/MarkdownSerializer.d.ts +0 -34
- package/dist/serializers/MarkdownSerializer.d.ts.map +0 -1
- package/dist/serializers/MarkdownSerializer.js +0 -355
- package/dist/serializers/MarkdownSerializer.js.map +0 -1
- package/dist/serializers/index.d.ts +0 -8
- package/dist/serializers/index.d.ts.map +0 -1
- package/dist/serializers/index.js +0 -8
- package/dist/serializers/index.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owned ADF → Markdown tree walker.
|
|
3
|
+
*
|
|
4
|
+
* Pure recursive descent over an ADF document's `node.type` discriminant.
|
|
5
|
+
* Returns GFM markdown plus a list of warnings for lossy or unknown nodes.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { DocNode } from "@atlaskit/adf-schema";
|
|
10
|
+
/**
|
|
11
|
+
* Warning emitted by the walker. Surfaced via `Effect.logWarning` at the
|
|
12
|
+
* facade boundary; never escalated to errors so a single weird node cannot
|
|
13
|
+
* break a clone of many pages.
|
|
14
|
+
*/
|
|
15
|
+
export type WalkerWarning = {
|
|
16
|
+
readonly _tag: "UnsupportedNode";
|
|
17
|
+
readonly nodeType: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly _tag: "LossyMark";
|
|
20
|
+
readonly mark: string;
|
|
21
|
+
} | {
|
|
22
|
+
readonly _tag: "MediaWithoutUrl";
|
|
23
|
+
readonly mediaId: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly _tag: "UnsupportedExtension";
|
|
26
|
+
readonly nodeType: "extension" | "bodiedExtension" | "inlineExtension";
|
|
27
|
+
readonly extensionKey: string;
|
|
28
|
+
readonly extensionType: string;
|
|
29
|
+
};
|
|
30
|
+
export interface WalkResult {
|
|
31
|
+
readonly markdown: string;
|
|
32
|
+
readonly warnings: ReadonlyArray<WalkerWarning>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Walk an ADF document and emit GFM markdown. Always synchronous; warnings
|
|
36
|
+
* are collected, not thrown.
|
|
37
|
+
*/
|
|
38
|
+
export declare const walk: (doc: DocNode) => WalkResult;
|
|
39
|
+
//# sourceMappingURL=AdfWalker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdfWalker.d.ts","sourceRoot":"","sources":["../src/AdfWalker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D;IACA,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IACtE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B,CAAA;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAChD;AAsiBD;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,OAAO,KAAG,UAOnC,CAAA"}
|
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
// Mid-line characters that change inline parsing in GFM. We deliberately omit
|
|
2
|
+
// `.` and `-` because they only carry meaning at line-start (numbered lists,
|
|
3
|
+
// setext rules) and escaping them mid-line produces noisy output like
|
|
4
|
+
// `v1\.0\.0` for ordinary version strings. Same reasoning drops `#`, `+`, `>`
|
|
5
|
+
// (line-start only), `(`/`)` (only meaningful right after `]`, which we
|
|
6
|
+
// escape), `!` (only meaningful right before `[`, ditto) and `{`/`}` (not
|
|
7
|
+
// special in GFM at all) — escaping those produced noise like `\(v2\)`.
|
|
8
|
+
const ESCAPE_RE = /[\\`*_[\]<|]/g;
|
|
9
|
+
const escapeText = (s) => s.replace(ESCAPE_RE, "\\$&");
|
|
10
|
+
const escapeAttr = (s) => s.replace(/[\\"]/g, "\\$&");
|
|
11
|
+
// For text inside HTML *blocks* (`<details>`/`<summary>`): CommonMark treats
|
|
12
|
+
// everything up to the closing blank line as raw HTML, so backslash escapes
|
|
13
|
+
// would render literally — entity-escape instead.
|
|
14
|
+
const escapeHtml = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
15
|
+
// `(`/`)`/space/`<`/`>`/`\` in a destination break `[text](url)` — wrap in
|
|
16
|
+
// angle brackets, percent-encoding the characters that would terminate or
|
|
17
|
+
// escape the wrapper itself.
|
|
18
|
+
const safeHref = (href) => /[() <>\\]/.test(href) ? `<${href.replace(/[<>\\]/g, (c) => encodeURIComponent(c))}>` : href;
|
|
19
|
+
// Alt text is substituted rather than escaped: @atlaskit's media markdown
|
|
20
|
+
// plugin throws on `\[`/`\]` in alt (making the page un-pushable), and
|
|
21
|
+
// newlines split the construct outright.
|
|
22
|
+
const sanitizeAlt = (s) => s.replace(/\[/g, "(").replace(/\]/g, ")").replace(/\\/g, "/").replace(/\s+/g, " ").trim();
|
|
23
|
+
// ESCAPE_RE deliberately skips characters that are only special at line
|
|
24
|
+
// start, so lines assembled from paragraph text (including after hardBreak)
|
|
25
|
+
// must neutralize leading block markers: ATX headings, blockquotes, list
|
|
26
|
+
// bullets, ordered-list markers, thematic breaks, and setext underlines.
|
|
27
|
+
// A superfluous escape is harmless when the line later lands mid-line
|
|
28
|
+
// (after a list marker etc.) — backslash before punctuation always renders
|
|
29
|
+
// as the bare character.
|
|
30
|
+
const escapeLineStart = (line) => {
|
|
31
|
+
if (/^(#{1,6}|[-+])(\s|$)/.test(line) || line.startsWith(">") || /^-{3,}\s*$/.test(line) || /^=+\s*$/.test(line)) {
|
|
32
|
+
return "\\" + line;
|
|
33
|
+
}
|
|
34
|
+
const ordered = /^(\d+)([.)])(\s|$)/.exec(line)?.[1];
|
|
35
|
+
if (ordered)
|
|
36
|
+
return `${ordered}\\${line.slice(ordered.length)}`;
|
|
37
|
+
return line;
|
|
38
|
+
};
|
|
39
|
+
const escapeLineStarts = (s) => s.split("\n").map(escapeLineStart).join("\n");
|
|
40
|
+
const attrStr = (n, key) => {
|
|
41
|
+
const v = n.attrs?.[key];
|
|
42
|
+
return typeof v === "string" ? v : undefined;
|
|
43
|
+
};
|
|
44
|
+
const attrNum = (n, key) => {
|
|
45
|
+
const v = n.attrs?.[key];
|
|
46
|
+
return typeof v === "number" ? v : undefined;
|
|
47
|
+
};
|
|
48
|
+
const attrRecord = (n, key) => {
|
|
49
|
+
const v = n.attrs?.[key];
|
|
50
|
+
return v !== null && typeof v === "object" && !Array.isArray(v) ? v : undefined;
|
|
51
|
+
};
|
|
52
|
+
const CONFLUENCE_CORE_MACRO_TYPE = "com.atlassian.confluence.macro.core";
|
|
53
|
+
// Deterministic JSON for placeholder metadata: object keys are sorted
|
|
54
|
+
// recursively so the same attrs always produce the same marker/sidecar data,
|
|
55
|
+
// no matter what order Confluence happens to serialize them in. Keeps pull →
|
|
56
|
+
// push → pull a byte-level fixed point (and contentHash stable).
|
|
57
|
+
const stableStringify = (v) => {
|
|
58
|
+
if (Array.isArray(v))
|
|
59
|
+
return `[${v.map(stableStringify).join(",")}]`;
|
|
60
|
+
if (v !== null && typeof v === "object") {
|
|
61
|
+
const entries = Object.entries(v)
|
|
62
|
+
.filter(([, value]) => value !== undefined)
|
|
63
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
64
|
+
.map(([k, value]) => `${JSON.stringify(k)}:${stableStringify(value)}`);
|
|
65
|
+
return `{${entries.join(",")}}`;
|
|
66
|
+
}
|
|
67
|
+
return JSON.stringify(v) ?? "null";
|
|
68
|
+
};
|
|
69
|
+
const inline = (nodes, ctx) => {
|
|
70
|
+
if (!nodes)
|
|
71
|
+
return "";
|
|
72
|
+
let out = "";
|
|
73
|
+
for (const n of nodes)
|
|
74
|
+
out += inlineNode(n, ctx);
|
|
75
|
+
return out;
|
|
76
|
+
};
|
|
77
|
+
const inlineNode = (n, ctx) => {
|
|
78
|
+
switch (n.type) {
|
|
79
|
+
case "text": {
|
|
80
|
+
const marks = n.marks ?? [];
|
|
81
|
+
const text = n.text ?? "";
|
|
82
|
+
// Code spans render their content literally — backslash-escaping inside
|
|
83
|
+
// backticks would emit literal backslashes, which the push side then
|
|
84
|
+
// preserves verbatim, doubling them on every pull/push round-trip.
|
|
85
|
+
const hasCode = marks.some((m) => m.type === "code");
|
|
86
|
+
return applyMarks(hasCode ? text : escapeText(text), marks, ctx);
|
|
87
|
+
}
|
|
88
|
+
case "hardBreak":
|
|
89
|
+
return ctx.inTable ? "<br>" : " \n";
|
|
90
|
+
case "mention": {
|
|
91
|
+
// Confluence stores the mention's `text` attr with the leading `@`
|
|
92
|
+
// already (e.g. "@John Doe"). Strip it so we don't emit `@@John Doe`.
|
|
93
|
+
const id = attrStr(n, "id");
|
|
94
|
+
const raw = attrStr(n, "text") ?? id ?? "";
|
|
95
|
+
const stripped = raw.startsWith("@") ? raw.slice(1) : raw;
|
|
96
|
+
const display = `@${escapeText(stripped)}`;
|
|
97
|
+
// Encode the accountId in a custom-scheme link so the push side can
|
|
98
|
+
// reconstruct a real mention node. Without `id` we can only emit plain
|
|
99
|
+
// text; on push, that becomes plain text in Confluence (lossy).
|
|
100
|
+
return id ? `[${display}](confluence-mention://${encodeURIComponent(id)})` : display;
|
|
101
|
+
}
|
|
102
|
+
case "emoji": {
|
|
103
|
+
return `<!-- adf:${n.type} node=${stableStringify(n)} -->`;
|
|
104
|
+
}
|
|
105
|
+
case "inlineCard": {
|
|
106
|
+
const url = cardUrl(n);
|
|
107
|
+
if (!url) {
|
|
108
|
+
// data-payload smart links have no URL to render — losing one must
|
|
109
|
+
// at least be visible in the logs.
|
|
110
|
+
ctx.warnings.push({ _tag: "UnsupportedNode", nodeType: "inlineCard" });
|
|
111
|
+
return "";
|
|
112
|
+
}
|
|
113
|
+
const attrs = n.attrs ?? { url };
|
|
114
|
+
return `<!-- adf:inlineCard attrs=${stableStringify(attrs)} -->`;
|
|
115
|
+
}
|
|
116
|
+
case "date": {
|
|
117
|
+
return `<!-- adf:${n.type} node=${stableStringify(n)} -->`;
|
|
118
|
+
}
|
|
119
|
+
case "status": {
|
|
120
|
+
const text = attrStr(n, "text") ?? "";
|
|
121
|
+
const color = attrStr(n, "color") ?? "neutral";
|
|
122
|
+
return `<span class="adf-status" data-color="${color}">${escapeText(text)}</span>`;
|
|
123
|
+
}
|
|
124
|
+
case "mediaInline": {
|
|
125
|
+
const id = attrStr(n, "id") ?? "";
|
|
126
|
+
ctx.warnings.push({ _tag: "MediaWithoutUrl", mediaId: id });
|
|
127
|
+
return `<!-- adf:media id=${id} -->`;
|
|
128
|
+
}
|
|
129
|
+
case "inlineExtension":
|
|
130
|
+
return extensionPlaceholder(n, "inlineExtension", ctx);
|
|
131
|
+
default:
|
|
132
|
+
ctx.warnings.push({ _tag: "UnsupportedNode", nodeType: n.type });
|
|
133
|
+
return `<!-- unsupported ADF inline: ${n.type} -->`;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const extensionPlaceholder = (n, nodeType, ctx) => {
|
|
137
|
+
const extensionKey = attrStr(n, "extensionKey") ?? "";
|
|
138
|
+
const extensionType = attrStr(n, "extensionType") ?? "";
|
|
139
|
+
ctx.warnings.push({ _tag: "UnsupportedExtension", nodeType, extensionKey, extensionType });
|
|
140
|
+
const keyPart = extensionKey ? ` key=${extensionKey}` : "";
|
|
141
|
+
const typePart = extensionType ? ` type=${extensionType}` : "";
|
|
142
|
+
// key/type are repeated for human readability; `attrs` is the source of
|
|
143
|
+
// truth on push — it carries the *full* attrs (parameters, localId, layout)
|
|
144
|
+
// so macros survive a pull → push round-trip with their configuration.
|
|
145
|
+
const attrs = n.attrs ?? {};
|
|
146
|
+
const attrsPart = Object.keys(attrs).length > 0
|
|
147
|
+
? ` attrs=${stableStringify(attrs)}`
|
|
148
|
+
: "";
|
|
149
|
+
return `<!-- adf:${nodeType}${keyPart}${typePart}${attrsPart} -->`;
|
|
150
|
+
};
|
|
151
|
+
const objectKeys = (v) => Object.keys(v ?? {});
|
|
152
|
+
const isOnlyKeys = (v, keys) => {
|
|
153
|
+
const allowed = new Set(keys);
|
|
154
|
+
return objectKeys(v).every((key) => allowed.has(key));
|
|
155
|
+
};
|
|
156
|
+
const tocLevel = (macroParams, key) => {
|
|
157
|
+
const param = macroParams?.[key];
|
|
158
|
+
if (param === undefined)
|
|
159
|
+
return null;
|
|
160
|
+
if (param === null || typeof param !== "object" || Array.isArray(param))
|
|
161
|
+
return null;
|
|
162
|
+
const record = param;
|
|
163
|
+
if (!isOnlyKeys(record, ["value"]))
|
|
164
|
+
return null;
|
|
165
|
+
const value = record["value"];
|
|
166
|
+
return typeof value === "string" && /^[1-6]$/.test(value) ? value : null;
|
|
167
|
+
};
|
|
168
|
+
const tocMarkdown = (n) => {
|
|
169
|
+
const attrs = n.attrs;
|
|
170
|
+
if (!attrs)
|
|
171
|
+
return null;
|
|
172
|
+
if (attrStr(n, "extensionKey") !== "toc" || attrStr(n, "extensionType") !== CONFLUENCE_CORE_MACRO_TYPE)
|
|
173
|
+
return null;
|
|
174
|
+
if (!isOnlyKeys(attrs, ["extensionKey", "extensionType", "parameters"]))
|
|
175
|
+
return null;
|
|
176
|
+
const parameters = attrRecord(n, "parameters");
|
|
177
|
+
if (!parameters)
|
|
178
|
+
return "[[toc]]";
|
|
179
|
+
if (!isOnlyKeys(parameters, ["macroParams"]))
|
|
180
|
+
return null;
|
|
181
|
+
const macroParams = parameters["macroParams"];
|
|
182
|
+
if (macroParams === null || typeof macroParams !== "object" || Array.isArray(macroParams))
|
|
183
|
+
return null;
|
|
184
|
+
const macroParamRecord = macroParams;
|
|
185
|
+
if (!isOnlyKeys(macroParamRecord, ["minLevel", "maxLevel"]))
|
|
186
|
+
return null;
|
|
187
|
+
const minLevel = tocLevel(macroParamRecord, "minLevel");
|
|
188
|
+
const maxLevel = tocLevel(macroParamRecord, "maxLevel");
|
|
189
|
+
if (macroParamRecord["minLevel"] !== undefined && minLevel === null)
|
|
190
|
+
return null;
|
|
191
|
+
if (macroParamRecord["maxLevel"] !== undefined && maxLevel === null)
|
|
192
|
+
return null;
|
|
193
|
+
const parts = [
|
|
194
|
+
minLevel ? `min=${minLevel}` : "",
|
|
195
|
+
maxLevel ? `max=${maxLevel}` : ""
|
|
196
|
+
].filter((part) => part.length > 0);
|
|
197
|
+
return parts.length > 0 ? `[[toc:${parts.join(",")}]]` : "[[toc]]";
|
|
198
|
+
};
|
|
199
|
+
const bodiedExtension = (n, ctx) => {
|
|
200
|
+
const open = extensionPlaceholder(n, "bodiedExtension", ctx);
|
|
201
|
+
// Table cells flatten newlines to <br>, which would weld the markers and
|
|
202
|
+
// body into one un-revertible line — emit only the single-line marker
|
|
203
|
+
// there (body dropped; the placeholder warning above covers it).
|
|
204
|
+
if (ctx.inTable)
|
|
205
|
+
return open;
|
|
206
|
+
// Render the body so it stays visible/editable; the end marker lets the
|
|
207
|
+
// push side re-attach everything in between as the bodiedExtension's body.
|
|
208
|
+
// It is emitted even for an empty body so the push side can tell "bodied
|
|
209
|
+
// macro with nothing in it" apart from a legacy/corrupted open marker.
|
|
210
|
+
const body = (n.content ?? []).map((c) => block(c, ctx)).join("\n\n");
|
|
211
|
+
const parts = body.length > 0 ? [open, body] : [open];
|
|
212
|
+
return [...parts, "<!-- adf:/bodiedExtension -->"].join("\n\n");
|
|
213
|
+
};
|
|
214
|
+
const applyMarks = (text, marks, ctx) => {
|
|
215
|
+
let out = text;
|
|
216
|
+
for (const m of marks) {
|
|
217
|
+
switch (m.type) {
|
|
218
|
+
case "code": {
|
|
219
|
+
// Code-span content is unescaped, so per GFM the delimiter must be a
|
|
220
|
+
// backtick run longer than any run inside, space-padded when the
|
|
221
|
+
// content starts/ends with a backtick (or is empty).
|
|
222
|
+
const runs = out.match(/`+/g) ?? [];
|
|
223
|
+
const fence = "`".repeat(runs.reduce((max, r) => Math.max(max, r.length), 0) + 1);
|
|
224
|
+
const pad = out === "" || out.startsWith("`") || out.endsWith("`") ? " " : "";
|
|
225
|
+
out = `${fence}${pad}${out}${pad}${fence}`;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case "strong":
|
|
229
|
+
out = `**${out}**`;
|
|
230
|
+
break;
|
|
231
|
+
case "em":
|
|
232
|
+
out = `_${out}_`;
|
|
233
|
+
break;
|
|
234
|
+
case "strike":
|
|
235
|
+
out = `~~${out}~~`;
|
|
236
|
+
break;
|
|
237
|
+
case "link": {
|
|
238
|
+
const href = attrStr(m, "href") ?? "";
|
|
239
|
+
const title = attrStr(m, "title");
|
|
240
|
+
const titlePart = title ? ` "${escapeAttr(title)}"` : "";
|
|
241
|
+
out = `[${out}](${safeHref(href)}${titlePart})`;
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
case "underline":
|
|
245
|
+
ctx.warnings.push({ _tag: "LossyMark", mark: "underline" });
|
|
246
|
+
out = `<u>${out}</u>`;
|
|
247
|
+
break;
|
|
248
|
+
case "textColor": {
|
|
249
|
+
const color = attrStr(m, "color") ?? "";
|
|
250
|
+
ctx.warnings.push({ _tag: "LossyMark", mark: "textColor" });
|
|
251
|
+
out = `<span style="color:${color}">${out}</span>`;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case "backgroundColor": {
|
|
255
|
+
const color = attrStr(m, "color") ?? "";
|
|
256
|
+
ctx.warnings.push({ _tag: "LossyMark", mark: "backgroundColor" });
|
|
257
|
+
out = `<span style="background-color:${color}">${out}</span>`;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
case "subsup": {
|
|
261
|
+
const t = attrStr(m, "type") === "sup" ? "sup" : "sub";
|
|
262
|
+
out = `<${t}>${out}</${t}>`;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
default:
|
|
266
|
+
ctx.warnings.push({ _tag: "LossyMark", mark: m.type });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return out;
|
|
270
|
+
};
|
|
271
|
+
const indentLines = (s, indent) => s.split("\n").map((line, i) => (i === 0 ? line : indent + line)).join("\n");
|
|
272
|
+
const block = (n, ctx) => {
|
|
273
|
+
switch (n.type) {
|
|
274
|
+
case "paragraph":
|
|
275
|
+
return paragraph(n, ctx);
|
|
276
|
+
case "heading": {
|
|
277
|
+
const level = Math.min(6, Math.max(1, attrNum(n, "level") ?? 1));
|
|
278
|
+
return "#".repeat(level) + " " + inline(n.content, ctx);
|
|
279
|
+
}
|
|
280
|
+
case "rule":
|
|
281
|
+
return "---";
|
|
282
|
+
case "blockquote":
|
|
283
|
+
return blockquote(n.content, ctx);
|
|
284
|
+
case "codeBlock":
|
|
285
|
+
return codeBlock(n);
|
|
286
|
+
case "bulletList":
|
|
287
|
+
return list(n, ctx, false);
|
|
288
|
+
case "orderedList":
|
|
289
|
+
return list(n, ctx, true);
|
|
290
|
+
case "table":
|
|
291
|
+
return table(n, ctx);
|
|
292
|
+
case "panel":
|
|
293
|
+
return panel(n, ctx);
|
|
294
|
+
case "expand":
|
|
295
|
+
case "nestedExpand":
|
|
296
|
+
return expand(n, ctx);
|
|
297
|
+
case "taskList":
|
|
298
|
+
return taskList(n, ctx);
|
|
299
|
+
case "decisionList":
|
|
300
|
+
return decisionList(n, ctx);
|
|
301
|
+
case "layoutSection":
|
|
302
|
+
return layoutSection(n, ctx);
|
|
303
|
+
case "layoutColumn":
|
|
304
|
+
return layoutColumn(n, ctx);
|
|
305
|
+
case "mediaSingle":
|
|
306
|
+
return mediaSingle(n, ctx);
|
|
307
|
+
case "mediaGroup":
|
|
308
|
+
return mediaGroup(n, ctx);
|
|
309
|
+
case "blockCard":
|
|
310
|
+
case "embedCard":
|
|
311
|
+
return blockCard(n, ctx);
|
|
312
|
+
case "extension":
|
|
313
|
+
return tocMarkdown(n) ?? extensionPlaceholder(n, "extension", ctx);
|
|
314
|
+
case "bodiedExtension":
|
|
315
|
+
return bodiedExtension(n, ctx);
|
|
316
|
+
default:
|
|
317
|
+
ctx.warnings.push({ _tag: "UnsupportedNode", nodeType: n.type });
|
|
318
|
+
return `<!-- unsupported ADF node: ${n.type} -->`;
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
const paragraph = (n, ctx) => {
|
|
322
|
+
const body = escapeLineStarts(inline(n.content, ctx));
|
|
323
|
+
const marks = n.marks ?? [];
|
|
324
|
+
if (marks.length === 0 || ctx.inTable)
|
|
325
|
+
return body;
|
|
326
|
+
const marksPart = ` marks=${stableStringify(marks)}`;
|
|
327
|
+
return `<!-- adf:paragraph${marksPart} -->\n\n${body}\n\n<!-- adf:/paragraph -->`;
|
|
328
|
+
};
|
|
329
|
+
const blockquote = (content, ctx) => {
|
|
330
|
+
const inner = (content ?? []).map((c) => block(c, ctx)).join("\n\n");
|
|
331
|
+
return inner.split("\n").map((l) => (l.length === 0 ? ">" : `> ${l}`)).join("\n");
|
|
332
|
+
};
|
|
333
|
+
const codeBlock = (n) => {
|
|
334
|
+
// A fence's info string may not contain backticks (CommonMark) and a
|
|
335
|
+
// newline would inject lines into the code content — the editor UI uses a
|
|
336
|
+
// fixed language list, but the REST API accepts arbitrary strings.
|
|
337
|
+
const lang = (attrStr(n, "language") ?? "").replace(/[`\s]+/g, "");
|
|
338
|
+
const text = (n.content ?? []).map((c) => c.text ?? "").join("");
|
|
339
|
+
// A fixed ``` fence would be terminated early by code that itself contains
|
|
340
|
+
// a triple-backtick run — use one backtick more than the longest run inside.
|
|
341
|
+
const runs = text.match(/`+/g) ?? [];
|
|
342
|
+
const fence = "`".repeat(Math.max(3, runs.reduce((max, r) => Math.max(max, r.length), 0) + 1));
|
|
343
|
+
return fence + lang + "\n" + text + "\n" + fence;
|
|
344
|
+
};
|
|
345
|
+
const listItemBlocks = (item, ctx) => {
|
|
346
|
+
const blocks = item.content ?? [];
|
|
347
|
+
const parts = [];
|
|
348
|
+
for (const b of blocks) {
|
|
349
|
+
if (b.type === "paragraph") {
|
|
350
|
+
// Continuation lines (after hardBreak) sit at line start once the
|
|
351
|
+
// item is indented, so they need the same leading-marker escapes as
|
|
352
|
+
// top-level paragraphs.
|
|
353
|
+
parts.push(escapeLineStarts(inline(b.content, ctx)));
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
parts.push(block(b, ctx));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return parts.join("\n\n");
|
|
360
|
+
};
|
|
361
|
+
const list = (n, ctx, ordered) => {
|
|
362
|
+
const items = n.content ?? [];
|
|
363
|
+
const startNum = ordered ? Math.max(1, attrNum(n, "order") ?? 1) : 1;
|
|
364
|
+
const indent = " ";
|
|
365
|
+
const inner = [];
|
|
366
|
+
for (let i = 0; i < items.length; i++) {
|
|
367
|
+
const item = items[i];
|
|
368
|
+
if (!item)
|
|
369
|
+
continue;
|
|
370
|
+
const marker = ordered ? `${startNum + i}. ` : "- ";
|
|
371
|
+
const body = listItemBlocks(item, ctx);
|
|
372
|
+
inner.push(marker + indentLines(body, indent));
|
|
373
|
+
}
|
|
374
|
+
return inner.join("\n");
|
|
375
|
+
};
|
|
376
|
+
const tableCellInline = (cell, ctx) => {
|
|
377
|
+
const cellCtx = { ...ctx, inTable: true };
|
|
378
|
+
const blocks = cell.content ?? [];
|
|
379
|
+
const parts = [];
|
|
380
|
+
for (const b of blocks) {
|
|
381
|
+
if (b.type === "paragraph")
|
|
382
|
+
parts.push(inline(b.content, cellCtx));
|
|
383
|
+
else
|
|
384
|
+
parts.push(block(b, cellCtx).replace(/\n/g, "<br>"));
|
|
385
|
+
}
|
|
386
|
+
// Escape `|` so it can't open a new column — but only pipes that aren't
|
|
387
|
+
// already escaped (inline() escapes them in plain text; code spans, URLs
|
|
388
|
+
// and <br>-flattened blocks don't). A pipe is escaped iff it's preceded by
|
|
389
|
+
// an odd run of backslashes, so count the run rather than peek one char.
|
|
390
|
+
return parts.join("<br>").replace(/(\\*)\|/g, (match, backslashes) => backslashes.length % 2 === 0 ? `${backslashes}\\|` : match);
|
|
391
|
+
};
|
|
392
|
+
const table = (n, ctx) => {
|
|
393
|
+
const rows = n.content ?? [];
|
|
394
|
+
if (rows.length === 0)
|
|
395
|
+
return "";
|
|
396
|
+
const renderRow = (row) => (row.content ?? []).map((cell) => tableCellInline(cell, ctx));
|
|
397
|
+
const allRows = rows.map(renderRow);
|
|
398
|
+
const colCount = Math.max(...allRows.map((r) => r.length));
|
|
399
|
+
const pad = (cells) => {
|
|
400
|
+
const out = cells.slice();
|
|
401
|
+
while (out.length < colCount)
|
|
402
|
+
out.push("");
|
|
403
|
+
return out;
|
|
404
|
+
};
|
|
405
|
+
const firstRow = rows[0];
|
|
406
|
+
const firstIsHeader = (firstRow?.content ?? []).every((c) => c.type === "tableHeader");
|
|
407
|
+
const header = firstIsHeader ? pad(allRows[0] ?? []) : Array(colCount).fill("");
|
|
408
|
+
const separator = Array(colCount).fill("---");
|
|
409
|
+
const bodyRows = (firstIsHeader ? allRows.slice(1) : allRows).map(pad);
|
|
410
|
+
const fmt = (cells) => `| ${cells.join(" | ")} |`;
|
|
411
|
+
return encodedBlockNode(n, [fmt(header), fmt(separator), ...bodyRows.map(fmt)].join("\n"), ctx);
|
|
412
|
+
};
|
|
413
|
+
const panel = (n, ctx) => {
|
|
414
|
+
const panelType = attrStr(n, "panelType") ?? "info";
|
|
415
|
+
const attrs = n.attrs ?? { panelType };
|
|
416
|
+
const attrsPart = Object.keys(attrs).length > 0 ? ` attrs=${stableStringify(attrs)}` : "";
|
|
417
|
+
const open = `<!-- adf:panel type=${panelType}${attrsPart} -->`;
|
|
418
|
+
if (ctx.inTable)
|
|
419
|
+
return open;
|
|
420
|
+
const inner = (n.content ?? []).map((c) => block(c, ctx)).join("\n\n");
|
|
421
|
+
const parts = inner.length > 0 ? [open, inner] : [open];
|
|
422
|
+
return [...parts, "<!-- adf:/panel -->"].join("\n\n");
|
|
423
|
+
};
|
|
424
|
+
const encodedBlockNode = (n, body, ctx) => {
|
|
425
|
+
if (ctx.inTable)
|
|
426
|
+
return body;
|
|
427
|
+
const open = `<!-- adf:${n.type} node=${stableStringify(n)} -->`;
|
|
428
|
+
const parts = body.length > 0 ? [open, body] : [open];
|
|
429
|
+
return [...parts, `<!-- adf:/${n.type} -->`].join("\n\n");
|
|
430
|
+
};
|
|
431
|
+
const expand = (n, ctx) => {
|
|
432
|
+
const title = attrStr(n, "title") ?? "";
|
|
433
|
+
// At block level <details> is a CommonMark type-6 HTML block, so the title
|
|
434
|
+
// needs entity escaping. Inside a table cell the flattened output becomes
|
|
435
|
+
// *inline* HTML where the text between tags is still markdown — there the
|
|
436
|
+
// backslash escapes are the correct (and only working) form.
|
|
437
|
+
const safeTitle = ctx.inTable ? escapeText(title) : escapeHtml(title);
|
|
438
|
+
const inner = (n.content ?? []).map((c) => block(c, ctx)).join("\n\n");
|
|
439
|
+
if (ctx.inTable)
|
|
440
|
+
return `<details><summary>${safeTitle}</summary>\n\n${inner}\n\n</details>`;
|
|
441
|
+
return encodedBlockNode(n, `${title}\n\n${inner}`, ctx);
|
|
442
|
+
};
|
|
443
|
+
const taskList = (n, ctx) => {
|
|
444
|
+
const items = n.content ?? [];
|
|
445
|
+
const lines = [];
|
|
446
|
+
for (const item of items) {
|
|
447
|
+
if (item.type !== "taskItem") {
|
|
448
|
+
lines.push(block(item, ctx));
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
451
|
+
const checked = attrStr(item, "state") === "DONE" ? "x" : " ";
|
|
452
|
+
const text = inline(item.content, ctx);
|
|
453
|
+
lines.push(`- [${checked}] ${text}`);
|
|
454
|
+
}
|
|
455
|
+
return encodedBlockNode(n, lines.join("\n"), ctx);
|
|
456
|
+
};
|
|
457
|
+
const decisionList = (n, ctx) => {
|
|
458
|
+
const items = n.content ?? [];
|
|
459
|
+
const lines = [];
|
|
460
|
+
for (const item of items) {
|
|
461
|
+
if (item.type !== "decisionItem") {
|
|
462
|
+
lines.push(block(item, ctx));
|
|
463
|
+
continue;
|
|
464
|
+
}
|
|
465
|
+
lines.push(`- 🔘 ${inline(item.content, ctx)}`);
|
|
466
|
+
}
|
|
467
|
+
return encodedBlockNode(n, lines.join("\n"), ctx);
|
|
468
|
+
};
|
|
469
|
+
const layoutSection = (n, ctx) => {
|
|
470
|
+
const body = (n.content ?? [])
|
|
471
|
+
.map((column) => block(column, ctx))
|
|
472
|
+
.filter((part) => part.trim().length > 0)
|
|
473
|
+
.join("\n\n");
|
|
474
|
+
return encodedBlockNode(n, body, ctx);
|
|
475
|
+
};
|
|
476
|
+
const layoutColumn = (n, ctx) => (n.content ?? []).map((child) => block(child, ctx)).join("\n\n");
|
|
477
|
+
const cardUrl = (n) => {
|
|
478
|
+
const url = attrStr(n, "url");
|
|
479
|
+
if (url)
|
|
480
|
+
return url;
|
|
481
|
+
const data = attrRecord(n, "data");
|
|
482
|
+
const dataUrl = data?.["url"];
|
|
483
|
+
return typeof dataUrl === "string" ? dataUrl : undefined;
|
|
484
|
+
};
|
|
485
|
+
const blockCard = (n, ctx) => {
|
|
486
|
+
const url = cardUrl(n);
|
|
487
|
+
if (!url) {
|
|
488
|
+
ctx.warnings.push({ _tag: "UnsupportedNode", nodeType: n.type });
|
|
489
|
+
return `<!-- unsupported ADF node: ${n.type} -->`;
|
|
490
|
+
}
|
|
491
|
+
return encodedBlockNode(n, `<${url}>`, ctx);
|
|
492
|
+
};
|
|
493
|
+
const renderMedia = (media, ctx) => {
|
|
494
|
+
const id = (media && attrStr(media, "id")) ?? "";
|
|
495
|
+
const alt = (media && attrStr(media, "alt")) ?? "";
|
|
496
|
+
const url = media && attrStr(media, "url");
|
|
497
|
+
if (url)
|
|
498
|
+
return `})`;
|
|
499
|
+
ctx.warnings.push({ _tag: "MediaWithoutUrl", mediaId: id });
|
|
500
|
+
return `<!-- adf:media id=${id} -->`;
|
|
501
|
+
};
|
|
502
|
+
const mediaSingle = (n, ctx) => {
|
|
503
|
+
const children = n.content ?? [];
|
|
504
|
+
const rendered = renderMedia(children.find((c) => c.type === "media"), ctx);
|
|
505
|
+
const caption = children.find((c) => c.type === "caption");
|
|
506
|
+
const captionText = caption ? inline(caption.content, ctx).trim() : "";
|
|
507
|
+
if (captionText.length === 0)
|
|
508
|
+
return rendered;
|
|
509
|
+
// An em-marked caption already renders as `_…_`; wrapping again would make
|
|
510
|
+
// `__…__` (strong). Leave captions that touch an underscore unwrapped.
|
|
511
|
+
const line = captionText.startsWith("_") || captionText.endsWith("_") ? captionText : `_${captionText}_`;
|
|
512
|
+
return `${rendered}\n${line}`;
|
|
513
|
+
};
|
|
514
|
+
const mediaGroup = (n, ctx) => (n.content ?? []).map((media) => renderMedia(media, ctx)).join("\n\n");
|
|
515
|
+
/**
|
|
516
|
+
* Walk an ADF document and emit GFM markdown. Always synchronous; warnings
|
|
517
|
+
* are collected, not thrown.
|
|
518
|
+
*/
|
|
519
|
+
export const walk = (doc) => {
|
|
520
|
+
const ctx = { inTable: false, warnings: [] };
|
|
521
|
+
const root = doc;
|
|
522
|
+
const blocks = (root.content ?? []).map((c) => block(c, ctx));
|
|
523
|
+
const body = blocks.join("\n\n");
|
|
524
|
+
const markdown = body.endsWith("\n") ? body : body + "\n";
|
|
525
|
+
return { markdown, warnings: ctx.warnings };
|
|
526
|
+
};
|
|
527
|
+
//# sourceMappingURL=AdfWalker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdfWalker.js","sourceRoot":"","sources":["../src/AdfWalker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type JSONDocNode, JSONTransformer } from "@atlaskit/editor-json-transformer";
|
|
2
|
+
import { MarkdownTransformer } from "@atlaskit/editor-markdown-transformer";
|
|
3
|
+
import * as Context from "effect/Context";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
import { AtlaskitTransformersError } from "./ConfluenceError.js";
|
|
7
|
+
/**
|
|
8
|
+
* Bag of the two transformer instances handed to the `use` callback.
|
|
9
|
+
*/
|
|
10
|
+
export interface Transformers {
|
|
11
|
+
readonly md: MarkdownTransformer;
|
|
12
|
+
readonly json: JSONTransformer;
|
|
13
|
+
}
|
|
14
|
+
declare const AtlaskitTransformers_base: Context.ServiceClass<AtlaskitTransformers, "@knpkv/confluence-to-markdown/AtlaskitTransformers", {
|
|
15
|
+
readonly use: <A>(fn: (t: Transformers) => A) => Effect.Effect<A, AtlaskitTransformersError>;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Effect service exposing the @atlaskit markdown + JSON transformers via a
|
|
19
|
+
* `use` callback. Errors thrown synchronously by the underlying libraries are
|
|
20
|
+
* surfaced as `AtlaskitTransformersError`.
|
|
21
|
+
*
|
|
22
|
+
* @category Service
|
|
23
|
+
*/
|
|
24
|
+
export declare class AtlaskitTransformers extends AtlaskitTransformers_base {
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Live Layer providing the wrapped @atlaskit transformers. The transformer
|
|
28
|
+
* instances are module-level singletons; the layer just hands out a
|
|
29
|
+
* `use`-callback service that catches synchronous throws.
|
|
30
|
+
*
|
|
31
|
+
* @category Layers
|
|
32
|
+
*/
|
|
33
|
+
export declare const layer: Layer.Layer<AtlaskitTransformers>;
|
|
34
|
+
export type { JSONDocNode };
|
|
35
|
+
//# sourceMappingURL=AtlaskitTransformers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AtlaskitTransformers.d.ts","sourceRoot":"","sources":["../src/AtlaskitTransformers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAC/B;;kBAgBiB,CAAC,CAAC,EACd,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,KACvB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,yBAAyB,CAAC;;AAZpD;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,yBAOe;CAAG;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CASnD,CAAA;AAED,YAAY,EAAE,WAAW,EAAE,CAAA"}
|