sfdx-hardis 5.24.3-alpha202504040902.0 → 5.25.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 (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/commands/hardis/doc/packagexml2markdown.js +2 -2
  3. package/lib/commands/hardis/doc/packagexml2markdown.js.map +1 -1
  4. package/lib/commands/hardis/doc/project2markdown.d.ts +2 -8
  5. package/lib/commands/hardis/doc/project2markdown.js +69 -206
  6. package/lib/commands/hardis/doc/project2markdown.js.map +1 -1
  7. package/lib/common/aiProvider/promptTemplates.d.ts +7 -1
  8. package/lib/common/aiProvider/promptTemplates.js +30 -0
  9. package/lib/common/aiProvider/promptTemplates.js.map +1 -1
  10. package/lib/common/aiProvider/utils.d.ts +0 -1
  11. package/lib/common/aiProvider/utils.js +1 -41
  12. package/lib/common/aiProvider/utils.js.map +1 -1
  13. package/lib/common/docBuilder/docBuilderApex.d.ts +8 -0
  14. package/lib/common/docBuilder/docBuilderApex.js +28 -0
  15. package/lib/common/docBuilder/docBuilderApex.js.map +1 -0
  16. package/lib/common/docBuilder/docBuilderFlow.d.ts +10 -0
  17. package/lib/common/docBuilder/docBuilderFlow.js +43 -0
  18. package/lib/common/docBuilder/docBuilderFlow.js.map +1 -0
  19. package/lib/common/docBuilder/docBuilderObject.d.ts +13 -0
  20. package/lib/common/docBuilder/docBuilderObject.js +116 -0
  21. package/lib/common/docBuilder/docBuilderObject.js.map +1 -0
  22. package/lib/common/docBuilder/docBuilderPackageXml.d.ts +8 -0
  23. package/lib/common/docBuilder/docBuilderPackageXml.js +136 -0
  24. package/lib/common/docBuilder/docBuilderPackageXml.js.map +1 -0
  25. package/lib/common/docBuilder/docBuilderPage.d.ts +10 -0
  26. package/lib/common/docBuilder/docBuilderPage.js +40 -0
  27. package/lib/common/docBuilder/docBuilderPage.js.map +1 -0
  28. package/lib/common/docBuilder/docBuilderProfile.d.ts +11 -0
  29. package/lib/common/docBuilder/docBuilderProfile.js +86 -0
  30. package/lib/common/docBuilder/docBuilderProfile.js.map +1 -0
  31. package/lib/common/docBuilder/docBuilderRoot.d.ts +18 -0
  32. package/lib/common/docBuilder/docBuilderRoot.js +79 -0
  33. package/lib/common/docBuilder/docBuilderRoot.js.map +1 -0
  34. package/lib/common/docBuilder/docUtils.d.ts +0 -4
  35. package/lib/common/docBuilder/docUtils.js +0 -206
  36. package/lib/common/docBuilder/docUtils.js.map +1 -1
  37. package/lib/common/gitProvider/azureDevops.js +3 -0
  38. package/lib/common/gitProvider/azureDevops.js.map +1 -1
  39. package/lib/common/gitProvider/bitbucket.js +3 -0
  40. package/lib/common/gitProvider/bitbucket.js.map +1 -1
  41. package/lib/common/gitProvider/github.d.ts +4 -0
  42. package/lib/common/gitProvider/github.js +31 -31
  43. package/lib/common/gitProvider/github.js.map +1 -1
  44. package/lib/common/gitProvider/gitlab.js +3 -0
  45. package/lib/common/gitProvider/gitlab.js.map +1 -1
  46. package/lib/common/utils/mermaidUtils.js +6 -29
  47. package/lib/common/utils/mermaidUtils.js.map +1 -1
  48. package/oclif.lock +33 -33
  49. package/oclif.manifest.json +50 -50
  50. package/package.json +5 -5
@@ -0,0 +1,136 @@
1
+ import c from 'chalk';
2
+ import * as path from 'path';
3
+ import fs from 'fs-extra';
4
+ import { SfError } from '@salesforce/core';
5
+ import { uxLog } from '../utils/index.js';
6
+ import { countPackageXmlItems, parsePackageXmlFile } from '../utils/xmlUtils.js';
7
+ import { SalesforceSetupUrlBuilder } from './docUtils.js';
8
+ import { CONSTANTS } from '../../config/index.js';
9
+ export class DocBuilderPackageXML {
10
+ static async buildIndexTable(outputPackageXmlMarkdownFiles) {
11
+ const packageLines = [];
12
+ const packagesForMenu = { "All manifests": "manifests.md" };
13
+ packageLines.push(...[
14
+ "## Package XML files",
15
+ "",
16
+ "| Package name | Description |",
17
+ "| :----------- | :---------- |"
18
+ ]);
19
+ for (const outputPackageXmlDef of outputPackageXmlMarkdownFiles) {
20
+ const metadataNb = await countPackageXmlItems(outputPackageXmlDef.path);
21
+ const packageMdFile = path.basename(outputPackageXmlDef.path) + ".md";
22
+ const label = outputPackageXmlDef.name ? `Package folder: ${outputPackageXmlDef.name}` : path.basename(outputPackageXmlDef.path);
23
+ const packageTableLine = `| [${label}](${packageMdFile}) (${metadataNb}) | ${outputPackageXmlDef.description} |`;
24
+ packageLines.push(packageTableLine);
25
+ packagesForMenu[label] = packageMdFile;
26
+ }
27
+ packageLines.push("");
28
+ packageLines.push("___");
29
+ packageLines.push("");
30
+ return { packageLines, packagesForMenu };
31
+ }
32
+ static async generatePackageXmlMarkdown(inputFile, outputFile = null, packageXmlDefinition = null, rootSalesforceUrl = "") {
33
+ // Find packageXml to parse if not defined
34
+ if (inputFile == null) {
35
+ inputFile = path.join(process.cwd(), "manifest", "package.xml");
36
+ if (!fs.existsSync(inputFile)) {
37
+ throw new SfError("No package.xml found. You need to send the path to a package.xml file in --inputfile option");
38
+ }
39
+ }
40
+ // Build output file if not defined
41
+ if (outputFile == null) {
42
+ const packageXmlFileName = path.basename(inputFile);
43
+ outputFile = path.join(process.cwd(), "docs", `${packageXmlFileName}.md`);
44
+ }
45
+ await fs.ensureDir(path.dirname(outputFile));
46
+ uxLog(this, `Generating markdown doc from ${inputFile} to ${outputFile}...`);
47
+ // Read content
48
+ const packageXmlContent = await parsePackageXmlFile(inputFile);
49
+ const metadataTypes = Object.keys(packageXmlContent);
50
+ metadataTypes.sort();
51
+ const nbItems = await countPackageXmlItems(inputFile);
52
+ const mdLines = [];
53
+ if (packageXmlDefinition && packageXmlDefinition.description) {
54
+ // Header
55
+ mdLines.push(...[
56
+ `## Content of ${path.basename(inputFile)}`,
57
+ '',
58
+ packageXmlDefinition.description,
59
+ '',
60
+ `Metadatas: ${nbItems}`,
61
+ ''
62
+ ]);
63
+ }
64
+ else {
65
+ // Header
66
+ mdLines.push(...[
67
+ `## Content of ${path.basename(inputFile)}`,
68
+ '',
69
+ `Metadatas: ${nbItems}`,
70
+ ''
71
+ ]);
72
+ }
73
+ // Generate package.xml markdown
74
+ for (const metadataType of metadataTypes) {
75
+ const members = packageXmlContent[metadataType];
76
+ members.sort();
77
+ const memberLengthLabel = members.length === 1 && members[0] === "*" ? "*" : members.length;
78
+ mdLines.push(`<details><summary>${metadataType} (${memberLengthLabel})</summary>\n\n`);
79
+ for (const member of members) {
80
+ const memberLabel = member === "*" ? "ALL (wildcard *)" : member;
81
+ const setupUrl = SalesforceSetupUrlBuilder.getSetupUrl(metadataType, member);
82
+ if (setupUrl && rootSalesforceUrl) {
83
+ mdLines.push(` • <a href="${rootSalesforceUrl}${setupUrl}" target="_blank">${memberLabel}</a><br/>`);
84
+ }
85
+ else {
86
+ mdLines.push(` • ${memberLabel}<br/>`);
87
+ }
88
+ }
89
+ mdLines.push("");
90
+ mdLines.push("</details>");
91
+ mdLines.push("");
92
+ }
93
+ mdLines.push("");
94
+ // Footer
95
+ mdLines.push(`_Documentation generated with [sfdx-hardis](${CONSTANTS.DOC_URL_ROOT})_`);
96
+ // Write output file
97
+ await fs.writeFile(outputFile, mdLines.join("\n") + "\n");
98
+ uxLog(this, c.green(`Successfully generated ${path.basename(inputFile)} documentation into ${outputFile}`));
99
+ return outputFile;
100
+ }
101
+ static listPackageXmlCandidates() {
102
+ return [
103
+ // CI/CD package files
104
+ {
105
+ path: "manifest/package.xml",
106
+ description: "Contains all deployable metadatas of the SFDX project"
107
+ },
108
+ {
109
+ path: "manifest/packageDeployOnce.xml",
110
+ description: "Contains all metadatas that will never be overwritten during deployment if they are already existing in the target org"
111
+ },
112
+ {
113
+ path: "manifest/package-no-overwrite.xml",
114
+ description: "Contains all metadatas that will never be overwritten during deployment if they are already existing in the target org"
115
+ },
116
+ {
117
+ path: "manifest/destructiveChanges.xml",
118
+ description: "Contains all metadatas that will be deleted during deployment, in case they are existing in the target org"
119
+ },
120
+ // Monitoring package files
121
+ {
122
+ path: "manifest/package-all-org-items.xml",
123
+ description: "Contains the entire list of metadatas that are present in the monitored org (not all of them are in the git backup)"
124
+ },
125
+ {
126
+ path: "manifest/package-backup-items.xml",
127
+ description: "Contains the list of metadatas that are in the git backup"
128
+ },
129
+ {
130
+ path: "manifest/package-skip-items.xml",
131
+ description: "Contains the list of metadatas that are excluded from the backup.<br/>Other metadata types might be skipped using environment variable MONITORING_BACKUP_SKIP_METADATA_TYPES"
132
+ },
133
+ ];
134
+ }
135
+ }
136
+ //# sourceMappingURL=docBuilderPackageXml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docBuilderPackageXml.js","sourceRoot":"","sources":["../../../src/common/docBuilder/docBuilderPackageXml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { PromptTemplate } from "../aiProvider/promptTemplates.js";
2
+ import { DocBuilderRoot } from "./docBuilderRoot.js";
3
+ export declare class DocBuilderPage extends DocBuilderRoot {
4
+ docType: string;
5
+ promptKey: PromptTemplate;
6
+ placeholder: string;
7
+ xmlRootKey: string;
8
+ static buildIndexTable(prefix: string, pageDescriptions: any, filterObject?: string | null): string[];
9
+ buildInitialMarkdownLines(): Promise<string[]>;
10
+ }
@@ -0,0 +1,40 @@
1
+ import { buildGenericMarkdownTable } from "../utils/flowVisualiser/nodeFormatUtils.js";
2
+ import { DocBuilderRoot } from "./docBuilderRoot.js";
3
+ export class DocBuilderPage extends DocBuilderRoot {
4
+ docType = "Page";
5
+ promptKey = "PROMPT_DESCRIBE_PAGE";
6
+ placeholder = "<!-- Page description -->";
7
+ xmlRootKey = "FlexiPage";
8
+ static buildIndexTable(prefix, pageDescriptions, filterObject = null) {
9
+ const filteredPages = filterObject ? pageDescriptions.filter(page => page.impactedObjects.includes(filterObject)) : pageDescriptions;
10
+ if (filteredPages.length === 0) {
11
+ return [];
12
+ }
13
+ const lines = [];
14
+ lines.push(...[
15
+ filterObject ? "## Related Lightning Pages" : "## Lightning Pages",
16
+ "",
17
+ "| Lightning Page | Type |",
18
+ "| :---- | :--: | "
19
+ ]);
20
+ for (const page of filteredPages) {
21
+ const pageNameCell = `[${page.name}](${prefix}${page.name}.md)`;
22
+ lines.push(...[
23
+ `| ${pageNameCell} | ${page.type} |`
24
+ ]);
25
+ }
26
+ lines.push("");
27
+ return lines;
28
+ }
29
+ async buildInitialMarkdownLines() {
30
+ return [
31
+ `## ${this.metadataName}`,
32
+ '',
33
+ buildGenericMarkdownTable(this.parsedXmlObject, ["sobjectType", "type", "masterLabel", "template"], "## Lightning Page attributes", []),
34
+ '',
35
+ '<!-- Page description -->',
36
+ '',
37
+ ];
38
+ }
39
+ }
40
+ //# sourceMappingURL=docBuilderPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docBuilderPage.js","sourceRoot":"","sources":["../../../src/common/docBuilder/docBuilderPage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,cAAe,SAAQ,cAAc;IAEzC,OAAO,GAAG,MAAM,CAAC;IACjB,SAAS,GAAmB,sBAAsB,CAAC;IACnD,WAAW,GAAG,2BAA2B,CAAC;IAC1C,UAAU,GAAG,WAAW,CAAC;IAGzB,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,gBAAqB,EAAE,eAA8B,IAAI;QACrG,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACrI,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG;YACZ,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,oBAAoB;YAClE,EAAE;YACF,2BAA2B;YAC3B,wBAAwB;SACzB,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,GAAG;gBACZ,KAAK,YAAY,MAAM,IAAI,CAAC,IAAI,IAAI;aACrC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,OAAO;YACL,MAAM,IAAI,CAAC,YAAY,EAAE;YACzB,EAAE;YACF,yBAAyB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,8BAA8B,EAAE,EAAE,CAAC;YACvI,EAAE;YACF,2BAA2B;YAC3B,EAAE;SACH,CAAC;IACJ,CAAC;CAEF"}
@@ -0,0 +1,11 @@
1
+ import { PromptTemplate } from "../aiProvider/promptTemplates.js";
2
+ import { DocBuilderRoot } from "./docBuilderRoot.js";
3
+ export declare class DocBuilderProfile extends DocBuilderRoot {
4
+ docType: string;
5
+ promptKey: PromptTemplate;
6
+ placeholder: string;
7
+ xmlRootKey: string;
8
+ static buildIndexTable(prefix: string, profileDescriptions: any[], filterObject?: string | null): string[];
9
+ buildInitialMarkdownLines(): Promise<string[]>;
10
+ stripXmlForAi(): Promise<string>;
11
+ }
@@ -0,0 +1,86 @@
1
+ import { XMLBuilder, XMLParser } from "fast-xml-parser";
2
+ import { buildGenericMarkdownTable } from "../utils/flowVisualiser/nodeFormatUtils.js";
3
+ import { DocBuilderRoot } from "./docBuilderRoot.js";
4
+ export class DocBuilderProfile extends DocBuilderRoot {
5
+ docType = "Profile";
6
+ promptKey = "PROMPT_DESCRIBE_PROFILE";
7
+ placeholder = "<!-- Profile description -->";
8
+ xmlRootKey = "Profile";
9
+ static buildIndexTable(prefix, profileDescriptions, filterObject = null) {
10
+ const filteredProfiles = filterObject ? profileDescriptions.filter(profile => profile.impactedObjects.includes(filterObject)) : profileDescriptions;
11
+ if (filteredProfiles.length === 0) {
12
+ return [];
13
+ }
14
+ const lines = [];
15
+ lines.push(...[
16
+ filterObject ? "## Related Profiles" : "## Profiles",
17
+ "",
18
+ "| Profile | User License |",
19
+ "| :---- | :--: | "
20
+ ]);
21
+ for (const profile of filteredProfiles) {
22
+ const profileNameCell = `[${profile.name}](${prefix}${encodeURIComponent(profile.name)}.md)`;
23
+ lines.push(...[
24
+ `| ${profileNameCell} | ${profile.userLicense} |`
25
+ ]);
26
+ }
27
+ lines.push("");
28
+ return lines;
29
+ }
30
+ async buildInitialMarkdownLines() {
31
+ return [
32
+ `## ${this.metadataName}`,
33
+ '',
34
+ '<!-- Profile description -->',
35
+ '',
36
+ buildGenericMarkdownTable(this.parsedXmlObject, ["allFields"], "## Profile attributes", []),
37
+ ];
38
+ }
39
+ stripXmlForAi() {
40
+ const xmlObj = new XMLParser().parse(this.metadataXml);
41
+ // Remove class access: not relevant for prompt
42
+ if (xmlObj?.Profile?.classAccesses) {
43
+ delete xmlObj.Profile.classAccesses;
44
+ }
45
+ // Remove fieldPermissions: not relevant for prompt
46
+ if (xmlObj?.Profile?.fieldPermissions) {
47
+ delete xmlObj.Profile.fieldPermissions;
48
+ }
49
+ // Remove flowAccesses: not relevant for prompt
50
+ if (xmlObj?.Profile?.flowAccesses) {
51
+ delete xmlObj.Profile.flowAccesses;
52
+ }
53
+ // Remove layoutAssignments: not relevant for prompt
54
+ if (xmlObj?.Profile?.layoutAssignments) {
55
+ delete xmlObj.Profile.layoutAssignments;
56
+ }
57
+ // Remove pageAccesses: not relevant for prompt
58
+ if (xmlObj?.Profile?.pageAccesses) {
59
+ delete xmlObj.Profile.pageAccesses;
60
+ }
61
+ // Keep only visible applications
62
+ if (xmlObj?.Profile?.applicationVisibilities) {
63
+ if (!Array.isArray(xmlObj.Profile.applicationVisibilities)) {
64
+ xmlObj.Profile.applicationVisibilities = [xmlObj.Profile.applicationVisibilities];
65
+ }
66
+ xmlObj.Profile.applicationVisibilities = xmlObj.Profile.applicationVisibilities.filter(applicationVisibility => applicationVisibility.visible === true);
67
+ }
68
+ // Keep only visible recordTypes
69
+ if (xmlObj?.Profile?.recordTypeVisibilities) {
70
+ if (!Array.isArray(xmlObj.Profile.recordTypeVisibilities)) {
71
+ xmlObj.Profile.recordTypeVisibilities = [xmlObj.Profile.recordTypeVisibilities];
72
+ }
73
+ xmlObj.Profile.recordTypeVisibilities = xmlObj.Profile.recordTypeVisibilities.filter(rt => rt.visible === true);
74
+ }
75
+ // Keep only visible tabs
76
+ if (xmlObj?.Profile?.tabVisibilities) {
77
+ if (!Array.isArray(xmlObj.Profile.tabVisibilities)) {
78
+ xmlObj.Profile.tabVisibilities = [xmlObj.Profile.tabVisibilities];
79
+ }
80
+ xmlObj.Profile.tabVisibilities = xmlObj.Profile.tabVisibilities.filter(tab => tab.visibility === 'Hidden');
81
+ }
82
+ const xmlStripped = new XMLBuilder().build(xmlObj);
83
+ return xmlStripped;
84
+ }
85
+ }
86
+ //# sourceMappingURL=docBuilderProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docBuilderProfile.js","sourceRoot":"","sources":["../../../src/common/docBuilder/docBuilderProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IAE5C,OAAO,GAAG,SAAS,CAAC;IACpB,SAAS,GAAmB,yBAAyB,CAAC;IACtD,WAAW,GAAG,8BAA8B,CAAC;IAC7C,UAAU,GAAG,SAAS,CAAC;IAEvB,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,mBAA0B,EAAE,eAA8B,IAAI;QAC1G,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACpJ,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG;YACZ,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa;YACpD,EAAE;YACF,4BAA4B;YAC5B,wBAAwB;SACzB,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7F,KAAK,CAAC,IAAI,CAAC,GAAG;gBACZ,KAAK,eAAe,MAAM,OAAO,CAAC,WAAW,IAAI;aAClD,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,OAAO;YACL,MAAM,IAAI,CAAC,YAAY,EAAE;YACzB,EAAE;YACF,8BAA8B;YAC9B,EAAE;YACF,yBAAyB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,uBAAuB,EAAE,EAAE,CAAC;SAC5F,CAAC;IACJ,CAAC;IAEM,aAAa;QAClB,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,+CAA+C;QAC/C,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QACtC,CAAC;QACD,mDAAmD;QACnD,IAAI,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACzC,CAAC;QACD,+CAA+C;QAC/C,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,CAAC;QACD,oDAAoD;QACpD,IAAI,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC1C,CAAC;QACD,+CAA+C;QAC/C,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC,CAAC;QACD,iCAAiC;QACjC,IAAI,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,OAAO,CAAC,uBAAuB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC1J,CAAC;QACD,gCAAgC;QAChC,IAAI,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAClH,CAAC;QACD,yBAAyB;QACzB,IAAI,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnD,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,WAAW,CAAA;IACpB,CAAC;CAEF"}
@@ -0,0 +1,18 @@
1
+ import { PromptTemplate } from '../aiProvider/promptTemplates.js';
2
+ export declare abstract class DocBuilderRoot {
3
+ docType: string;
4
+ promptKey: PromptTemplate;
5
+ placeholder: string;
6
+ xmlRootKey: string;
7
+ metadataName: string;
8
+ metadataXml: string;
9
+ outputFile: string;
10
+ additionalVariables: any;
11
+ markdownDoc: string;
12
+ parsedXmlObject: any;
13
+ constructor(metadataName: string, metadataXml: string, outputFile: string, additionalVariables?: any);
14
+ buildInitialMarkdownLines(): Promise<string[]>;
15
+ generateMarkdownFileFromXml(): Promise<string>;
16
+ completeDocWithAiDescription(): Promise<string>;
17
+ stripXmlForAi(): Promise<string>;
18
+ }
@@ -0,0 +1,79 @@
1
+ import c from 'chalk';
2
+ import { UtilsAi } from "../aiProvider/utils.js";
3
+ import { uxLog } from "../utils/index.js";
4
+ import { AiProvider } from '../aiProvider/index.js';
5
+ import { XMLParser } from 'fast-xml-parser';
6
+ import fs from 'fs-extra';
7
+ import path from 'path';
8
+ import { getMetaHideLines } from './docUtils.js';
9
+ import { CONSTANTS } from '../../config/index.js';
10
+ export class DocBuilderRoot {
11
+ docType;
12
+ promptKey;
13
+ placeholder;
14
+ xmlRootKey;
15
+ metadataName;
16
+ metadataXml = "";
17
+ outputFile;
18
+ additionalVariables;
19
+ markdownDoc;
20
+ parsedXmlObject;
21
+ constructor(metadataName, metadataXml, outputFile, additionalVariables = {}) {
22
+ this.metadataName = metadataName;
23
+ this.metadataXml = metadataXml;
24
+ this.outputFile = outputFile;
25
+ this.additionalVariables = additionalVariables;
26
+ }
27
+ // This method must be overridden
28
+ async buildInitialMarkdownLines() {
29
+ return [];
30
+ }
31
+ async generateMarkdownFileFromXml() {
32
+ if (this.xmlRootKey) {
33
+ this.parsedXmlObject = new XMLParser().parse(this.metadataXml)?.[this.xmlRootKey] || {};
34
+ }
35
+ // Main lines generated by overridden method
36
+ const mdLines = await this.buildInitialMarkdownLines();
37
+ // Footer
38
+ mdLines.push("");
39
+ mdLines.push(`_Documentation generated with [sfdx-hardis](${CONSTANTS.DOC_URL_ROOT})_`);
40
+ this.markdownDoc = mdLines.join("\n") + "\n";
41
+ this.markdownDoc = await this.completeDocWithAiDescription();
42
+ await fs.ensureDir(path.dirname(this.outputFile));
43
+ await fs.writeFile(this.outputFile, getMetaHideLines() + this.markdownDoc);
44
+ uxLog(this, c.green(`Successfully generated ${this.metadataName} documentation into ${this.outputFile}`));
45
+ return this.outputFile;
46
+ }
47
+ async completeDocWithAiDescription() {
48
+ const xmlStripped = await this.stripXmlForAi();
49
+ const aiCache = await UtilsAi.findAiCache(this.promptKey, [xmlStripped], this.metadataName);
50
+ if (aiCache.success === true) {
51
+ uxLog(this, c.grey(`Used AI cache for ${this.docType.toLowerCase()} description (set IGNORE_AI_CACHE=true to force call to AI)`));
52
+ const replaceText = `## AI-Generated Description\n\n<!-- Cache file: ${aiCache.aiCacheDirFile} -->\n\n${aiCache.cacheText || ""}`;
53
+ this.markdownDoc = this.markdownDoc.replace(this.placeholder, replaceText);
54
+ return this.markdownDoc;
55
+ }
56
+ if (AiProvider.isAiAvailable()) {
57
+ const defaultVariables = { [`${this.docType.toUpperCase()}_NAME`]: this.metadataName, [`${this.docType.toUpperCase()}_XML`]: xmlStripped };
58
+ const variables = { ...defaultVariables, ...this.additionalVariables };
59
+ const prompt = AiProvider.buildPrompt(this.promptKey, variables);
60
+ const aiResponse = await AiProvider.promptAi(prompt, this.promptKey);
61
+ if (aiResponse?.success) {
62
+ let responseText = aiResponse.promptResponse || "No AI description available";
63
+ if (responseText.startsWith("##")) {
64
+ responseText = responseText.split("\n").slice(1).join("\n");
65
+ }
66
+ await UtilsAi.writeAiCache(this.promptKey, [xmlStripped], this.metadataName, responseText);
67
+ const replaceText = `## AI-Generated Description\n\n<!-- Cache file: ${aiCache.aiCacheDirFile} -->\n\n${responseText}`;
68
+ this.markdownDoc = this.markdownDoc.replace(this.placeholder, replaceText);
69
+ return this.markdownDoc;
70
+ }
71
+ }
72
+ return this.markdownDoc;
73
+ }
74
+ // Override this method if you need to make a smaller XML to fit in the number of prompt tokens
75
+ async stripXmlForAi() {
76
+ return this.metadataXml;
77
+ }
78
+ }
79
+ //# sourceMappingURL=docBuilderRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docBuilderRoot.js","sourceRoot":"","sources":["../../../src/common/docBuilder/docBuilderRoot.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,cAAc;IAC3B,OAAO,CAAS;IAChB,SAAS,CAAiB;IAC1B,WAAW,CAAS;IACpB,UAAU,CAAS;IAEnB,YAAY,CAAS;IACrB,WAAW,GAAW,EAAE,CAAC;IACzB,UAAU,CAAS;IACnB,mBAAmB,CAAM;IAEzB,WAAW,CAAS;IACpB,eAAe,CAAM;IAE5B,YAAY,YAAoB,EAAE,WAAmB,EAAE,UAAkB,EAAE,sBAA2B,EAAE;QACtG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED,iCAAiC;IAC1B,KAAK,CAAC,yBAAyB;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,KAAK,CAAC,2BAA2B;QACtC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1F,CAAC;QACD,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACvD,SAAS;QACT,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,+CAA+C,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;QAExF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAE7D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,YAAY,uBAAuB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,4BAA4B;QACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6DAA6D,CAAC,CAAC,CAAC;YAClI,MAAM,WAAW,GAAG,mDAAmD,OAAO,CAAC,cAAc,WAAW,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAClI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/B,MAAM,gBAAgB,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;YAC3I,MAAM,SAAS,GAAG,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEjE,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;gBACxB,IAAI,YAAY,GAAG,UAAU,CAAC,cAAc,IAAI,6BAA6B,CAAC;gBAC9E,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC3F,MAAM,WAAW,GAAG,mDAAmD,OAAO,CAAC,cAAc,WAAW,YAAY,EAAE,CAAC;gBACvH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC,WAAW,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,+FAA+F;IACxF,KAAK,CAAC,aAAa;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CAEF"}
@@ -1,4 +1,3 @@
1
- export declare function generatePackageXmlMarkdown(inputFile: string | null, outputFile?: string | null, packageXmlDefinition?: any, rootSalesforceUrl?: string): Promise<string>;
2
1
  export declare function readMkDocsFile(mkdocsYmlFile: string): any;
3
2
  export declare function writeMkDocsFile(mkdocsYmlFile: string, mkdocsYml: any): Promise<void>;
4
3
  export declare class SalesforceSetupUrlBuilder {
@@ -15,10 +14,7 @@ export declare class SalesforceSetupUrlBuilder {
15
14
  */
16
15
  static getSetupUrl(metadataType: string, apiName: string): string | null;
17
16
  }
18
- export declare function generateObjectMarkdown(objectName: string, objectXmlDefinition: string, allObjectsNames: string, objectLinksDetails: string, outputFile: string): Promise<string>;
19
- export declare function generateLightningPageMarkdown(pageName: string, pageXml: string, outputFile: string): Promise<string>;
20
17
  export declare function completeAttributesDescriptionWithAi(attributesMarkdown: string, objectName: string): Promise<string>;
21
- export declare function completeApexDocWithAiDescription(apexMarkdownDoc: string, className: string, apexCode: string): Promise<string>;
22
18
  export declare function replaceInFile(filePath: string, stringToReplace: string, replaceWith: string): Promise<void>;
23
19
  export declare function generateMkDocsHTML(): Promise<void>;
24
20
  export declare function installMkDocs(): Promise<boolean>;