@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
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Direct conversion schema: Confluence HTML <-> Markdown.
|
|
3
|
-
*
|
|
4
|
-
* Composes preprocessing, parsing, and serialization into a single transform.
|
|
5
|
-
*
|
|
6
|
-
* @module
|
|
7
|
-
*/
|
|
8
|
-
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as ParseResult from "effect/ParseResult";
|
|
10
|
-
import * as Schema from "effect/Schema";
|
|
11
|
-
import { makeDocument } from "../ast/Document.js";
|
|
12
|
-
import { HastFromHtml, isHastElement } from "./hast/index.js";
|
|
13
|
-
import { MdastFromMarkdown, mdastToString } from "./mdast/index.js";
|
|
14
|
-
import { blockNodeFromHastElement, blockNodeFromMdast, blockNodeToMdast } from "./nodes/index.js";
|
|
15
|
-
import { macroNodeFromHastElement, macroNodeToMdast } from "./nodes/macro/index.js";
|
|
16
|
-
import { PreprocessedHtmlFromConfluence } from "./preprocessing/index.js";
|
|
17
|
-
/**
|
|
18
|
-
* Parse HAST children to simple block nodes.
|
|
19
|
-
* Note: Returns BlockNode which is broader than SimpleBlock used by macros,
|
|
20
|
-
* but at runtime only simple blocks are returned from single-level parsing.
|
|
21
|
-
*/
|
|
22
|
-
const parseBlockChildren = (children) => Effect.forEach(children.filter(isHastElement), (el) => blockNodeFromHastElement(el).pipe(Effect.map((node) => (node !== null ? [node] : [])))).pipe(Effect.map((arrays) => arrays.flat()));
|
|
23
|
-
/**
|
|
24
|
-
* Parse single HAST element to document node (block or macro).
|
|
25
|
-
*/
|
|
26
|
-
const documentNodeFromHastElement = (element) => Effect.gen(function* () {
|
|
27
|
-
// Try macro first
|
|
28
|
-
const macro = yield* macroNodeFromHastElement(element, parseBlockChildren);
|
|
29
|
-
if (macro !== null) {
|
|
30
|
-
return macro;
|
|
31
|
-
}
|
|
32
|
-
// Fall back to block
|
|
33
|
-
const block = yield* blockNodeFromHastElement(element);
|
|
34
|
-
return block;
|
|
35
|
-
});
|
|
36
|
-
/**
|
|
37
|
-
* Parse HAST root to Document AST.
|
|
38
|
-
*/
|
|
39
|
-
const documentFromHastRoot = (root, rawConfluence) => Effect.gen(function* () {
|
|
40
|
-
const elements = root.children.filter(isHastElement);
|
|
41
|
-
const nodeArrays = yield* Effect.forEach(elements, (el) => documentNodeFromHastElement(el).pipe(Effect.map((node) => (node !== null ? [node] : []))));
|
|
42
|
-
const children = nodeArrays.flat();
|
|
43
|
-
return makeDocument(children, rawConfluence);
|
|
44
|
-
});
|
|
45
|
-
/**
|
|
46
|
-
* Parse MDAST root to Document AST.
|
|
47
|
-
*/
|
|
48
|
-
const documentFromMdastRoot = (root) => {
|
|
49
|
-
const children = [];
|
|
50
|
-
for (const node of root.children) {
|
|
51
|
-
const blockContent = node;
|
|
52
|
-
const block = blockNodeFromMdast(blockContent);
|
|
53
|
-
children.push(block);
|
|
54
|
-
}
|
|
55
|
-
return makeDocument(children);
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Check if node is a macro node.
|
|
59
|
-
*/
|
|
60
|
-
const isMacroNode = (node) => {
|
|
61
|
-
return node._tag === "InfoPanel" ||
|
|
62
|
-
node._tag === "ExpandMacro" ||
|
|
63
|
-
node._tag === "TocMacro" ||
|
|
64
|
-
node._tag === "CodeMacro" ||
|
|
65
|
-
node._tag === "StatusMacro";
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Serialize Document AST to Markdown.
|
|
69
|
-
*/
|
|
70
|
-
const documentToMarkdown = (doc) => {
|
|
71
|
-
const parts = [];
|
|
72
|
-
for (const node of doc.children) {
|
|
73
|
-
const mdast = isMacroNode(node)
|
|
74
|
-
? macroNodeToMdast(node)
|
|
75
|
-
: blockNodeToMdast(node);
|
|
76
|
-
parts.push(mdastToString(mdast));
|
|
77
|
-
}
|
|
78
|
-
return parts.join("\n\n");
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Schema for transforming preprocessed Confluence HTML to Document AST.
|
|
82
|
-
*/
|
|
83
|
-
export const DocumentFromHast = Schema.transformOrFail(Schema.Any, Schema.Any, {
|
|
84
|
-
strict: true,
|
|
85
|
-
decode: (root, _options, ast) => documentFromHastRoot(root).pipe(Effect.mapError((e) => new ParseResult.Type(ast, root, e.message))),
|
|
86
|
-
encode: (_doc, _options, ast) => Effect.fail(new ParseResult.Type(ast, _doc, "Document to HAST encoding not implemented"))
|
|
87
|
-
});
|
|
88
|
-
/**
|
|
89
|
-
* Schema for transforming MDAST root to Document AST.
|
|
90
|
-
*/
|
|
91
|
-
export const DocumentFromMdast = Schema.transformOrFail(Schema.Any, Schema.Any, {
|
|
92
|
-
strict: true,
|
|
93
|
-
decode: (root, _options, _ast) => Effect.succeed(documentFromMdastRoot(root)),
|
|
94
|
-
encode: (_doc, _options, ast) => Effect.fail(new ParseResult.Type(ast, _doc, "Document to MDAST encoding not implemented"))
|
|
95
|
-
});
|
|
96
|
-
/**
|
|
97
|
-
* Direct conversion schema: Confluence HTML string <-> Markdown string.
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
* ```typescript
|
|
101
|
-
* import { ConfluenceToMarkdown } from "@knpkv/confluence-to-markdown/schemas/ConversionSchema"
|
|
102
|
-
* import { Schema, Effect } from "effect"
|
|
103
|
-
*
|
|
104
|
-
* // Decode: Confluence HTML -> Markdown
|
|
105
|
-
* const markdown = Effect.runSync(
|
|
106
|
-
* Schema.decode(ConfluenceToMarkdown)(confluenceHtml)
|
|
107
|
-
* )
|
|
108
|
-
*
|
|
109
|
-
* // Encode: Markdown -> Confluence HTML (limited support)
|
|
110
|
-
* const html = Effect.runSync(
|
|
111
|
-
* Schema.encode(ConfluenceToMarkdown)(markdown)
|
|
112
|
-
* )
|
|
113
|
-
* ```
|
|
114
|
-
*
|
|
115
|
-
* @category Schemas
|
|
116
|
-
*/
|
|
117
|
-
export const ConfluenceToMarkdown = Schema.transformOrFail(Schema.String, Schema.String, {
|
|
118
|
-
strict: true,
|
|
119
|
-
decode: (html, _options, ast) => Effect.gen(function* () {
|
|
120
|
-
// Preprocess
|
|
121
|
-
const preprocessed = yield* Schema.decode(PreprocessedHtmlFromConfluence)(html).pipe(Effect.mapError((e) => new ParseResult.Type(ast, html, `Preprocessing failed: ${e.message}`)));
|
|
122
|
-
// Parse to HAST
|
|
123
|
-
const hast = yield* Schema.decode(HastFromHtml)(preprocessed).pipe(Effect.mapError((e) => new ParseResult.Type(ast, html, `HAST parsing failed: ${e.message}`)));
|
|
124
|
-
// Convert to Document
|
|
125
|
-
const doc = yield* documentFromHastRoot(hast, html).pipe(Effect.mapError((e) => new ParseResult.Type(ast, html, `Document conversion failed: ${e.message}`)));
|
|
126
|
-
// Serialize to Markdown
|
|
127
|
-
return documentToMarkdown(doc);
|
|
128
|
-
}),
|
|
129
|
-
encode: (md, _options, ast) => Schema.decode(MdastFromMarkdown)(md).pipe(Effect.mapError((e) => new ParseResult.Type(ast, md, `MDAST parsing failed: ${e.message}`)), Effect.map((mdast) => {
|
|
130
|
-
const doc = documentFromMdastRoot(mdast);
|
|
131
|
-
// Note: Full HTML serialization is complex; return basic HTML
|
|
132
|
-
// For full fidelity, use the existing ConfluenceSerializer
|
|
133
|
-
const parts = [];
|
|
134
|
-
for (const node of doc.children) {
|
|
135
|
-
parts.push(documentNodeToHtml(node));
|
|
136
|
-
}
|
|
137
|
-
return parts.join("\n");
|
|
138
|
-
}))
|
|
139
|
-
});
|
|
140
|
-
/**
|
|
141
|
-
* Basic document node to HTML conversion.
|
|
142
|
-
*/
|
|
143
|
-
const documentNodeToHtml = (node) => {
|
|
144
|
-
switch (node._tag) {
|
|
145
|
-
case "Heading":
|
|
146
|
-
return `<h${node.level}>${node.children.map(inlineToHtml).join("")}</h${node.level}>`;
|
|
147
|
-
case "Paragraph":
|
|
148
|
-
return `<p>${node.children.map(inlineToHtml).join("")}</p>`;
|
|
149
|
-
case "CodeBlock":
|
|
150
|
-
return `<pre><code${node.language ? ` class="language-${node.language}"` : ""}>${escapeHtml(node.code)}</code></pre>`;
|
|
151
|
-
case "ThematicBreak":
|
|
152
|
-
return "<hr />";
|
|
153
|
-
case "Image":
|
|
154
|
-
return `<img src="${escapeHtml(node.src ?? "")}" alt="${escapeHtml(node.alt ?? "")}" />`;
|
|
155
|
-
case "BlockQuote":
|
|
156
|
-
return `<blockquote>${node.children.map((c) => documentNodeToHtml(c)).join("")}</blockquote>`;
|
|
157
|
-
case "List": {
|
|
158
|
-
const tag = node.ordered ? "ol" : "ul";
|
|
159
|
-
return `<${tag}>${node.children.map((item) => `<li>${item.children.map((c) => documentNodeToHtml(c)).join("")}</li>`).join("")}</${tag}>`;
|
|
160
|
-
}
|
|
161
|
-
case "Table":
|
|
162
|
-
return `<table>${node.rows.map((row) => `<tr>${row.cells.map((cell) => cell.isHeader
|
|
163
|
-
? `<th>${cell.children.map(inlineToHtml).join("")}</th>`
|
|
164
|
-
: `<td>${cell.children.map(inlineToHtml).join("")}</td>`).join("")}</tr>`).join("")}</table>`;
|
|
165
|
-
case "InfoPanel":
|
|
166
|
-
return `<div data-macro="${node.panelType}">${node.children.map((c) => documentNodeToHtml(c)).join("")}</div>`;
|
|
167
|
-
case "ExpandMacro":
|
|
168
|
-
return `<details><summary>${escapeHtml(node.title ?? "")}</summary>${node.children.map((c) => documentNodeToHtml(c)).join("")}</details>`;
|
|
169
|
-
case "TocMacro":
|
|
170
|
-
return `<nav data-macro="toc"></nav>`;
|
|
171
|
-
case "CodeMacro":
|
|
172
|
-
return `<pre data-macro="code"${node.language ? ` data-language="${node.language}"` : ""}><code>${escapeHtml(node.code)}</code></pre>`;
|
|
173
|
-
case "StatusMacro":
|
|
174
|
-
return `<span data-macro="status" data-color="${node.color}">${escapeHtml(node.text)}</span>`;
|
|
175
|
-
default:
|
|
176
|
-
return "";
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
/**
|
|
180
|
-
* Basic inline node to HTML.
|
|
181
|
-
*/
|
|
182
|
-
const inlineToHtml = (node) => {
|
|
183
|
-
switch (node._tag) {
|
|
184
|
-
case "Text":
|
|
185
|
-
return escapeHtml(node.value ?? "");
|
|
186
|
-
case "Strong":
|
|
187
|
-
return `<strong>${node.children?.map(inlineToHtml).join("") ?? ""}</strong>`;
|
|
188
|
-
case "Emphasis":
|
|
189
|
-
return `<em>${node.children?.map(inlineToHtml).join("") ?? ""}</em>`;
|
|
190
|
-
case "InlineCode":
|
|
191
|
-
return `<code>${escapeHtml(node.value ?? "")}</code>`;
|
|
192
|
-
case "Link":
|
|
193
|
-
return `<a href="${escapeHtml(node.url ?? "")}">${node.children?.map(inlineToHtml).join("") ?? ""}</a>`;
|
|
194
|
-
case "LineBreak":
|
|
195
|
-
return "<br />";
|
|
196
|
-
default:
|
|
197
|
-
return "";
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
/**
|
|
201
|
-
* Escape HTML special characters.
|
|
202
|
-
*/
|
|
203
|
-
const escapeHtml = (str) => str
|
|
204
|
-
.replace(/&/g, "&")
|
|
205
|
-
.replace(/</g, "<")
|
|
206
|
-
.replace(/>/g, ">")
|
|
207
|
-
.replace(/"/g, """);
|
|
208
|
-
//# sourceMappingURL=ConversionSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConversionSchema.js","sourceRoot":"","sources":["../../src/schemas/ConversionSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as Schema from "effect/Schema";
|
|
2
|
-
import type { Document } from "../ast/Document.js";
|
|
3
|
-
/**
|
|
4
|
-
* Bi-directional schema: Markdown string <-> Document AST.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* import { DocumentFromMarkdown } from "@knpkv/confluence-to-markdown/schemas/MarkdownSchema"
|
|
9
|
-
* import { Schema, Effect } from "effect"
|
|
10
|
-
*
|
|
11
|
-
* // Decode: Markdown -> AST
|
|
12
|
-
* const decodeResult = Schema.decodeUnknown(DocumentFromMarkdown)(markdownString)
|
|
13
|
-
*
|
|
14
|
-
* // Encode: AST -> Markdown
|
|
15
|
-
* const encodeResult = Schema.encode(DocumentFromMarkdown)(document)
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @category Schemas
|
|
19
|
-
*/
|
|
20
|
-
export declare const DocumentFromMarkdown: Schema.Schema<Document, string, never>;
|
|
21
|
-
//# sourceMappingURL=MarkdownSchema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/MarkdownSchema.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAUlD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAC9C,QAAQ,EACR,MAAM,EACN,KAAK,CAiBN,CAAA"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bi-directional schema for Markdown <-> AST transformation.
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as ParseResult from "effect/ParseResult";
|
|
8
|
-
import * as Schema from "effect/Schema";
|
|
9
|
-
import { parseMarkdown } from "../parsers/MarkdownParser.js";
|
|
10
|
-
import { serializeToMarkdown } from "../serializers/MarkdownSerializer.js";
|
|
11
|
-
/**
|
|
12
|
-
* Schema.Type placeholder for Document to use with transformOrFail.
|
|
13
|
-
* We use Schema.Any since Document is already a union type.
|
|
14
|
-
*/
|
|
15
|
-
const DocumentSchema = Schema.Any;
|
|
16
|
-
/**
|
|
17
|
-
* Bi-directional schema: Markdown string <-> Document AST.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* import { DocumentFromMarkdown } from "@knpkv/confluence-to-markdown/schemas/MarkdownSchema"
|
|
22
|
-
* import { Schema, Effect } from "effect"
|
|
23
|
-
*
|
|
24
|
-
* // Decode: Markdown -> AST
|
|
25
|
-
* const decodeResult = Schema.decodeUnknown(DocumentFromMarkdown)(markdownString)
|
|
26
|
-
*
|
|
27
|
-
* // Encode: AST -> Markdown
|
|
28
|
-
* const encodeResult = Schema.encode(DocumentFromMarkdown)(document)
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @category Schemas
|
|
32
|
-
*/
|
|
33
|
-
export const DocumentFromMarkdown = Schema.transformOrFail(Schema.String, DocumentSchema, {
|
|
34
|
-
strict: true,
|
|
35
|
-
decode: (md, _opts, ast) => Effect.mapError(parseMarkdown(md), (err) => new ParseResult.Type(ast, md, err.message)),
|
|
36
|
-
encode: (doc, _opts, ast) => Effect.mapError(serializeToMarkdown(doc), (err) => new ParseResult.Type(ast, doc, err.message))
|
|
37
|
-
});
|
|
38
|
-
//# sourceMappingURL=MarkdownSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownSchema.js","sourceRoot":"","sources":["../../src/schemas/MarkdownSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE1E;;;GAGG;AACH,MAAM,cAAc,GAAG,MAAM,CAAC,GAAwC,CAAA;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAI7B,MAAM,CAAC,eAAe,CACxB,MAAM,CAAC,MAAM,EACb,cAAc,EACd;IACE,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACzB,MAAM,CAAC,QAAQ,CACb,aAAa,CAAC,EAAE,CAAC,EACjB,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CACpD;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAC1B,MAAM,CAAC,QAAQ,CACb,mBAAmB,CAAC,GAAG,CAAC,EACxB,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CACrD;CACJ,CACF,CAAA"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as Schema from "effect/Schema";
|
|
2
|
-
import type { HastRoot } from "./HastSchema.js";
|
|
3
|
-
/**
|
|
4
|
-
* Transform HTML string to HAST root.
|
|
5
|
-
*
|
|
6
|
-
* Uses rehype-parse to parse HTML and converts the result to our schema types.
|
|
7
|
-
* Supports bidirectional transformation (decode HTML -> HAST, encode HAST -> HTML).
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* import { HastFromHtml } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
12
|
-
* import * as Schema from "effect/Schema"
|
|
13
|
-
* import { Effect } from "effect"
|
|
14
|
-
*
|
|
15
|
-
* const program = Effect.gen(function* () {
|
|
16
|
-
* const hast = yield* Schema.decode(HastFromHtml)("<h1>Hello</h1><p>World</p>")
|
|
17
|
-
* console.log(hast.children.length) // 2
|
|
18
|
-
* console.log(hast.children[0]._tag) // "element"
|
|
19
|
-
* })
|
|
20
|
-
*
|
|
21
|
-
* Effect.runPromise(program)
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* @category Hast
|
|
25
|
-
*/
|
|
26
|
-
export declare const HastFromHtml: Schema.Schema<HastRoot, string>;
|
|
27
|
-
//# sourceMappingURL=HastFromHtml.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HastFromHtml.d.ts","sourceRoot":"","sources":["../../../src/schemas/hast/HastFromHtml.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAiFzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAmCxD,CAAA"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema transformation from HTML string to HAST (Hypertext Abstract Syntax Tree).
|
|
3
|
-
*
|
|
4
|
-
* Uses rehype-parse for HTML parsing and wraps the result in Effect Schema types.
|
|
5
|
-
*
|
|
6
|
-
* @module
|
|
7
|
-
*/
|
|
8
|
-
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as ParseResult from "effect/ParseResult";
|
|
10
|
-
import * as Schema from "effect/Schema";
|
|
11
|
-
import rehypeParse from "rehype-parse";
|
|
12
|
-
import rehypeStringify from "rehype-stringify";
|
|
13
|
-
import { unified } from "unified";
|
|
14
|
-
import { HastRootSchema, makeHastComment, makeHastDoctype, makeHastElement, makeHastRoot, makeHastText } from "./HastSchema.js";
|
|
15
|
-
/**
|
|
16
|
-
* Convert unist node from rehype-parse to our HastNode type.
|
|
17
|
-
*/
|
|
18
|
-
const convertToHastNode = (node) => {
|
|
19
|
-
switch (node.type) {
|
|
20
|
-
case "text":
|
|
21
|
-
return makeHastText(node.value ?? "");
|
|
22
|
-
case "comment":
|
|
23
|
-
return makeHastComment(node.value ?? "");
|
|
24
|
-
case "doctype":
|
|
25
|
-
return makeHastDoctype();
|
|
26
|
-
case "element":
|
|
27
|
-
return makeHastElement(node.tagName ?? "div", node.properties ?? {}, (node.children ?? []).map(convertToHastNode));
|
|
28
|
-
default:
|
|
29
|
-
// Unknown node type - treat as comment to preserve
|
|
30
|
-
return makeHastComment(`unknown:${node.type}`);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Convert our HastNode type back to unist format for serialization.
|
|
35
|
-
*/
|
|
36
|
-
const convertFromHastNode = (node) => {
|
|
37
|
-
switch (node._tag) {
|
|
38
|
-
case "text":
|
|
39
|
-
return { type: "text", value: node.value };
|
|
40
|
-
case "comment":
|
|
41
|
-
return { type: "comment", value: node.value };
|
|
42
|
-
case "doctype":
|
|
43
|
-
return { type: "doctype" };
|
|
44
|
-
case "element":
|
|
45
|
-
return {
|
|
46
|
-
type: "element",
|
|
47
|
-
tagName: node.tagName,
|
|
48
|
-
properties: node.properties,
|
|
49
|
-
children: node.children.map(convertFromHastNode)
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Convert unist root to HastRoot.
|
|
55
|
-
*/
|
|
56
|
-
const convertToHastRoot = (root) => makeHastRoot(root.children.map(convertToHastNode));
|
|
57
|
-
/**
|
|
58
|
-
* Convert HastRoot back to unist root for serialization.
|
|
59
|
-
*/
|
|
60
|
-
const convertFromHastRoot = (root) => ({
|
|
61
|
-
type: "root",
|
|
62
|
-
children: root.children.map(convertFromHastNode)
|
|
63
|
-
});
|
|
64
|
-
/**
|
|
65
|
-
* Transform HTML string to HAST root.
|
|
66
|
-
*
|
|
67
|
-
* Uses rehype-parse to parse HTML and converts the result to our schema types.
|
|
68
|
-
* Supports bidirectional transformation (decode HTML -> HAST, encode HAST -> HTML).
|
|
69
|
-
*
|
|
70
|
-
* @example
|
|
71
|
-
* ```typescript
|
|
72
|
-
* import { HastFromHtml } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
73
|
-
* import * as Schema from "effect/Schema"
|
|
74
|
-
* import { Effect } from "effect"
|
|
75
|
-
*
|
|
76
|
-
* const program = Effect.gen(function* () {
|
|
77
|
-
* const hast = yield* Schema.decode(HastFromHtml)("<h1>Hello</h1><p>World</p>")
|
|
78
|
-
* console.log(hast.children.length) // 2
|
|
79
|
-
* console.log(hast.children[0]._tag) // "element"
|
|
80
|
-
* })
|
|
81
|
-
*
|
|
82
|
-
* Effect.runPromise(program)
|
|
83
|
-
* ```
|
|
84
|
-
*
|
|
85
|
-
* @category Hast
|
|
86
|
-
*/
|
|
87
|
-
export const HastFromHtml = Schema.transformOrFail(Schema.String, HastRootSchema, {
|
|
88
|
-
strict: true,
|
|
89
|
-
decode: (html, _options, ast) => Effect.try({
|
|
90
|
-
try: () => {
|
|
91
|
-
const result = unified()
|
|
92
|
-
.use(rehypeParse, { fragment: true })
|
|
93
|
-
.parse(html);
|
|
94
|
-
return convertToHastRoot(result);
|
|
95
|
-
},
|
|
96
|
-
catch: (error) => new ParseResult.Type(ast, html, `HTML parse error: ${error instanceof Error ? error.message : String(error)}`)
|
|
97
|
-
}),
|
|
98
|
-
encode: (hast, _options, ast) => Effect.try({
|
|
99
|
-
try: () => {
|
|
100
|
-
const unist = convertFromHastRoot(hast);
|
|
101
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
|
-
return unified().use(rehypeStringify).stringify(unist);
|
|
103
|
-
},
|
|
104
|
-
catch: (error) => new ParseResult.Type(ast, hast, `HTML stringify error: ${error instanceof Error ? error.message : String(error)}`)
|
|
105
|
-
})
|
|
106
|
-
});
|
|
107
|
-
//# sourceMappingURL=HastFromHtml.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HastFromHtml.js","sourceRoot":"","sources":["../../../src/schemas/hast/HastFromHtml.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,eAAe,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAgBxB;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAY,EAAE;IACtD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACvC,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAC1C,KAAK,SAAS;YACZ,OAAO,eAAe,EAAE,CAAA;QAC1B,KAAK,SAAS;YACZ,OAAO,eAAe,CACpB,IAAI,CAAC,OAAO,IAAI,KAAK,EACrB,IAAI,CAAC,UAAU,IAAI,EAAE,EACrB,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAC7C,CAAA;QACH;YACE,mDAAmD;YACnD,OAAO,eAAe,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAa,EAAE;IACxD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QAC5C,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QAC/C,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAC5B,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;aACjD,CAAA;IACL,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAY,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE3G;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAa,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;CACjD,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAoC,MAAM,CAAC,eAAe,CACjF,MAAM,CAAC,MAAM,EACb,cAAc,EACd;IACE,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC;QACT,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,OAAO,EAAE;iBACrB,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACpC,KAAK,CAAC,IAAI,CAAc,CAAA;YAC3B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,IAAI,CAClB,GAAG,EACH,IAAI,EACJ,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9E;KACJ,CAAC;IACJ,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC;QACT,GAAG,EAAE,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;YACvC,8DAA8D;YAC9D,OAAO,OAAO,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,KAAY,CAAC,CAAA;QAC/D,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC,IAAI,CAClB,GAAG,EACH,IAAI,EACJ,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF;KACJ,CAAC;CACL,CACF,CAAA"}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Effect Schema definitions for HAST (Hypertext Abstract Syntax Tree) nodes.
|
|
3
|
-
*
|
|
4
|
-
* HAST is the intermediate representation used when parsing HTML.
|
|
5
|
-
* These schemas provide type-safe transformation between raw HTML and our AST.
|
|
6
|
-
*
|
|
7
|
-
* @module
|
|
8
|
-
*/
|
|
9
|
-
import * as Schema from "effect/Schema";
|
|
10
|
-
/**
|
|
11
|
-
* HAST element properties type.
|
|
12
|
-
*
|
|
13
|
-
* @category Types
|
|
14
|
-
*/
|
|
15
|
-
export type HastProperties = Record<string, unknown>;
|
|
16
|
-
/**
|
|
17
|
-
* HAST text node type.
|
|
18
|
-
*
|
|
19
|
-
* @category Types
|
|
20
|
-
*/
|
|
21
|
-
export interface HastText {
|
|
22
|
-
readonly _tag: "text";
|
|
23
|
-
readonly value: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* HAST comment node type.
|
|
27
|
-
*
|
|
28
|
-
* @category Types
|
|
29
|
-
*/
|
|
30
|
-
export interface HastComment {
|
|
31
|
-
readonly _tag: "comment";
|
|
32
|
-
readonly value: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* HAST doctype node type.
|
|
36
|
-
*
|
|
37
|
-
* @category Types
|
|
38
|
-
*/
|
|
39
|
-
export interface HastDoctype {
|
|
40
|
-
readonly _tag: "doctype";
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* HAST element node type.
|
|
44
|
-
*
|
|
45
|
-
* @category Types
|
|
46
|
-
*/
|
|
47
|
-
export interface HastElement {
|
|
48
|
-
readonly _tag: "element";
|
|
49
|
-
readonly tagName: string;
|
|
50
|
-
readonly properties: HastProperties;
|
|
51
|
-
readonly children: ReadonlyArray<HastNode>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Union of all HAST node types.
|
|
55
|
-
*
|
|
56
|
-
* @category Types
|
|
57
|
-
*/
|
|
58
|
-
export type HastNode = HastText | HastElement | HastComment | HastDoctype;
|
|
59
|
-
/**
|
|
60
|
-
* HAST root node type.
|
|
61
|
-
*
|
|
62
|
-
* @category Types
|
|
63
|
-
*/
|
|
64
|
-
export interface HastRoot {
|
|
65
|
-
readonly _tag: "root";
|
|
66
|
-
readonly children: ReadonlyArray<HastNode>;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Create a HAST text node.
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ```typescript
|
|
73
|
-
* import { makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
74
|
-
*
|
|
75
|
-
* const text = makeHastText("Hello world")
|
|
76
|
-
* console.log(text.value) // "Hello world"
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
* @category Constructors
|
|
80
|
-
*/
|
|
81
|
-
export declare const makeHastText: (value: string) => HastText;
|
|
82
|
-
/**
|
|
83
|
-
* Create a HAST comment node.
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```typescript
|
|
87
|
-
* import { makeHastComment } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
88
|
-
*
|
|
89
|
-
* const comment = makeHastComment("cf:layout-start")
|
|
90
|
-
* ```
|
|
91
|
-
*
|
|
92
|
-
* @category Constructors
|
|
93
|
-
*/
|
|
94
|
-
export declare const makeHastComment: (value: string) => HastComment;
|
|
95
|
-
/**
|
|
96
|
-
* Create a HAST doctype node.
|
|
97
|
-
*
|
|
98
|
-
* @category Constructors
|
|
99
|
-
*/
|
|
100
|
-
export declare const makeHastDoctype: () => HastDoctype;
|
|
101
|
-
/**
|
|
102
|
-
* Create a HAST element node.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```typescript
|
|
106
|
-
* import { makeHastElement, makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
107
|
-
*
|
|
108
|
-
* const heading = makeHastElement("h1", { id: "title" }, [makeHastText("Hello")])
|
|
109
|
-
* ```
|
|
110
|
-
*
|
|
111
|
-
* @category Constructors
|
|
112
|
-
*/
|
|
113
|
-
export declare const makeHastElement: (tagName: string, properties?: HastProperties, children?: ReadonlyArray<HastNode>) => HastElement;
|
|
114
|
-
/**
|
|
115
|
-
* Create a HAST root node.
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* import { makeHastRoot, makeHastElement, makeHastText } from "@knpkv/confluence-to-markdown/schemas/hast"
|
|
120
|
-
*
|
|
121
|
-
* const root = makeHastRoot([
|
|
122
|
-
* makeHastElement("p", {}, [makeHastText("Content")])
|
|
123
|
-
* ])
|
|
124
|
-
* ```
|
|
125
|
-
*
|
|
126
|
-
* @category Constructors
|
|
127
|
-
*/
|
|
128
|
-
export declare const makeHastRoot: (children: ReadonlyArray<HastNode>) => HastRoot;
|
|
129
|
-
/**
|
|
130
|
-
* Type guard to check if a HastNode is a HastElement.
|
|
131
|
-
*
|
|
132
|
-
* @category Guards
|
|
133
|
-
*/
|
|
134
|
-
export declare const isHastElement: (node: HastNode) => node is HastElement;
|
|
135
|
-
/**
|
|
136
|
-
* Type guard to check if a HastNode is a HastText.
|
|
137
|
-
*
|
|
138
|
-
* @category Guards
|
|
139
|
-
*/
|
|
140
|
-
export declare const isHastText: (node: HastNode) => node is HastText;
|
|
141
|
-
/**
|
|
142
|
-
* Type guard to check if a HastNode is a HastComment.
|
|
143
|
-
*
|
|
144
|
-
* @category Guards
|
|
145
|
-
*/
|
|
146
|
-
export declare const isHastComment: (node: HastNode) => node is HastComment;
|
|
147
|
-
/**
|
|
148
|
-
* Get text content from a HastNode recursively.
|
|
149
|
-
*
|
|
150
|
-
* @category Utilities
|
|
151
|
-
*/
|
|
152
|
-
export declare const getTextContent: (node: HastNode) => string;
|
|
153
|
-
/**
|
|
154
|
-
* Schema for HAST text node.
|
|
155
|
-
*
|
|
156
|
-
* @category Schemas
|
|
157
|
-
*/
|
|
158
|
-
export declare const HastTextSchema: Schema.Schema<HastText>;
|
|
159
|
-
/**
|
|
160
|
-
* Schema for HAST comment node.
|
|
161
|
-
*
|
|
162
|
-
* @category Schemas
|
|
163
|
-
*/
|
|
164
|
-
export declare const HastCommentSchema: Schema.Schema<HastComment>;
|
|
165
|
-
/**
|
|
166
|
-
* Schema for HAST doctype node.
|
|
167
|
-
*
|
|
168
|
-
* @category Schemas
|
|
169
|
-
*/
|
|
170
|
-
export declare const HastDoctypeSchema: Schema.Schema<HastDoctype>;
|
|
171
|
-
/**
|
|
172
|
-
* Schema for HAST properties.
|
|
173
|
-
*
|
|
174
|
-
* @category Schemas
|
|
175
|
-
*/
|
|
176
|
-
export declare const HastPropertiesSchema: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
|
|
177
|
-
/**
|
|
178
|
-
* Schema for HAST element node.
|
|
179
|
-
*
|
|
180
|
-
* @category Schemas
|
|
181
|
-
*/
|
|
182
|
-
export declare const HastElementSchema: Schema.Schema<HastElement>;
|
|
183
|
-
/**
|
|
184
|
-
* Schema for HAST node union.
|
|
185
|
-
*
|
|
186
|
-
* @category Schemas
|
|
187
|
-
*/
|
|
188
|
-
export declare const HastNodeSchema: Schema.Schema<HastNode>;
|
|
189
|
-
/**
|
|
190
|
-
* Schema for HAST root.
|
|
191
|
-
*
|
|
192
|
-
* @category Schemas
|
|
193
|
-
*/
|
|
194
|
-
export declare const HastRootSchema: Schema.Schema<HastRoot>;
|
|
195
|
-
//# sourceMappingURL=HastSchema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HastSchema.d.ts","sourceRoot":"","sources":["../../../src/schemas/hast/HastSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEpD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CAC3C;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAA;AAEzE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,QAG3C,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,WAG9C,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,WAEjC,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,aAAY,cAAmB,EAC/B,WAAU,aAAa,CAAC,QAAQ,CAAM,KACrC,WAKD,CAAA;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,aAAa,CAAC,QAAQ,CAAC,KAAG,QAG/D,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,QAAQ,KAAG,IAAI,IAAI,WAAsC,CAAA;AAE7F;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,QAAQ,KAAG,IAAI,IAAI,QAAgC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,QAAQ,KAAG,IAAI,IAAI,WAAsC,CAAA;AAE7F;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,QAAQ,KAAG,MAQ/C,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAGjD,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAGvD,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAEvD,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,6DAG/B,CAAA;AAKF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAKvD,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAKlD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAGjD,CAAA"}
|