pixotope-documentalist 1.0.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.
Files changed (58) hide show
  1. package/README.md +189 -0
  2. package/dist/config.d.ts +4 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +58 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +75 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/models/index.d.ts +64 -0
  11. package/dist/models/index.d.ts.map +1 -0
  12. package/dist/models/index.js +34 -0
  13. package/dist/models/index.js.map +1 -0
  14. package/dist/parser/commentExtractor.d.ts +12 -0
  15. package/dist/parser/commentExtractor.d.ts.map +1 -0
  16. package/dist/parser/commentExtractor.js +132 -0
  17. package/dist/parser/commentExtractor.js.map +1 -0
  18. package/dist/parser/fileScanner.d.ts +2 -0
  19. package/dist/parser/fileScanner.d.ts.map +1 -0
  20. package/dist/parser/fileScanner.js +48 -0
  21. package/dist/parser/fileScanner.js.map +1 -0
  22. package/dist/parser/index.d.ts +4 -0
  23. package/dist/parser/index.d.ts.map +1 -0
  24. package/dist/parser/index.js +10 -0
  25. package/dist/parser/index.js.map +1 -0
  26. package/dist/parser/tagParser.d.ts +9 -0
  27. package/dist/parser/tagParser.d.ts.map +1 -0
  28. package/dist/parser/tagParser.js +235 -0
  29. package/dist/parser/tagParser.js.map +1 -0
  30. package/dist/pipeline.d.ts +31 -0
  31. package/dist/pipeline.d.ts.map +1 -0
  32. package/dist/pipeline.js +147 -0
  33. package/dist/pipeline.js.map +1 -0
  34. package/dist/publisher/confluenceApi.d.ts +33 -0
  35. package/dist/publisher/confluenceApi.d.ts.map +1 -0
  36. package/dist/publisher/confluenceApi.js +131 -0
  37. package/dist/publisher/confluenceApi.js.map +1 -0
  38. package/dist/publisher/diff.d.ts +6 -0
  39. package/dist/publisher/diff.d.ts.map +1 -0
  40. package/dist/publisher/diff.js +54 -0
  41. package/dist/publisher/diff.js.map +1 -0
  42. package/dist/publisher/index.d.ts +3 -0
  43. package/dist/publisher/index.d.ts.map +1 -0
  44. package/dist/publisher/index.js +9 -0
  45. package/dist/publisher/index.js.map +1 -0
  46. package/dist/renderer/components.d.ts +9 -0
  47. package/dist/renderer/components.d.ts.map +1 -0
  48. package/dist/renderer/components.js +161 -0
  49. package/dist/renderer/components.js.map +1 -0
  50. package/dist/renderer/confluenceHtml.d.ts +6 -0
  51. package/dist/renderer/confluenceHtml.d.ts.map +1 -0
  52. package/dist/renderer/confluenceHtml.js +128 -0
  53. package/dist/renderer/confluenceHtml.js.map +1 -0
  54. package/dist/renderer/index.d.ts +3 -0
  55. package/dist/renderer/index.d.ts.map +1 -0
  56. package/dist/renderer/index.js +14 -0
  57. package/dist/renderer/index.js.map +1 -0
  58. package/package.json +42 -0
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.scanPath = scanPath;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const SUPPORTED_EXTENSIONS = new Set([
10
+ ".ts", ".tsx", ".js", ".jsx",
11
+ ".py",
12
+ ".h", ".cpp", ".hpp",
13
+ ]);
14
+ function scanPath(filePath) {
15
+ const resolved = path_1.default.resolve(filePath);
16
+ if (!fs_1.default.existsSync(resolved)) {
17
+ throw new Error(`Path not found: ${resolved}`);
18
+ }
19
+ const stat = fs_1.default.statSync(resolved);
20
+ if (stat.isFile()) {
21
+ return isSupportedFile(resolved) ? [resolved] : [];
22
+ }
23
+ if (stat.isDirectory()) {
24
+ return scanDirectory(resolved);
25
+ }
26
+ return [];
27
+ }
28
+ function scanDirectory(dirPath) {
29
+ const results = [];
30
+ const entries = fs_1.default.readdirSync(dirPath, { withFileTypes: true });
31
+ for (const entry of entries) {
32
+ const fullPath = path_1.default.join(dirPath, entry.name);
33
+ if (entry.isDirectory()) {
34
+ // Skip node_modules and hidden dirs
35
+ if (entry.name === "node_modules" || entry.name.startsWith("."))
36
+ continue;
37
+ results.push(...scanDirectory(fullPath));
38
+ }
39
+ else if (entry.isFile() && isSupportedFile(fullPath)) {
40
+ results.push(fullPath);
41
+ }
42
+ }
43
+ return results;
44
+ }
45
+ function isSupportedFile(filePath) {
46
+ return SUPPORTED_EXTENSIONS.has(path_1.default.extname(filePath).toLowerCase());
47
+ }
48
+ //# sourceMappingURL=fileScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileScanner.js","sourceRoot":"","sources":["../../src/parser/fileScanner.ts"],"names":[],"mappings":";;;;;AASA,4BAkBC;AA3BD,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC5B,KAAK;IACL,IAAI,EAAE,MAAM,EAAE,MAAM;CACrB,CAAC,CAAC;AAEH,SAAgB,QAAQ,CAAC,QAAgB;IACvC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,oCAAoC;YACpC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,oBAAoB,CAAC,GAAG,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { scanPath } from "./fileScanner";
2
+ export { extractDocBlocks, RawDocBlock } from "./commentExtractor";
3
+ export { blocksToDocument } from "./tagParser";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blocksToDocument = exports.extractDocBlocks = exports.scanPath = void 0;
4
+ var fileScanner_1 = require("./fileScanner");
5
+ Object.defineProperty(exports, "scanPath", { enumerable: true, get: function () { return fileScanner_1.scanPath; } });
6
+ var commentExtractor_1 = require("./commentExtractor");
7
+ Object.defineProperty(exports, "extractDocBlocks", { enumerable: true, get: function () { return commentExtractor_1.extractDocBlocks; } });
8
+ var tagParser_1 = require("./tagParser");
9
+ Object.defineProperty(exports, "blocksToDocument", { enumerable: true, get: function () { return tagParser_1.blocksToDocument; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,uDAAmE;AAA1D,oHAAA,gBAAgB,OAAA;AACzB,yCAA+C;AAAtC,6GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,9 @@
1
+ import { Document } from "../models";
2
+ import { RawDocBlock } from "./commentExtractor";
3
+ /**
4
+ * Convert a set of doc blocks into a Document.
5
+ * Each block with @api becomes an endpoint.
6
+ * @group tags create new groups; endpoints after a @group belong to it.
7
+ */
8
+ export declare function blocksToDocument(blocks: RawDocBlock[], title?: string): Document;
9
+ //# sourceMappingURL=tagParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagParser.d.ts","sourceRoot":"","sources":["../../src/parser/tagParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,QAAQ,EAIT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuKjD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,GAAE,MAAW,GAAG,QAAQ,CAyFpF"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blocksToDocument = blocksToDocument;
4
+ const models_1 = require("../models");
5
+ /**
6
+ * Parse raw lines from a doc block into structured tags.
7
+ * Tags start with @tagname and their content continues until the next @tag.
8
+ */
9
+ function parseTagsFromLines(lines) {
10
+ const tags = [];
11
+ let currentTag = null;
12
+ for (const line of lines) {
13
+ const trimmed = line.trim();
14
+ const tagMatch = trimmed.match(/^@(\w+)\s*(.*)/);
15
+ if (tagMatch) {
16
+ // Flush previous tag
17
+ if (currentTag) {
18
+ tags.push(currentTag);
19
+ }
20
+ currentTag = {
21
+ name: tagMatch[1].toLowerCase(),
22
+ rawContent: tagMatch[2] || "",
23
+ };
24
+ }
25
+ else if (currentTag) {
26
+ // Continuation line — append to current tag
27
+ currentTag.rawContent += "\n" + trimmed;
28
+ }
29
+ }
30
+ // Flush last tag
31
+ if (currentTag) {
32
+ tags.push(currentTag);
33
+ }
34
+ return tags;
35
+ }
36
+ /**
37
+ * Parse a @param or @returns tag content.
38
+ * Format: {type} Name - Description
39
+ * Or: {type} [Name=default] - Description
40
+ */
41
+ function parseParamContent(rawContent) {
42
+ const content = rawContent.trim();
43
+ let type = "";
44
+ let remaining = content;
45
+ // Extract {type}
46
+ const typeMatch = content.match(/^\{([^}]+)\}\s*/);
47
+ if (typeMatch) {
48
+ type = typeMatch[1];
49
+ remaining = content.slice(typeMatch[0].length);
50
+ }
51
+ // Check for optional [Name] or [Name=default]
52
+ let optional = false;
53
+ let defaultValue;
54
+ let name = "";
55
+ let description = "";
56
+ const optionalMatch = remaining.match(/^\[([^\]]+)\]\s*(?:-\s*)?/);
57
+ if (optionalMatch) {
58
+ optional = true;
59
+ const inner = optionalMatch[1];
60
+ const eqIndex = inner.indexOf("=");
61
+ if (eqIndex !== -1) {
62
+ name = inner.slice(0, eqIndex);
63
+ defaultValue = inner.slice(eqIndex + 1);
64
+ }
65
+ else {
66
+ name = inner;
67
+ }
68
+ description = remaining.slice(optionalMatch[0].length).trim();
69
+ }
70
+ else {
71
+ // Required param: Name - Description
72
+ const dashIndex = remaining.indexOf(" - ");
73
+ if (dashIndex !== -1) {
74
+ name = remaining.slice(0, dashIndex).trim();
75
+ description = remaining.slice(dashIndex + 3).trim();
76
+ }
77
+ else {
78
+ // No description separator — entire thing is the name
79
+ name = remaining.trim();
80
+ }
81
+ }
82
+ // Clean up multiline descriptions
83
+ description = description.replace(/\n/g, " ").trim();
84
+ const param = { name, type, description, optional };
85
+ if (defaultValue !== undefined) {
86
+ param.default = defaultValue;
87
+ }
88
+ return param;
89
+ }
90
+ /**
91
+ * Parse @example tag content.
92
+ * First line is the title/description.
93
+ * Lines starting with >>> are request messages.
94
+ * Lines starting with <<< are response messages.
95
+ * Other lines are appended to the last category.
96
+ */
97
+ function parseExampleContent(rawContent) {
98
+ const lines = rawContent.split("\n");
99
+ const description = lines[0]?.trim() || "";
100
+ const request = [];
101
+ const response = [];
102
+ for (let i = 1; i < lines.length; i++) {
103
+ const line = lines[i].trim();
104
+ if (!line)
105
+ continue;
106
+ if (line.startsWith(">>>")) {
107
+ request.push(line.slice(3).trim());
108
+ }
109
+ else if (line.startsWith("<<<")) {
110
+ response.push(line.slice(3).trim());
111
+ }
112
+ else {
113
+ // Continuation of previous category
114
+ if (response.length > 0) {
115
+ response[response.length - 1] += " " + line;
116
+ }
117
+ else if (request.length > 0) {
118
+ request[request.length - 1] += " " + line;
119
+ }
120
+ }
121
+ }
122
+ return { description, request, response };
123
+ }
124
+ /**
125
+ * Parse @value tag content into a Value tree node.
126
+ * Format: {type} Name - Description
127
+ * Dot notation: Name.Child.Grandchild
128
+ */
129
+ function parseValueContent(rawContent) {
130
+ const content = rawContent.trim();
131
+ let type = "";
132
+ let remaining = content;
133
+ const typeMatch = content.match(/^\{([^}]+)\}\s*/);
134
+ if (typeMatch) {
135
+ type = typeMatch[1];
136
+ remaining = content.slice(typeMatch[0].length);
137
+ }
138
+ let name = "";
139
+ let description = "";
140
+ const dashIndex = remaining.indexOf(" - ");
141
+ if (dashIndex !== -1) {
142
+ name = remaining.slice(0, dashIndex).trim();
143
+ description = remaining.slice(dashIndex + 3).trim();
144
+ }
145
+ else {
146
+ name = remaining.trim();
147
+ }
148
+ description = description.replace(/\n/g, " ").trim();
149
+ return { name, type, description, children: [] };
150
+ }
151
+ /**
152
+ * Convert a set of doc blocks into a Document.
153
+ * Each block with @api becomes an endpoint.
154
+ * @group tags create new groups; endpoints after a @group belong to it.
155
+ */
156
+ function blocksToDocument(blocks, title = "") {
157
+ const doc = (0, models_1.createDocument)(title);
158
+ let currentGroupIndex = 0;
159
+ for (const block of blocks) {
160
+ const tags = parseTagsFromLines(block.lines);
161
+ // Check if this block is a standalone @group tag
162
+ const groupTag = tags.find((t) => t.name === "group");
163
+ const apiTag = tags.find((t) => t.name === "api");
164
+ if (groupTag && !apiTag) {
165
+ // Standalone group — create a new group section
166
+ const group = (0, models_1.createGroup)(groupTag.rawContent.trim());
167
+ // Check for description tag in same block
168
+ const descTag = tags.find((t) => t.name === "description");
169
+ if (descTag) {
170
+ group.description = descTag.rawContent.replace(/\n/g, " ").trim();
171
+ }
172
+ currentGroupIndex = doc.groups.length;
173
+ doc.groups.push(group);
174
+ continue;
175
+ }
176
+ if (!apiTag)
177
+ continue;
178
+ // This block defines an endpoint
179
+ const endpointName = apiTag.rawContent.trim();
180
+ // Determine kind
181
+ const kindTag = tags.find((t) => t.name === "kind");
182
+ const kind = kindTag?.rawContent.trim() || "call";
183
+ const endpoint = (0, models_1.createEndpoint)(endpointName, kind);
184
+ // If this block also has @group, create a new group first
185
+ if (groupTag) {
186
+ const group = (0, models_1.createGroup)(groupTag.rawContent.trim());
187
+ currentGroupIndex = doc.groups.length;
188
+ doc.groups.push(group);
189
+ }
190
+ // Process all tags
191
+ for (const tag of tags) {
192
+ switch (tag.name) {
193
+ case "description":
194
+ endpoint.description = tag.rawContent.replace(/\n/g, " ").trim();
195
+ break;
196
+ case "param":
197
+ endpoint.params.push(parseParamContent(tag.rawContent));
198
+ break;
199
+ case "returns":
200
+ endpoint.returns.push(parseParamContent(tag.rawContent));
201
+ break;
202
+ case "example":
203
+ endpoint.examples.push(parseExampleContent(tag.rawContent));
204
+ break;
205
+ case "warning":
206
+ endpoint.warnings.push(tag.rawContent.replace(/\n/g, " ").trim());
207
+ break;
208
+ case "since":
209
+ endpoint.since = tag.rawContent.trim();
210
+ break;
211
+ case "deprecated":
212
+ endpoint.deprecated = tag.rawContent.replace(/\n/g, " ").trim();
213
+ break;
214
+ case "internal":
215
+ endpoint.internal = true;
216
+ break;
217
+ case "value": {
218
+ const value = parseValueContent(tag.rawContent);
219
+ doc.groups[currentGroupIndex].values.push(value);
220
+ break;
221
+ }
222
+ }
223
+ }
224
+ // Skip internal endpoints
225
+ if (!endpoint.internal) {
226
+ doc.groups[currentGroupIndex].endpoints.push(endpoint);
227
+ }
228
+ }
229
+ // Remove empty default group if others exist
230
+ if (doc.groups.length > 1 && doc.groups[0].endpoints.length === 0 && doc.groups[0].values.length === 0) {
231
+ doc.groups.shift();
232
+ }
233
+ return doc;
234
+ }
235
+ //# sourceMappingURL=tagParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagParser.js","sourceRoot":"","sources":["../../src/parser/tagParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Config, Document, DocumentConfig } from "./models";
2
+ export interface PipelineOptions {
3
+ config: Config;
4
+ configDir: string;
5
+ document?: string;
6
+ target: "master" | "release";
7
+ version: string;
8
+ verbose: boolean;
9
+ }
10
+ /**
11
+ * Parse source files for a single document config entry.
12
+ * Returns the intermediate Document model.
13
+ */
14
+ export declare function parseDocument(docConfig: DocumentConfig, config: Config, configDir: string, verbose: boolean): Document;
15
+ /**
16
+ * Parse command: parse source files and output JSON.
17
+ */
18
+ export declare function runParse(options: PipelineOptions): void;
19
+ /**
20
+ * Preview command: parse + render to HTML files.
21
+ */
22
+ export declare function runPreview(options: PipelineOptions): void;
23
+ /**
24
+ * Publish command: parse + render + upload to Confluence.
25
+ */
26
+ export declare function runPublish(options: PipelineOptions): Promise<void>;
27
+ /**
28
+ * Diff command: show what would change without publishing.
29
+ */
30
+ export declare function runDiff(options: PipelineOptions): Promise<void>;
31
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM5D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,QAAQ,CA+BV;AAsBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA6BvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAoBzD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCxE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrE"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseDocument = parseDocument;
7
+ exports.runParse = runParse;
8
+ exports.runPreview = runPreview;
9
+ exports.runPublish = runPublish;
10
+ exports.runDiff = runDiff;
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const config_1 = require("./config");
14
+ const parser_1 = require("./parser");
15
+ const renderer_1 = require("./renderer");
16
+ const publisher_1 = require("./publisher");
17
+ /**
18
+ * Parse source files for a single document config entry.
19
+ * Returns the intermediate Document model.
20
+ */
21
+ function parseDocument(docConfig, config, configDir, verbose) {
22
+ const allBlocks = [];
23
+ for (const source of docConfig.sources) {
24
+ const resolvedPath = (0, config_1.resolveSourcePath)(config.source_root, source.path, configDir);
25
+ if (verbose) {
26
+ console.log(` Scanning: ${resolvedPath}`);
27
+ }
28
+ const files = (0, parser_1.scanPath)(resolvedPath);
29
+ for (const file of files) {
30
+ if (verbose) {
31
+ console.log(` Parsing: ${file}`);
32
+ }
33
+ const blocks = (0, parser_1.extractDocBlocks)(file);
34
+ allBlocks.push(...blocks);
35
+ if (verbose && blocks.length > 0) {
36
+ console.log(` Found ${blocks.length} doc block(s)`);
37
+ }
38
+ }
39
+ }
40
+ const doc = (0, parser_1.blocksToDocument)(allBlocks, docConfig.title);
41
+ doc.version = config.source_root;
42
+ doc.confluenceId =
43
+ docConfig.confluenceId.master; // Default, overridden by target
44
+ return doc;
45
+ }
46
+ /**
47
+ * Get the list of document configs to process (all or filtered by --document).
48
+ */
49
+ function getDocConfigs(config, documentFilter) {
50
+ if (documentFilter) {
51
+ const found = config.documents.filter((d) => d.id === documentFilter);
52
+ if (found.length === 0) {
53
+ const available = config.documents.map((d) => d.id).join(", ");
54
+ throw new Error(`Document "${documentFilter}" not found. Available: ${available}`);
55
+ }
56
+ return found;
57
+ }
58
+ return config.documents;
59
+ }
60
+ /**
61
+ * Parse command: parse source files and output JSON.
62
+ */
63
+ function runParse(options) {
64
+ const docConfigs = getDocConfigs(options.config, options.document);
65
+ for (const docConfig of docConfigs) {
66
+ console.log(`\nParsing: ${docConfig.title}`);
67
+ const doc = parseDocument(docConfig, options.config, options.configDir, options.verbose);
68
+ // Count endpoints
69
+ let endpointCount = 0;
70
+ for (const group of doc.groups) {
71
+ endpointCount += group.endpoints.length;
72
+ }
73
+ console.log(` Found ${doc.groups.length} group(s), ${endpointCount} endpoint(s)`);
74
+ // Output JSON
75
+ const outputDir = path_1.default.resolve(options.configDir, "output", "collected");
76
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
77
+ const outputPath = path_1.default.join(outputDir, `${docConfig.id}.json`);
78
+ fs_1.default.writeFileSync(outputPath, JSON.stringify(doc, null, 2), "utf-8");
79
+ console.log(` Saved JSON: ${outputPath}`);
80
+ }
81
+ }
82
+ /**
83
+ * Preview command: parse + render to HTML files.
84
+ */
85
+ function runPreview(options) {
86
+ const docConfigs = getDocConfigs(options.config, options.document);
87
+ for (const docConfig of docConfigs) {
88
+ console.log(`\nProcessing: ${docConfig.title}`);
89
+ const doc = parseDocument(docConfig, options.config, options.configDir, options.verbose);
90
+ const html = (0, renderer_1.renderDocument)(doc);
91
+ // Save HTML
92
+ const outputDir = path_1.default.resolve(options.configDir, "output", "formatted");
93
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
94
+ const outputPath = path_1.default.join(outputDir, `${docConfig.id}.html`);
95
+ fs_1.default.writeFileSync(outputPath, html, "utf-8");
96
+ console.log(` Saved HTML: ${outputPath}`);
97
+ }
98
+ }
99
+ /**
100
+ * Publish command: parse + render + upload to Confluence.
101
+ */
102
+ async function runPublish(options) {
103
+ const client = (0, publisher_1.createClientFromEnv)(options.config.confluence.base_url);
104
+ const docConfigs = getDocConfigs(options.config, options.document);
105
+ for (const docConfig of docConfigs) {
106
+ console.log(`\nPublishing: ${docConfig.title}`);
107
+ const doc = parseDocument(docConfig, options.config, options.configDir, options.verbose);
108
+ const html = (0, renderer_1.renderDocument)(doc);
109
+ const confluenceId = options.target === "release"
110
+ ? docConfig.confluenceId.release
111
+ : docConfig.confluenceId.master;
112
+ if (!confluenceId) {
113
+ console.log(` Skipped: no ${options.target} confluence_id configured`);
114
+ continue;
115
+ }
116
+ const result = await client.publish(confluenceId, docConfig.title, html);
117
+ if (result.success) {
118
+ console.log(` ${result.message}`);
119
+ }
120
+ else {
121
+ console.error(` ERROR: ${result.message}`);
122
+ process.exit(1);
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Diff command: show what would change without publishing.
128
+ */
129
+ async function runDiff(options) {
130
+ const client = (0, publisher_1.createClientFromEnv)(options.config.confluence.base_url);
131
+ const docConfigs = getDocConfigs(options.config, options.document);
132
+ for (const docConfig of docConfigs) {
133
+ console.log(`\nChecking: ${docConfig.title}`);
134
+ const doc = parseDocument(docConfig, options.config, options.configDir, options.verbose);
135
+ const html = (0, renderer_1.renderDocument)(doc);
136
+ const confluenceId = options.target === "release"
137
+ ? docConfig.confluenceId.release
138
+ : docConfig.confluenceId.master;
139
+ if (!confluenceId) {
140
+ console.log(` Skipped: no ${options.target} confluence_id configured`);
141
+ continue;
142
+ }
143
+ const diffResult = await client.diff(confluenceId, html);
144
+ console.log(` ${diffResult}`);
145
+ }
146
+ }
147
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface PublishResult {
2
+ success: boolean;
3
+ message: string;
4
+ pageId: string;
5
+ }
6
+ export declare class ConfluenceClient {
7
+ private client;
8
+ constructor(baseUrl: string, username: string, token: string);
9
+ /**
10
+ * Get the current page version number.
11
+ */
12
+ getPageVersion(pageId: string): Promise<number>;
13
+ /**
14
+ * Get the current page body content (storage format).
15
+ */
16
+ getPageContent(pageId: string): Promise<string>;
17
+ /**
18
+ * Publish content to a Confluence page.
19
+ * Only updates if content has actually changed.
20
+ */
21
+ publish(pageId: string, title: string, html: string, options?: {
22
+ force?: boolean;
23
+ }): Promise<PublishResult>;
24
+ /**
25
+ * Get a diff summary of what would change.
26
+ */
27
+ diff(pageId: string, newHtml: string): Promise<string>;
28
+ }
29
+ /**
30
+ * Create a ConfluenceClient from environment variables.
31
+ */
32
+ export declare function createClientFromEnv(baseUrl: string): ConfluenceClient;
33
+ //# sourceMappingURL=confluenceApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confluenceApi.d.ts","sourceRoot":"","sources":["../../src/publisher/confluenceApi.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;gBAElB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAa5D;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQrD;;;OAGG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAChC,OAAO,CAAC,aAAa,CAAC;IA0DzB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAc7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAYrE"}