@knpkv/confluence-to-markdown 0.2.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/LICENSE +21 -0
- package/README.md +282 -14
- package/dist/ConfluenceAuth.d.ts +76 -0
- package/dist/ConfluenceAuth.d.ts.map +1 -0
- package/dist/ConfluenceAuth.js +356 -0
- package/dist/ConfluenceAuth.js.map +1 -0
- package/dist/ConfluenceClient.d.ts +26 -2
- package/dist/ConfluenceClient.d.ts.map +1 -1
- package/dist/ConfluenceClient.js +98 -92
- package/dist/ConfluenceClient.js.map +1 -1
- package/dist/ConfluenceConfig.d.ts +4 -24
- package/dist/ConfluenceConfig.d.ts.map +1 -1
- package/dist/ConfluenceConfig.js +45 -7
- package/dist/ConfluenceConfig.js.map +1 -1
- package/dist/ConfluenceError.d.ts +89 -6
- package/dist/ConfluenceError.d.ts.map +1 -1
- package/dist/ConfluenceError.js +88 -5
- package/dist/ConfluenceError.js.map +1 -1
- package/dist/GitError.d.ts +103 -0
- package/dist/GitError.d.ts.map +1 -0
- package/dist/GitError.js +85 -0
- package/dist/GitError.js.map +1 -0
- package/dist/GitService.d.ts +175 -0
- package/dist/GitService.d.ts.map +1 -0
- package/dist/GitService.js +431 -0
- package/dist/GitService.js.map +1 -0
- package/dist/LocalFileSystem.d.ts +29 -4
- package/dist/LocalFileSystem.d.ts.map +1 -1
- package/dist/LocalFileSystem.js +80 -6
- package/dist/LocalFileSystem.js.map +1 -1
- package/dist/MarkdownConverter.d.ts +49 -2
- package/dist/MarkdownConverter.d.ts.map +1 -1
- package/dist/MarkdownConverter.js +73 -111
- package/dist/MarkdownConverter.js.map +1 -1
- package/dist/SchemaConverterError.d.ts +108 -0
- package/dist/SchemaConverterError.d.ts.map +1 -0
- package/dist/SchemaConverterError.js +84 -0
- package/dist/SchemaConverterError.js.map +1 -0
- package/dist/Schemas.d.ts +225 -1
- package/dist/Schemas.d.ts.map +1 -1
- package/dist/Schemas.js +155 -6
- package/dist/Schemas.js.map +1 -1
- package/dist/SyncEngine.d.ts +30 -20
- package/dist/SyncEngine.d.ts.map +1 -1
- package/dist/SyncEngine.js +566 -117
- package/dist/SyncEngine.js.map +1 -1
- package/dist/ast/BlockNode.d.ts +468 -0
- package/dist/ast/BlockNode.d.ts.map +1 -0
- package/dist/ast/BlockNode.js +319 -0
- package/dist/ast/BlockNode.js.map +1 -0
- package/dist/ast/Document.d.ts +244 -0
- package/dist/ast/Document.d.ts.map +1 -0
- package/dist/ast/Document.js +69 -0
- package/dist/ast/Document.js.map +1 -0
- package/dist/ast/InlineNode.d.ts +477 -0
- package/dist/ast/InlineNode.d.ts.map +1 -0
- package/dist/ast/InlineNode.js +263 -0
- package/dist/ast/InlineNode.js.map +1 -0
- package/dist/ast/MacroNode.d.ts +267 -0
- package/dist/ast/MacroNode.d.ts.map +1 -0
- package/dist/ast/MacroNode.js +164 -0
- package/dist/ast/MacroNode.js.map +1 -0
- package/dist/ast/index.d.ts +10 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +14 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/bin.js +33 -149
- package/dist/bin.js.map +1 -1
- package/dist/commands/auth.d.ts +15 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +86 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/clone.d.ts +12 -0
- package/dist/commands/clone.d.ts.map +1 -0
- package/dist/commands/clone.js +93 -0
- package/dist/commands/clone.js.map +1 -0
- package/dist/commands/delete.d.ts +13 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +48 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/errorHandler.d.ts +14 -0
- package/dist/commands/errorHandler.d.ts.map +1 -0
- package/dist/commands/errorHandler.js +33 -0
- package/dist/commands/errorHandler.js.map +1 -0
- package/dist/commands/git.d.ts +22 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +72 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/index.d.ts +11 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/layers.d.ts +31 -0
- package/dist/commands/layers.d.ts.map +1 -0
- package/dist/commands/layers.js +137 -0
- package/dist/commands/layers.js.map +1 -0
- package/dist/commands/new.d.ts +9 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +80 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pageTree.d.ts +18 -0
- package/dist/commands/pageTree.d.ts.map +1 -0
- package/dist/commands/pageTree.js +20 -0
- package/dist/commands/pageTree.js.map +1 -0
- package/dist/commands/shared.d.ts +15 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +27 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/sync.d.ts +15 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +101 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/NodeLayers.d.ts +7 -0
- package/dist/internal/NodeLayers.d.ts.map +1 -0
- package/dist/internal/NodeLayers.js +19 -0
- package/dist/internal/NodeLayers.js.map +1 -0
- package/dist/internal/frontmatter.d.ts +10 -0
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +16 -0
- package/dist/internal/frontmatter.js.map +1 -1
- package/dist/internal/gitCommands.d.ts +78 -0
- package/dist/internal/gitCommands.d.ts.map +1 -0
- package/dist/internal/gitCommands.js +156 -0
- package/dist/internal/gitCommands.js.map +1 -0
- package/dist/internal/hashUtils.d.ts +42 -1
- package/dist/internal/hashUtils.d.ts.map +1 -1
- package/dist/internal/hashUtils.js +38 -2
- package/dist/internal/hashUtils.js.map +1 -1
- package/dist/internal/oauthServer.d.ts +55 -0
- package/dist/internal/oauthServer.d.ts.map +1 -0
- package/dist/internal/oauthServer.js +110 -0
- package/dist/internal/oauthServer.js.map +1 -0
- package/dist/internal/pathUtils.d.ts +21 -4
- package/dist/internal/pathUtils.d.ts.map +1 -1
- package/dist/internal/pathUtils.js +24 -13
- package/dist/internal/pathUtils.js.map +1 -1
- package/dist/internal/tokenStorage.d.ts +75 -0
- package/dist/internal/tokenStorage.d.ts.map +1 -0
- package/dist/internal/tokenStorage.js +149 -0
- package/dist/internal/tokenStorage.js.map +1 -0
- package/dist/internal/userCache.d.ts +42 -0
- package/dist/internal/userCache.d.ts.map +1 -0
- package/dist/internal/userCache.js +51 -0
- package/dist/internal/userCache.js.map +1 -0
- package/dist/parsers/ConfluenceParser.d.ts +26 -0
- package/dist/parsers/ConfluenceParser.d.ts.map +1 -0
- package/dist/parsers/ConfluenceParser.js +792 -0
- package/dist/parsers/ConfluenceParser.js.map +1 -0
- package/dist/parsers/MarkdownParser.d.ts +26 -0
- package/dist/parsers/MarkdownParser.d.ts.map +1 -0
- package/dist/parsers/MarkdownParser.js +873 -0
- package/dist/parsers/MarkdownParser.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +8 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/schemas/ConfluenceSchema.d.ts +21 -0
- package/dist/schemas/ConfluenceSchema.d.ts.map +1 -0
- package/dist/schemas/ConfluenceSchema.js +38 -0
- package/dist/schemas/ConfluenceSchema.js.map +1 -0
- package/dist/schemas/ConversionSchema.d.ts +35 -0
- package/dist/schemas/ConversionSchema.d.ts.map +1 -0
- package/dist/schemas/ConversionSchema.js +208 -0
- package/dist/schemas/ConversionSchema.js.map +1 -0
- package/dist/schemas/MarkdownSchema.d.ts +21 -0
- package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
- package/dist/schemas/MarkdownSchema.js +38 -0
- package/dist/schemas/MarkdownSchema.js.map +1 -0
- package/dist/schemas/hast/HastFromHtml.d.ts +27 -0
- package/dist/schemas/hast/HastFromHtml.d.ts.map +1 -0
- package/dist/schemas/hast/HastFromHtml.js +107 -0
- package/dist/schemas/hast/HastFromHtml.js.map +1 -0
- package/dist/schemas/hast/HastSchema.d.ts +195 -0
- package/dist/schemas/hast/HastSchema.d.ts.map +1 -0
- package/dist/schemas/hast/HastSchema.js +183 -0
- package/dist/schemas/hast/HastSchema.js.map +1 -0
- package/dist/schemas/hast/index.d.ts +9 -0
- package/dist/schemas/hast/index.d.ts.map +1 -0
- package/dist/schemas/hast/index.js +3 -0
- package/dist/schemas/hast/index.js.map +1 -0
- package/dist/schemas/index.d.ts +14 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +16 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts +30 -0
- package/dist/schemas/mdast/MdastFromMarkdown.d.ts.map +1 -0
- package/dist/schemas/mdast/MdastFromMarkdown.js +79 -0
- package/dist/schemas/mdast/MdastFromMarkdown.js.map +1 -0
- package/dist/schemas/mdast/MdastSchema.d.ts +385 -0
- package/dist/schemas/mdast/MdastSchema.d.ts.map +1 -0
- package/dist/schemas/mdast/MdastSchema.js +266 -0
- package/dist/schemas/mdast/MdastSchema.js.map +1 -0
- package/dist/schemas/mdast/index.d.ts +10 -0
- package/dist/schemas/mdast/index.d.ts.map +1 -0
- package/dist/schemas/mdast/index.js +4 -0
- package/dist/schemas/mdast/index.js.map +1 -0
- package/dist/schemas/mdast/mdastToString.d.ts +13 -0
- package/dist/schemas/mdast/mdastToString.d.ts.map +1 -0
- package/dist/schemas/mdast/mdastToString.js +85 -0
- package/dist/schemas/mdast/mdastToString.js.map +1 -0
- package/dist/schemas/nodes/block/BlockSchema.d.ts +43 -0
- package/dist/schemas/nodes/block/BlockSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/block/BlockSchema.js +634 -0
- package/dist/schemas/nodes/block/BlockSchema.js.map +1 -0
- package/dist/schemas/nodes/block/index.d.ts +7 -0
- package/dist/schemas/nodes/block/index.d.ts.map +1 -0
- package/dist/schemas/nodes/block/index.js +7 -0
- package/dist/schemas/nodes/block/index.js.map +1 -0
- package/dist/schemas/nodes/index.d.ts +9 -0
- package/dist/schemas/nodes/index.d.ts.map +1 -0
- package/dist/schemas/nodes/index.js +12 -0
- package/dist/schemas/nodes/index.js.map +1 -0
- package/dist/schemas/nodes/inline/InlineSchema.d.ts +48 -0
- package/dist/schemas/nodes/inline/InlineSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/inline/InlineSchema.js +436 -0
- package/dist/schemas/nodes/inline/InlineSchema.js.map +1 -0
- package/dist/schemas/nodes/inline/index.d.ts +7 -0
- package/dist/schemas/nodes/inline/index.d.ts.map +1 -0
- package/dist/schemas/nodes/inline/index.js +7 -0
- package/dist/schemas/nodes/inline/index.js.map +1 -0
- package/dist/schemas/nodes/macro/MacroSchema.d.ts +27 -0
- package/dist/schemas/nodes/macro/MacroSchema.d.ts.map +1 -0
- package/dist/schemas/nodes/macro/MacroSchema.js +162 -0
- package/dist/schemas/nodes/macro/MacroSchema.js.map +1 -0
- package/dist/schemas/nodes/macro/index.d.ts +7 -0
- package/dist/schemas/nodes/macro/index.d.ts.map +1 -0
- package/dist/schemas/nodes/macro/index.js +7 -0
- package/dist/schemas/nodes/macro/index.js.map +1 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts +24 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.d.ts.map +1 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js +351 -0
- package/dist/schemas/preprocessing/ConfluencePreprocessor.js.map +1 -0
- package/dist/schemas/preprocessing/index.d.ts +8 -0
- package/dist/schemas/preprocessing/index.d.ts.map +1 -0
- package/dist/schemas/preprocessing/index.js +2 -0
- package/dist/schemas/preprocessing/index.js.map +1 -0
- package/dist/serializers/ConfluenceSerializer.d.ts +30 -0
- package/dist/serializers/ConfluenceSerializer.d.ts.map +1 -0
- package/dist/serializers/ConfluenceSerializer.js +551 -0
- package/dist/serializers/ConfluenceSerializer.js.map +1 -0
- package/dist/serializers/MarkdownSerializer.d.ts +34 -0
- package/dist/serializers/MarkdownSerializer.d.ts.map +1 -0
- package/dist/serializers/MarkdownSerializer.js +355 -0
- package/dist/serializers/MarkdownSerializer.js.map +1 -0
- package/dist/serializers/index.d.ts +8 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/serializers/index.js +8 -0
- package/dist/serializers/index.js.map +1 -0
- package/package.json +27 -16
- package/src/ConfluenceAuth.ts +571 -0
- package/src/ConfluenceClient.ts +188 -156
- package/src/ConfluenceConfig.ts +63 -7
- package/src/ConfluenceError.ts +110 -14
- package/src/GitError.ts +92 -0
- package/src/GitService.ts +859 -0
- package/src/LocalFileSystem.ts +179 -9
- package/src/MarkdownConverter.ts +126 -122
- package/src/SchemaConverterError.ts +108 -0
- package/src/Schemas.ts +223 -6
- package/src/SyncEngine.ts +745 -162
- package/src/ast/BlockNode.ts +425 -0
- package/src/ast/Document.ts +90 -0
- package/src/ast/InlineNode.ts +323 -0
- package/src/ast/MacroNode.ts +245 -0
- package/src/ast/index.ts +83 -0
- package/src/bin.ts +50 -249
- package/src/commands/auth.ts +117 -0
- package/src/commands/clone.ts +145 -0
- package/src/commands/delete.ts +57 -0
- package/src/commands/errorHandler.ts +32 -0
- package/src/commands/git.ts +114 -0
- package/src/commands/index.ts +10 -0
- package/src/commands/layers.ts +211 -0
- package/src/commands/new.ts +99 -0
- package/src/commands/pageTree.ts +40 -0
- package/src/commands/shared.ts +35 -0
- package/src/commands/sync.ts +129 -0
- package/src/index.ts +21 -1
- package/src/internal/NodeLayers.ts +21 -0
- package/src/internal/frontmatter.ts +21 -0
- package/src/internal/gitCommands.ts +229 -0
- package/src/internal/hashUtils.ts +65 -3
- package/src/internal/oauthServer.ts +199 -0
- package/src/internal/pathUtils.ts +34 -17
- package/src/internal/tokenStorage.ts +240 -0
- package/src/internal/userCache.ts +90 -0
- package/src/parsers/ConfluenceParser.ts +950 -0
- package/src/parsers/MarkdownParser.ts +1198 -0
- package/src/parsers/index.ts +8 -0
- package/src/schemas/ConfluenceSchema.ts +56 -0
- package/src/schemas/ConversionSchema.ts +318 -0
- package/src/schemas/MarkdownSchema.ts +56 -0
- package/src/schemas/hast/HastFromHtml.ts +153 -0
- package/src/schemas/hast/HastSchema.ts +274 -0
- package/src/schemas/hast/index.ts +35 -0
- package/src/schemas/index.ts +20 -0
- package/src/schemas/mdast/MdastFromMarkdown.ts +118 -0
- package/src/schemas/mdast/MdastSchema.ts +566 -0
- package/src/schemas/mdast/index.ts +59 -0
- package/src/schemas/mdast/mdastToString.ts +102 -0
- package/src/schemas/nodes/block/BlockSchema.ts +773 -0
- package/src/schemas/nodes/block/index.ts +13 -0
- package/src/schemas/nodes/index.ts +20 -0
- package/src/schemas/nodes/inline/InlineSchema.ts +523 -0
- package/src/schemas/nodes/inline/index.ts +14 -0
- package/src/schemas/nodes/macro/MacroSchema.ts +226 -0
- package/src/schemas/nodes/macro/index.ts +6 -0
- package/src/schemas/preprocessing/ConfluencePreprocessor.ts +446 -0
- package/src/schemas/preprocessing/index.ts +8 -0
- package/src/serializers/ConfluenceSerializer.ts +717 -0
- package/src/serializers/MarkdownSerializer.ts +493 -0
- package/src/serializers/index.ts +8 -0
- package/test/GitService.test.ts +209 -0
- package/test/MarkdownConverter.test.ts +37 -3
- package/test/Schemas.test.ts +97 -2
- package/test/ast/BlockNode.test.ts +265 -0
- package/test/ast/Document.test.ts +126 -0
- package/test/ast/InlineNode.test.ts +161 -0
- package/test/fixtures/integration-test.html.fixture +103 -0
- package/test/fixtures/integration-test.md.expected +257 -0
- package/test/integration.test.ts +269 -0
- package/test/oauthServer.test.ts +50 -0
- package/test/parsers/ConfluenceParser.test.ts +283 -0
- package/test/schemas/ConfluencePreprocessor.test.ts +180 -0
- package/test/schemas/ConversionSchema.test.ts +159 -0
- package/test/schemas/HastSchema.test.ts +138 -0
- package/test/schemas/MdastSchema.test.ts +145 -0
- package/test/schemas/nodes/block/BlockSchema.test.ts +173 -0
- package/test/schemas/nodes/inline/InlineSchema.test.ts +198 -0
- package/test/schemas/nodes/macro/MacroSchema.test.ts +142 -0
- package/test/tokenStorage.test.ts +99 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync commands (pull, push, status) for Confluence CLI.
|
|
3
|
+
*/
|
|
4
|
+
import { Command, Options } from "@effect/cli";
|
|
5
|
+
import * as Console from "effect/Console";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import { GitService } from "../GitService.js";
|
|
8
|
+
import { SyncEngine } from "../SyncEngine.js";
|
|
9
|
+
// === Pull command ===
|
|
10
|
+
const forceOption = Options.boolean("force").pipe(Options.withAlias("f"), Options.withDescription("Overwrite local changes"));
|
|
11
|
+
const replayHistoryOption = Options.boolean("replay-history").pipe(Options.withDescription("Replay version history as individual git commits"));
|
|
12
|
+
export const pullCommand = Command.make("pull", { force: forceOption, replayHistory: replayHistoryOption }, ({ force, replayHistory }) => Effect.gen(function* () {
|
|
13
|
+
const engine = yield* SyncEngine;
|
|
14
|
+
yield* Console.log("Pulling pages from Confluence...");
|
|
15
|
+
const onProgress = (current, total, message) => {
|
|
16
|
+
process.stdout.write(`\r Replaying history: ${current}/${total} - ${message}`);
|
|
17
|
+
};
|
|
18
|
+
const result = yield* engine.pull({
|
|
19
|
+
force,
|
|
20
|
+
replayHistory,
|
|
21
|
+
...(replayHistory ? { onProgress } : {})
|
|
22
|
+
});
|
|
23
|
+
if (replayHistory) {
|
|
24
|
+
process.stdout.write("\r" + " ".repeat(80) + "\r");
|
|
25
|
+
}
|
|
26
|
+
yield* Console.log(`Pulled ${result.pulled} pages`);
|
|
27
|
+
if (result.commits > 0) {
|
|
28
|
+
yield* Console.log(`Created ${result.commits} git commits`);
|
|
29
|
+
}
|
|
30
|
+
if (result.errors.length > 0) {
|
|
31
|
+
yield* Console.error("Errors:", result.errors.join("\n"));
|
|
32
|
+
}
|
|
33
|
+
})).pipe(Command.withDescription("Download pages from Confluence to local markdown"));
|
|
34
|
+
// === Push command ===
|
|
35
|
+
const dryRunOption = Options.boolean("dry-run").pipe(Options.withAlias("n"), Options.withDescription("Show changes without applying"));
|
|
36
|
+
export const pushCommand = Command.make("push", { dryRun: dryRunOption }, ({ dryRun }) => Effect.gen(function* () {
|
|
37
|
+
const engine = yield* SyncEngine;
|
|
38
|
+
const git = yield* GitService;
|
|
39
|
+
// Check for uncommitted changes
|
|
40
|
+
const gitStatus = yield* git.status();
|
|
41
|
+
if (gitStatus.hasChanges) {
|
|
42
|
+
yield* Console.log("Uncommitted changes detected. Run 'confluence commit' first.");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
yield* Console.log(dryRun ? "Dry run - showing changes..." : "Pushing changes to Confluence...");
|
|
46
|
+
const result = yield* engine.push({ dryRun });
|
|
47
|
+
if (result.pushed === 0 && result.created === 0 && result.deleted === 0) {
|
|
48
|
+
yield* Console.log("Nothing to push");
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
yield* Console.log(`Pushed: ${result.pushed}, Created: ${result.created}, Deleted: ${result.deleted}`);
|
|
52
|
+
}
|
|
53
|
+
if (result.errors.length > 0) {
|
|
54
|
+
yield* Console.error("Errors:", result.errors.join("\n"));
|
|
55
|
+
}
|
|
56
|
+
})).pipe(Command.withDescription("Upload local markdown changes to Confluence"));
|
|
57
|
+
// === Status command ===
|
|
58
|
+
export const statusCommand = Command.make("status", {}, () => Effect.gen(function* () {
|
|
59
|
+
const engine = yield* SyncEngine;
|
|
60
|
+
const git = yield* GitService;
|
|
61
|
+
// Show git status
|
|
62
|
+
const gitInit = yield* git.isInitialized();
|
|
63
|
+
if (gitInit) {
|
|
64
|
+
const gitStatus = yield* git.status();
|
|
65
|
+
const commitCount = yield* git.log({ n: 1 }).pipe(Effect.map((commits) => commits.length > 0 ? "has commits" : "no commits"), Effect.catchAll(() => Effect.succeed("unknown")));
|
|
66
|
+
yield* Console.log(`Git: initialized (${commitCount})`);
|
|
67
|
+
if (gitStatus.hasChanges) {
|
|
68
|
+
const staged = gitStatus.entries.filter((e) => e.staged).length;
|
|
69
|
+
const unstaged = gitStatus.entries.filter((e) => !e.staged).length;
|
|
70
|
+
yield* Console.log(` Changes: ${staged} staged, ${unstaged} unstaged`);
|
|
71
|
+
}
|
|
72
|
+
if (gitStatus.hasConflicts) {
|
|
73
|
+
yield* Console.log(` Conflicts: ${gitStatus.conflictedFiles.length} files`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
yield* Console.log("Git: not initialized (run 'confluence git init')");
|
|
78
|
+
}
|
|
79
|
+
const result = yield* engine.status();
|
|
80
|
+
yield* Console.log(`
|
|
81
|
+
Sync Status:
|
|
82
|
+
Synced: ${result.synced}
|
|
83
|
+
Local Modified: ${result.localModified}
|
|
84
|
+
Remote Modified: ${result.remoteModified}
|
|
85
|
+
Conflicts: ${result.conflicts}
|
|
86
|
+
Local Only: ${result.localOnly}
|
|
87
|
+
Remote Only: ${result.remoteOnly}
|
|
88
|
+
`);
|
|
89
|
+
if (result.files.length > 0 && result.synced < result.files.length) {
|
|
90
|
+
yield* Console.log("Changed files:");
|
|
91
|
+
for (const file of result.files) {
|
|
92
|
+
if (file._tag !== "Synced" && file._tag !== "RemoteOnly") {
|
|
93
|
+
yield* Console.log(` [${file._tag}] ${file.path}`);
|
|
94
|
+
}
|
|
95
|
+
else if (file._tag === "RemoteOnly") {
|
|
96
|
+
yield* Console.log(` [${file._tag}] ${file.page.title}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
})).pipe(Command.withDescription("Show sync status"));
|
|
101
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,11 +6,20 @@
|
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
8
|
export * from "./Brand.js";
|
|
9
|
+
export { ConfluenceAuth, type ConfluenceAuthService, layer as ConfluenceAuthLayer } from "./ConfluenceAuth.js";
|
|
9
10
|
export { ConfluenceClient, type ConfluenceClientConfig, type CreatePageRequest, layer as ConfluenceClientLayer, type UpdatePageRequest } from "./ConfluenceClient.js";
|
|
10
11
|
export { ConfluenceConfig, createConfigFile, layer as ConfluenceConfigLayer, layerFromValues as ConfluenceConfigLayerFromValues } from "./ConfluenceConfig.js";
|
|
11
12
|
export * from "./ConfluenceError.js";
|
|
12
13
|
export { layer as LocalFileSystemLayer, type LocalFile, LocalFileSystem } from "./LocalFileSystem.js";
|
|
13
14
|
export { layer as MarkdownConverterLayer, MarkdownConverter } from "./MarkdownConverter.js";
|
|
14
15
|
export * from "./Schemas.js";
|
|
15
|
-
export { layer as SyncEngineLayer, type PullResult, type PushResult, type StatusResult, SyncEngine, type
|
|
16
|
+
export { layer as SyncEngineLayer, type ProgressCallback, type PullOptions, type PullResult, type PushResult, type StatusResult, SyncEngine, type SyncStatus } from "./SyncEngine.js";
|
|
17
|
+
export * from "./ast/index.js";
|
|
18
|
+
export { parseConfluenceHtml } from "./parsers/ConfluenceParser.js";
|
|
19
|
+
export { parseMarkdown } from "./parsers/MarkdownParser.js";
|
|
20
|
+
export { serializeToConfluence } from "./serializers/ConfluenceSerializer.js";
|
|
21
|
+
export { serializeToMarkdown } from "./serializers/MarkdownSerializer.js";
|
|
22
|
+
export { DocumentFromConfluence } from "./schemas/ConfluenceSchema.js";
|
|
23
|
+
export { DocumentFromMarkdown } from "./schemas/MarkdownSchema.js";
|
|
24
|
+
export { MigrationError, ParseError, SerializeError } from "./SchemaConverterError.js";
|
|
16
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,IAAI,qBAAqB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,IAAI,qBAAqB,EAC9B,eAAe,IAAI,+BAA+B,EACnD,MAAM,uBAAuB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACrG,OAAO,EAAE,KAAK,IAAI,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,KAAK,IAAI,eAAe,EACxB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,UAAU,EACV,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9G,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,IAAI,qBAAqB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,IAAI,qBAAqB,EAC9B,eAAe,IAAI,+BAA+B,EACnD,MAAM,uBAAuB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACrG,OAAO,EAAE,KAAK,IAAI,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,KAAK,IAAI,eAAe,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,UAAU,EACV,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAA;AAGxB,cAAc,gBAAgB,CAAA;AAG9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAGzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
8
|
export * from "./Brand.js";
|
|
9
|
+
export { ConfluenceAuth, layer as ConfluenceAuthLayer } from "./ConfluenceAuth.js";
|
|
9
10
|
export { ConfluenceClient, layer as ConfluenceClientLayer } from "./ConfluenceClient.js";
|
|
10
11
|
export { ConfluenceConfig, createConfigFile, layer as ConfluenceConfigLayer, layerFromValues as ConfluenceConfigLayerFromValues } from "./ConfluenceConfig.js";
|
|
11
12
|
export * from "./ConfluenceError.js";
|
|
@@ -13,4 +14,17 @@ export { layer as LocalFileSystemLayer, LocalFileSystem } from "./LocalFileSyste
|
|
|
13
14
|
export { layer as MarkdownConverterLayer, MarkdownConverter } from "./MarkdownConverter.js";
|
|
14
15
|
export * from "./Schemas.js";
|
|
15
16
|
export { layer as SyncEngineLayer, SyncEngine } from "./SyncEngine.js";
|
|
17
|
+
// AST types
|
|
18
|
+
export * from "./ast/index.js";
|
|
19
|
+
// Parsers
|
|
20
|
+
export { parseConfluenceHtml } from "./parsers/ConfluenceParser.js";
|
|
21
|
+
export { parseMarkdown } from "./parsers/MarkdownParser.js";
|
|
22
|
+
// Serializers
|
|
23
|
+
export { serializeToConfluence } from "./serializers/ConfluenceSerializer.js";
|
|
24
|
+
export { serializeToMarkdown } from "./serializers/MarkdownSerializer.js";
|
|
25
|
+
// Bi-directional schemas
|
|
26
|
+
export { DocumentFromConfluence } from "./schemas/ConfluenceSchema.js";
|
|
27
|
+
export { DocumentFromMarkdown } from "./schemas/MarkdownSchema.js";
|
|
28
|
+
// Schema converter errors
|
|
29
|
+
export { MigrationError, ParseError, SerializeError } from "./SchemaConverterError.js";
|
|
16
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,gBAAgB,EAGhB,KAAK,IAAI,qBAAqB,EAE/B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,IAAI,qBAAqB,EAC9B,eAAe,IAAI,+BAA+B,EACnD,MAAM,uBAAuB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACrG,OAAO,EAAE,KAAK,IAAI,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,KAAK,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,cAAc,EAA8B,KAAK,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9G,OAAO,EACL,gBAAgB,EAGhB,KAAK,IAAI,qBAAqB,EAE/B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,IAAI,qBAAqB,EAC9B,eAAe,IAAI,+BAA+B,EACnD,MAAM,uBAAuB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACrG,OAAO,EAAE,KAAK,IAAI,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC3F,cAAc,cAAc,CAAA;AAC5B,OAAO,EACL,KAAK,IAAI,eAAe,EAMxB,UAAU,EAEX,MAAM,iBAAiB,CAAA;AAExB,YAAY;AACZ,cAAc,gBAAgB,CAAA;AAE9B,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,yBAAyB;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Server factory layer using Node.js http module.
|
|
3
|
+
*
|
|
4
|
+
* @category Layers
|
|
5
|
+
*/
|
|
6
|
+
export declare const HttpServerFactoryLive: import("effect/Layer").Layer<import("./oauthServer.js").HttpServerFactoryTag, never, never>;
|
|
7
|
+
//# sourceMappingURL=NodeLayers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeLayers.d.ts","sourceRoot":"","sources":["../../src/internal/NodeLayers.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,6FAEjC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js-specific layer implementations.
|
|
3
|
+
*
|
|
4
|
+
* This is the ONLY file that should import directly from node:* modules.
|
|
5
|
+
* All other code should use Effect platform abstractions.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
import * as NodeHttpServer from "@effect/platform-node/NodeHttpServer";
|
|
11
|
+
import { createServer } from "node:http";
|
|
12
|
+
import { makeHttpServerFactory } from "./oauthServer.js";
|
|
13
|
+
/**
|
|
14
|
+
* HTTP Server factory layer using Node.js http module.
|
|
15
|
+
*
|
|
16
|
+
* @category Layers
|
|
17
|
+
*/
|
|
18
|
+
export const HttpServerFactoryLive = makeHttpServerFactory((port) => NodeHttpServer.layerServer(createServer, { port }));
|
|
19
|
+
//# sourceMappingURL=NodeLayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeLayers.js","sourceRoot":"","sources":["../../src/internal/NodeLayers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CACxD,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAC7D,CAAA"}
|
|
@@ -35,4 +35,14 @@ export declare const parseMarkdown: (filePath: string, content: string) => Effec
|
|
|
35
35
|
* @internal
|
|
36
36
|
*/
|
|
37
37
|
export declare const serializeMarkdown: (frontMatter: PageFrontMatter, content: string) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Serialize a new page markdown with minimal front-matter.
|
|
40
|
+
*
|
|
41
|
+
* @param frontMatter - The new page front-matter (title only)
|
|
42
|
+
* @param content - The markdown content
|
|
43
|
+
* @returns The serialized markdown file content
|
|
44
|
+
*
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export declare const serializeNewPageMarkdown: (frontMatter: NewPageFrontMatter, content: string) => string;
|
|
38
48
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAGxE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI,CAAA;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAqC7C,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,aAAa,eAAe,EAC5B,SAAS,MAAM,KACd,MAYF,CAAA"}
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAGxE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI,CAAA;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAqC7C,CAAA;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,aAAa,eAAe,EAC5B,SAAS,MAAM,KACd,MAYF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,kBAAkB,EAC/B,SAAS,MAAM,KACd,MAOF,CAAA"}
|
|
@@ -66,4 +66,20 @@ export const serializeMarkdown = (frontMatter, content) => {
|
|
|
66
66
|
};
|
|
67
67
|
return matter.stringify(content, fm);
|
|
68
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* Serialize a new page markdown with minimal front-matter.
|
|
71
|
+
*
|
|
72
|
+
* @param frontMatter - The new page front-matter (title only)
|
|
73
|
+
* @param content - The markdown content
|
|
74
|
+
* @returns The serialized markdown file content
|
|
75
|
+
*
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export const serializeNewPageMarkdown = (frontMatter, content) => {
|
|
79
|
+
const fm = {
|
|
80
|
+
title: frontMatter.title,
|
|
81
|
+
...(frontMatter.parentId !== undefined ? { parentId: frontMatter.parentId } : {})
|
|
82
|
+
};
|
|
83
|
+
return matter.stringify(content, fm);
|
|
84
|
+
};
|
|
69
85
|
//# sourceMappingURL=frontmatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAW/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,OAAe,EACkC,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAClE,CAAC,CAAA;IAEF,iDAAiD;IACjD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAC9B,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACzF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,KAAK,EAAE,KAAK;KACb,CAAC,CAAC,EACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;IACnB,wCAAwC;IACxC,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,WAAW,EAAE,EAAwB;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC,EACH,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACzF,CACF,CACF,CAAA;IAED,OAAO,cAAc,CAAA;AACvB,CAAC,CAAC,CAAA;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAA4B,EAC5B,OAAe,EACP,EAAE;IACV,MAAM,EAAE,GAAG;QACT,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;QAC1C,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,WAAW,EAAE,WAAW,CAAC,WAAW;KACrC,CAAA;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACtC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type * as CommandExecutor from "@effect/platform/CommandExecutor";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { GitError, GitNotInstalledError } from "../GitError.js";
|
|
4
|
+
/**
|
|
5
|
+
* Git file status codes from `git status --porcelain`.
|
|
6
|
+
*/
|
|
7
|
+
export type GitFileStatus = "modified" | "added" | "deleted" | "renamed" | "copied" | "untracked" | "ignored" | "unmerged";
|
|
8
|
+
/**
|
|
9
|
+
* Parsed git status entry.
|
|
10
|
+
*/
|
|
11
|
+
export interface GitStatusEntry {
|
|
12
|
+
readonly status: GitFileStatus;
|
|
13
|
+
readonly path: string;
|
|
14
|
+
readonly staged: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parsed git log entry.
|
|
18
|
+
*/
|
|
19
|
+
export interface GitLogEntry {
|
|
20
|
+
readonly hash: string;
|
|
21
|
+
readonly author: string;
|
|
22
|
+
readonly email: string;
|
|
23
|
+
readonly date: Date;
|
|
24
|
+
readonly message: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Run a git command in the specified working directory.
|
|
28
|
+
*
|
|
29
|
+
* @param args - Git command arguments
|
|
30
|
+
* @param cwd - Working directory
|
|
31
|
+
* @returns Command output
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const runGit: (args: ReadonlyArray<string>, cwd: string) => Effect.Effect<string, GitError | GitNotInstalledError, CommandExecutor.CommandExecutor>;
|
|
36
|
+
/**
|
|
37
|
+
* Run a git command that may fail with exit code 1 (e.g., diff with no changes).
|
|
38
|
+
* Returns empty string on exit code 1.
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export declare const runGitAllowEmpty: (args: ReadonlyArray<string>, cwd: string) => Effect.Effect<string, GitError | GitNotInstalledError, CommandExecutor.CommandExecutor>;
|
|
43
|
+
/**
|
|
44
|
+
* Parse git status --porcelain output.
|
|
45
|
+
*
|
|
46
|
+
* @param output - Raw output from `git status --porcelain`
|
|
47
|
+
* @returns Parsed status entries
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export declare const parseGitStatus: (output: string) => ReadonlyArray<GitStatusEntry>;
|
|
52
|
+
/**
|
|
53
|
+
* Parse git log output with custom format.
|
|
54
|
+
*
|
|
55
|
+
* Uses format: hash<|>author<|>email<|>date<|>message
|
|
56
|
+
*
|
|
57
|
+
* @param output - Raw output from git log
|
|
58
|
+
* @returns Parsed log entries
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export declare const parseGitLog: (output: string) => ReadonlyArray<GitLogEntry>;
|
|
63
|
+
/**
|
|
64
|
+
* Git log format string for parseGitLog.
|
|
65
|
+
*
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
export declare const GIT_LOG_FORMAT = "%H<|>%an<|>%ae<|>%aI<|>%s";
|
|
69
|
+
/**
|
|
70
|
+
* Check if output indicates merge conflicts.
|
|
71
|
+
*
|
|
72
|
+
* @param statusOutput - Output from `git status --porcelain`
|
|
73
|
+
* @returns List of conflicted files
|
|
74
|
+
*
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
export declare const getConflictedFiles: (statusOutput: string) => ReadonlyArray<string>;
|
|
78
|
+
//# sourceMappingURL=gitCommands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitCommands.d.ts","sourceRoot":"","sources":["../../src/internal/gitCommands.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,eAAe,MAAM,kCAAkC,CAAA;AAExE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAE/D;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAoBD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GACjB,MAAM,aAAa,CAAC,MAAM,CAAC,EAC3B,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAarF,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,aAAa,CAAC,MAAM,CAAC,EAC3B,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAMtF,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,aAAa,CAAC,cAAc,CAkB3E,CAAA;AA4BD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,aAAa,CAAC,WAAW,CAkCrE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,8BAA8B,CAAA;AAEzD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,KAAG,aAAa,CAAC,MAAM,CAK7E,CAAA"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git shell command helpers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
import * as Command from "@effect/platform/Command";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as String from "effect/String";
|
|
10
|
+
import { GitError, GitNotInstalledError } from "../GitError.js";
|
|
11
|
+
/**
|
|
12
|
+
* Convert PlatformError to GitError or GitNotInstalledError.
|
|
13
|
+
*/
|
|
14
|
+
const mapPlatformError = (error, commandStr) => {
|
|
15
|
+
if (error._tag === "SystemError" && error.reason === "NotFound") {
|
|
16
|
+
return new GitNotInstalledError({
|
|
17
|
+
message: `Git not found: ${error.message}. Please install git.`
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return new GitError({
|
|
21
|
+
command: commandStr,
|
|
22
|
+
message: error.message
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Run a git command in the specified working directory.
|
|
27
|
+
*
|
|
28
|
+
* @param args - Git command arguments
|
|
29
|
+
* @param cwd - Working directory
|
|
30
|
+
* @returns Command output
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export const runGit = (args, cwd) => Effect.gen(function* () {
|
|
35
|
+
const command = Command.make("git", ...args).pipe(Command.workingDirectory(cwd));
|
|
36
|
+
const commandStr = `git ${args.join(" ")}`;
|
|
37
|
+
const result = yield* Command.string(command).pipe(Effect.mapError((error) => mapPlatformError(error, commandStr)));
|
|
38
|
+
return result;
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Run a git command that may fail with exit code 1 (e.g., diff with no changes).
|
|
42
|
+
* Returns empty string on exit code 1.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export const runGitAllowEmpty = (args, cwd) => runGit(args, cwd).pipe(Effect.catchIf((e) => e._tag === "GitError", () => Effect.succeed("")));
|
|
47
|
+
/**
|
|
48
|
+
* Parse git status --porcelain output.
|
|
49
|
+
*
|
|
50
|
+
* @param output - Raw output from `git status --porcelain`
|
|
51
|
+
* @returns Parsed status entries
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export const parseGitStatus = (output) => {
|
|
56
|
+
if (String.isEmpty(output.trim())) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
return output
|
|
60
|
+
.split("\n")
|
|
61
|
+
.filter((line) => line.length >= 3) // Valid lines have XY + space + path
|
|
62
|
+
.map((line) => {
|
|
63
|
+
const indexStatus = line[0] ?? " ";
|
|
64
|
+
const workTreeStatus = line[1] ?? " ";
|
|
65
|
+
const path = line.slice(3);
|
|
66
|
+
const staged = indexStatus !== " " && indexStatus !== "?";
|
|
67
|
+
const status = parseStatusCode(staged ? indexStatus : workTreeStatus);
|
|
68
|
+
return { status, path, staged };
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Parse a single status code character.
|
|
73
|
+
*/
|
|
74
|
+
const parseStatusCode = (code) => {
|
|
75
|
+
switch (code) {
|
|
76
|
+
case "M":
|
|
77
|
+
return "modified";
|
|
78
|
+
case "A":
|
|
79
|
+
return "added";
|
|
80
|
+
case "D":
|
|
81
|
+
return "deleted";
|
|
82
|
+
case "R":
|
|
83
|
+
return "renamed";
|
|
84
|
+
case "C":
|
|
85
|
+
return "copied";
|
|
86
|
+
case "?":
|
|
87
|
+
return "untracked";
|
|
88
|
+
case "!":
|
|
89
|
+
return "ignored";
|
|
90
|
+
case "U":
|
|
91
|
+
return "unmerged";
|
|
92
|
+
default:
|
|
93
|
+
return "modified";
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Parse git log output with custom format.
|
|
98
|
+
*
|
|
99
|
+
* Uses format: hash<|>author<|>email<|>date<|>message
|
|
100
|
+
*
|
|
101
|
+
* @param output - Raw output from git log
|
|
102
|
+
* @returns Parsed log entries
|
|
103
|
+
*
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
export const parseGitLog = (output) => {
|
|
107
|
+
if (String.isEmpty(output.trim())) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
return output
|
|
111
|
+
.trim()
|
|
112
|
+
.split("\n")
|
|
113
|
+
.flatMap((line) => {
|
|
114
|
+
const parts = line.split("<|>");
|
|
115
|
+
if (parts.length < 5) {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
const hash = parts[0];
|
|
119
|
+
const author = parts[1];
|
|
120
|
+
const email = parts[2];
|
|
121
|
+
const dateStr = parts[3];
|
|
122
|
+
const messageParts = parts.slice(4);
|
|
123
|
+
if (hash === undefined || author === undefined || email === undefined || dateStr === undefined) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
const message = messageParts.join("<|>");
|
|
127
|
+
return [{
|
|
128
|
+
hash: hash.trim(),
|
|
129
|
+
author: author.trim(),
|
|
130
|
+
email: email.trim(),
|
|
131
|
+
date: new Date(dateStr.trim()),
|
|
132
|
+
message: message.trim()
|
|
133
|
+
}];
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Git log format string for parseGitLog.
|
|
138
|
+
*
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
141
|
+
export const GIT_LOG_FORMAT = "%H<|>%an<|>%ae<|>%aI<|>%s";
|
|
142
|
+
/**
|
|
143
|
+
* Check if output indicates merge conflicts.
|
|
144
|
+
*
|
|
145
|
+
* @param statusOutput - Output from `git status --porcelain`
|
|
146
|
+
* @returns List of conflicted files
|
|
147
|
+
*
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
export const getConflictedFiles = (statusOutput) => {
|
|
151
|
+
const entries = parseGitStatus(statusOutput);
|
|
152
|
+
return entries
|
|
153
|
+
.filter((e) => e.status === "unmerged")
|
|
154
|
+
.map((e) => e.path);
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=gitCommands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitCommands.js","sourceRoot":"","sources":["../../src/internal/gitCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content hashing utilities for change detection.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
import * as Context from "effect/Context";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
1
10
|
import type { ContentHash } from "../Brand.js";
|
|
11
|
+
/**
|
|
12
|
+
* Hash computation service.
|
|
13
|
+
* This allows mocking in tests.
|
|
14
|
+
*
|
|
15
|
+
* @category Services
|
|
16
|
+
*/
|
|
17
|
+
export interface HashService {
|
|
18
|
+
readonly computeSha256: (content: string) => Effect.Effect<ContentHash>;
|
|
19
|
+
}
|
|
20
|
+
declare const HashServiceTag_base: Context.TagClass<HashServiceTag, "@knpkv/confluence-to-markdown/HashService", HashService>;
|
|
21
|
+
/**
|
|
22
|
+
* Tag for the HashService.
|
|
23
|
+
*
|
|
24
|
+
* @category Services
|
|
25
|
+
*/
|
|
26
|
+
export declare class HashServiceTag extends HashServiceTag_base {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a HashService layer from a hash function.
|
|
30
|
+
* This allows injecting platform-specific implementations.
|
|
31
|
+
*
|
|
32
|
+
* @param hashFn - Function that computes SHA256 hash
|
|
33
|
+
* @category Layers
|
|
34
|
+
*/
|
|
35
|
+
export declare const makeHashServiceLive: (hashFn: (content: string) => Promise<string>) => Layer.Layer<HashServiceTag>;
|
|
36
|
+
/**
|
|
37
|
+
* Default implementation using Web Crypto API (available in all modern runtimes).
|
|
38
|
+
*
|
|
39
|
+
* @category Layers
|
|
40
|
+
*/
|
|
41
|
+
export declare const HashServiceLive: Layer.Layer<HashServiceTag>;
|
|
2
42
|
/**
|
|
3
43
|
* Compute SHA256 hash of content.
|
|
4
44
|
*
|
|
@@ -7,5 +47,6 @@ import type { ContentHash } from "../Brand.js";
|
|
|
7
47
|
*
|
|
8
48
|
* @internal
|
|
9
49
|
*/
|
|
10
|
-
export declare const computeHash: (content: string) => ContentHash
|
|
50
|
+
export declare const computeHash: (content: string) => Effect.Effect<ContentHash, never, HashServiceTag>;
|
|
51
|
+
export {};
|
|
11
52
|
//# sourceMappingURL=hashUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashUtils.d.ts","sourceRoot":"","sources":["../../src/internal/hashUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hashUtils.d.ts","sourceRoot":"","sources":["../../src/internal/hashUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACxE;;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAEN;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,KAC3C,KAAK,CAAC,KAAK,CAAC,cAAc,CAS1B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAUvD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,CAI1F,CAAA"}
|
|
@@ -4,7 +4,40 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
import * as
|
|
7
|
+
import * as Context from "effect/Context";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
10
|
+
/**
|
|
11
|
+
* Tag for the HashService.
|
|
12
|
+
*
|
|
13
|
+
* @category Services
|
|
14
|
+
*/
|
|
15
|
+
export class HashServiceTag extends Context.Tag("@knpkv/confluence-to-markdown/HashService")() {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a HashService layer from a hash function.
|
|
19
|
+
* This allows injecting platform-specific implementations.
|
|
20
|
+
*
|
|
21
|
+
* @param hashFn - Function that computes SHA256 hash
|
|
22
|
+
* @category Layers
|
|
23
|
+
*/
|
|
24
|
+
export const makeHashServiceLive = (hashFn) => Layer.succeed(HashServiceTag, {
|
|
25
|
+
computeSha256: (content) => Effect.promise(() => hashFn(content)).pipe(Effect.map((hash) => hash))
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Default implementation using Web Crypto API (available in all modern runtimes).
|
|
29
|
+
*
|
|
30
|
+
* @category Layers
|
|
31
|
+
*/
|
|
32
|
+
export const HashServiceLive = makeHashServiceLive(async (content) => {
|
|
33
|
+
const encoder = new TextEncoder();
|
|
34
|
+
const data = encoder.encode(content);
|
|
35
|
+
const hashBuffer = await globalThis.crypto.subtle.digest("SHA-256", data);
|
|
36
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
37
|
+
return Array.from(hashArray)
|
|
38
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
39
|
+
.join("");
|
|
40
|
+
});
|
|
8
41
|
/**
|
|
9
42
|
* Compute SHA256 hash of content.
|
|
10
43
|
*
|
|
@@ -13,5 +46,8 @@ import * as crypto from "node:crypto";
|
|
|
13
46
|
*
|
|
14
47
|
* @internal
|
|
15
48
|
*/
|
|
16
|
-
export const computeHash = (content) =>
|
|
49
|
+
export const computeHash = (content) => Effect.gen(function* () {
|
|
50
|
+
const hashService = yield* HashServiceTag;
|
|
51
|
+
return yield* hashService.computeSha256(content);
|
|
52
|
+
});
|
|
17
53
|
//# sourceMappingURL=hashUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashUtils.js","sourceRoot":"","sources":["../../src/internal/hashUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"hashUtils.js","sourceRoot":"","sources":["../../src/internal/hashUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAarC;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAGzF;CAAG;AAEN;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAA4C,EACf,EAAE,CAC/B,KAAK,CAAC,OAAO,CACX,cAAc,EACd;IACE,aAAa,EAAE,CAAC,OAAe,EAAE,EAAE,CACjC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAmB,CAAC,CAC1C;CACJ,CACF,CAAA;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgC,mBAAmB,CAC7E,KAAK,EAAE,OAAe,EAAE,EAAE;IACxB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACzE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC,CACF,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAqD,EAAE,CAChG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IACzC,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA"}
|