powerautodoc 0.1.19 → 0.1.21

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 (62) hide show
  1. package/README.md +49 -4
  2. package/dist/config/loader.d.ts.map +1 -1
  3. package/dist/config/loader.js +3 -1
  4. package/dist/config/loader.js.map +1 -1
  5. package/dist/config/schema.d.ts +3 -1
  6. package/dist/config/schema.d.ts.map +1 -1
  7. package/dist/index.js +22 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/ir/emailTemplate.d.ts +21 -0
  10. package/dist/ir/emailTemplate.d.ts.map +1 -0
  11. package/dist/ir/emailTemplate.js +7 -0
  12. package/dist/ir/emailTemplate.js.map +1 -0
  13. package/dist/ir/globalChoice.d.ts +32 -0
  14. package/dist/ir/globalChoice.d.ts.map +1 -0
  15. package/dist/ir/globalChoice.js +6 -0
  16. package/dist/ir/globalChoice.js.map +1 -0
  17. package/dist/ir/index.d.ts +2 -0
  18. package/dist/ir/index.d.ts.map +1 -1
  19. package/dist/ir/index.js.map +1 -1
  20. package/dist/parsers/emailTemplateParser.d.ts +3 -0
  21. package/dist/parsers/emailTemplateParser.d.ts.map +1 -0
  22. package/dist/parsers/emailTemplateParser.js +109 -0
  23. package/dist/parsers/emailTemplateParser.js.map +1 -0
  24. package/dist/parsers/globalChoiceParser.d.ts +8 -0
  25. package/dist/parsers/globalChoiceParser.d.ts.map +1 -0
  26. package/dist/parsers/globalChoiceParser.js +83 -0
  27. package/dist/parsers/globalChoiceParser.js.map +1 -0
  28. package/dist/parsers/index.d.ts +2 -0
  29. package/dist/parsers/index.d.ts.map +1 -1
  30. package/dist/parsers/index.js +2 -0
  31. package/dist/parsers/index.js.map +1 -1
  32. package/dist/publisher/wikiAssembler.d.ts +2 -2
  33. package/dist/publisher/wikiAssembler.d.ts.map +1 -1
  34. package/dist/publisher/wikiAssembler.js +43 -7
  35. package/dist/publisher/wikiAssembler.js.map +1 -1
  36. package/dist/renderers/emailTemplateRenderer.d.ts +4 -0
  37. package/dist/renderers/emailTemplateRenderer.d.ts.map +1 -0
  38. package/dist/renderers/emailTemplateRenderer.js +77 -0
  39. package/dist/renderers/emailTemplateRenderer.js.map +1 -0
  40. package/dist/renderers/flowRenderer.d.ts.map +1 -1
  41. package/dist/renderers/flowRenderer.js +0 -2
  42. package/dist/renderers/flowRenderer.js.map +1 -1
  43. package/dist/renderers/globalChoiceRenderer.d.ts +10 -0
  44. package/dist/renderers/globalChoiceRenderer.d.ts.map +1 -0
  45. package/dist/renderers/globalChoiceRenderer.js +72 -0
  46. package/dist/renderers/globalChoiceRenderer.js.map +1 -0
  47. package/dist/renderers/index.d.ts +2 -0
  48. package/dist/renderers/index.d.ts.map +1 -1
  49. package/dist/renderers/index.js +2 -0
  50. package/dist/renderers/index.js.map +1 -1
  51. package/dist/renderers/pluginRenderer.d.ts.map +1 -1
  52. package/dist/renderers/pluginRenderer.js +0 -2
  53. package/dist/renderers/pluginRenderer.js.map +1 -1
  54. package/dist/renderers/securityRoleRenderer.d.ts +6 -2
  55. package/dist/renderers/securityRoleRenderer.d.ts.map +1 -1
  56. package/dist/renderers/securityRoleRenderer.js +15 -36
  57. package/dist/renderers/securityRoleRenderer.js.map +1 -1
  58. package/dist/renderers/webResourceRenderer.d.ts +1 -1
  59. package/dist/renderers/webResourceRenderer.d.ts.map +1 -1
  60. package/dist/renderers/webResourceRenderer.js +15 -24
  61. package/dist/renderers/webResourceRenderer.js.map +1 -1
  62. package/package.json +1 -1
package/README.md CHANGED
@@ -1,14 +1,28 @@
1
- # vel-docgen
1
+ # PowerAutoDoc
2
2
 
3
3
  Automated as-built documentation generator for Power Platform solutions.
4
4
 
5
- Reads unpacked solution XML from Git and produces structured markdown documentation
6
- for Azure DevOps Wiki — automatically, on every deployment.
5
+ Reads unpacked solution XML from Git and produces structured markdown documentation for Azure DevOps Wiki — automatically, on every deployment.
6
+
7
+ ## Overview
8
+
9
+ PowerAutoDoc uses an IR-based (Intermediate Representation) pipeline to parse Power Platform solutions and generate consistent, human-readable documentation. It covers the full stack of a solution:
10
+
11
+ - **C# Plugins** — Assembly metadata, step registrations, and configurations
12
+ - **JavaScript Web Resources** — Client-side logic and dependencies
13
+ - **Dataverse Schema** — Tables, columns, relationships, and forms
14
+ - **Security Roles** — Privilege definitions and access levels
7
15
 
8
16
  ## Quick Start
17
+
9
18
  ```bash
19
+ # Unpack your solution from source control
10
20
  pac solution unpack --zipfile MySolution.zip --folder ./unpacked
21
+
22
+ # Install dependencies
11
23
  npm install
24
+
25
+ # Run locally
12
26
  npm run dev
13
27
  ```
14
28
 
@@ -16,6 +30,37 @@ npm run dev
16
30
 
17
31
  See `docs/architecture.jsx` for the full system design (open as a React artifact in Claude).
18
32
 
33
+ The pipeline follows a Git-native input model:
34
+
35
+ ```
36
+ Unpacked Solution XML → IR Parser → Intermediate Representation → Renderers → Markdown Output
37
+ ```
38
+
19
39
  ## Output
20
40
 
21
- Generated docs are written to `./output/`. See `src/config/` for filtering and render options.
41
+ Generated documentation is written to `./output/` as structured markdown, ready for publishing to an Azure DevOps Wiki.
42
+
43
+ See `src/config/` for filtering and render options.
44
+
45
+ ## CI/CD Integration
46
+
47
+ PowerAutoDoc is designed to run as part of your Azure DevOps pipeline, producing up-to-date as-built docs on every deployment with no manual effort.
48
+
49
+ ```yaml
50
+ - script: npm run build:docs
51
+ displayName: "Generate As-Built Documentation"
52
+ ```
53
+
54
+ ## Configuration
55
+
56
+ | Option | Location | Description |
57
+ | ----------- | ------------------------- | ------------------------------ |
58
+ | Filters | `src/config/filters.js` | Exclude components from output |
59
+ | Renderers | `src/config/renderers.js` | Customise markdown formatting |
60
+ | Output path | `src/config/output.js` | Set destination directory |
61
+
62
+ ## Requirements
63
+
64
+ - Node.js 18+
65
+ - Power Platform CLI (`pac`)
66
+ - Access to an unpacked Power Platform solution
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiBhD,eAAO,MAAM,eAAe,EAAE,YAoC7B,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,MAAsB,GAAG,YAAY,CAmC1E"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiBhD,eAAO,MAAM,eAAe,EAAE,YAsC7B,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,MAAsB,GAAG,YAAY,CAmC1E"}
@@ -46,10 +46,12 @@ export const CONFIG_DEFAULTS = {
46
46
  webResources: true,
47
47
  securityRoles: true,
48
48
  environmentVariables: {
49
- enabled: false,
49
+ enabled: true,
50
50
  showDefaultValue: true,
51
51
  showCurrentValue: true,
52
52
  },
53
+ globalChoices: true,
54
+ emailTemplates: true,
53
55
  },
54
56
  };
55
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Shape of doc-gen.config.yml
3
3
  * All fields are optional — loader merges with defaults.
4
4
  */
5
- export type SolutionRole = 'datamodel' | 'flows' | 'classicWorkflows' | 'plugins' | 'webresources' | 'securityRoles' | 'environmentVariables' | 'all';
5
+ export type SolutionRole = 'datamodel' | 'flows' | 'classicWorkflows' | 'plugins' | 'webresources' | 'securityRoles' | 'environmentVariables' | 'globalChoices' | 'emailTemplates' | 'all';
6
6
  export interface SolutionEntry {
7
7
  /** Path to the unpacked solution folder (relative to config file) */
8
8
  path: string;
@@ -53,6 +53,8 @@ export interface DocGenConfig {
53
53
  webResources: boolean;
54
54
  securityRoles: boolean;
55
55
  environmentVariables: EnvironmentVariablesConfig;
56
+ globalChoices: boolean;
57
+ emailTemplates: boolean;
56
58
  };
57
59
  wiki?: WikiConfig;
58
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,sBAAsB,GAAG,KAAK,CAAC;AAEtJ,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,MAAM,EAAE;QACN,kDAAkD;QAClD,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,KAAK,EAAE;QACL,4DAA4D;QAC5D,iBAAiB,EAAE,OAAO,CAAC;QAC3B,8DAA8D;QAC9D,yBAAyB,EAAE,OAAO,CAAC;QACnC,sDAAsD;QACtD,4BAA4B,EAAE,OAAO,CAAC;QACtC,oDAAoD;QACpD,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAEF,MAAM,EAAE;QACN,4FAA4F;QAC5F,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;KACpC,CAAC;IAEF,UAAU,EAAE;QACV,iDAAiD;QACjD,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC;QACf,gBAAgB,EAAE,OAAO,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,oBAAoB,EAAE,0BAA0B,CAAC;KAClD,CAAC;IAEF,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,sBAAsB,GAAG,eAAe,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAE3L,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,MAAM,EAAE;QACN,kDAAkD;QAClD,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,KAAK,EAAE;QACL,4DAA4D;QAC5D,iBAAiB,EAAE,OAAO,CAAC;QAC3B,8DAA8D;QAC9D,yBAAyB,EAAE,OAAO,CAAC;QACnC,sDAAsD;QACtD,4BAA4B,EAAE,OAAO,CAAC;QACtC,oDAAoD;QACpD,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAEF,MAAM,EAAE;QACN,4FAA4F;QAC5F,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;KACpC,CAAC;IAEF,UAAU,EAAE;QACV,iDAAiD;QACjD,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC;QACf,gBAAgB,EAAE,OAAO,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,oBAAoB,EAAE,0BAA0B,CAAC;QACjD,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IAEF,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;CACb"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { loadConfig } from './config/index.js';
3
- import { parseSolution, parseSolutionManifest, parseAllFlows, parseClassicWorkflows, parseBusinessRules, parseAllPlugins, parseAllWebResources, parseSecurityRoles, parseEnvironmentVariables, } from './parsers/index.js';
3
+ import { parseSolution, parseSolutionManifest, parseAllFlows, parseClassicWorkflows, parseBusinessRules, parseAllPlugins, parseAllWebResources, parseSecurityRoles, parseEnvironmentVariables, parseGlobalChoices, parseEmailTemplates } from './parsers/index.js';
4
4
  import { writeTableMarkdown, writeOverviewMarkdown, writeFlowMarkdown, writePluginMarkdown, writeWebResourceMarkdown, } from './renderers/index.js';
5
5
  import { publishToWiki } from './publisher/wikiPublisher.js';
6
6
  import { buildWikiPages } from './publisher/wikiAssembler.js';
@@ -16,6 +16,8 @@ async function main() {
16
16
  const allWebResources = [];
17
17
  const allSecurityRoles = [];
18
18
  const allEnvVars = [];
19
+ const allGlobalChoices = [];
20
+ const allEmailTemplates = [];
19
21
  for (const solutionEntry of config.solutions) {
20
22
  const { path: unpackedPath, role, publisherPrefix } = solutionEntry;
21
23
  console.log(`\nProcessing solution: ${unpackedPath} (role: ${role})`);
@@ -33,6 +35,8 @@ async function main() {
33
35
  const isWebResources = role === 'webresources' || role === 'all';
34
36
  const isSecurity = role === 'all' || role === 'securityRoles';
35
37
  const isEnvVars = role === 'all' || role === 'environmentVariables';
38
+ const isGlobalChoices = role === 'all' || role === 'globalChoices';
39
+ const isEmailTemplates = role === 'all' || role === 'emailTemplates';
36
40
  // Always parse the manifest so every solution appears in the Overview
37
41
  const manifest = parseSolutionManifest(unpackedPath);
38
42
  // ---- Data model ----
@@ -98,6 +102,14 @@ async function main() {
98
102
  allSecurityRoles.push(...roles);
99
103
  console.log(` Parsed ${roles.length} security roles from: ${unpackedPath}`);
100
104
  }
105
+ // ---- Global Choices ----
106
+ if ((role === 'all' || role === 'globalChoices') && config.components.globalChoices) {
107
+ const choices = parseGlobalChoices(unpackedPath, publisherPrefix);
108
+ allGlobalChoices.push(...choices);
109
+ if (choices.length > 0) {
110
+ console.log(` Parsed ${choices.length} global choices from: ${unpackedPath}`);
111
+ }
112
+ }
101
113
  // ---- Environment Variables ----
102
114
  if ((role === 'all' || role === 'environmentVariables') && config.components.environmentVariables.enabled) {
103
115
  const envVars = parseEnvironmentVariables(unpackedPath);
@@ -106,10 +118,18 @@ async function main() {
106
118
  console.log(` Parsed ${envVars.length} environment variables from: ${unpackedPath}`);
107
119
  }
108
120
  }
121
+ // ---- Email Templates ----
122
+ if ((role === 'all' || role === 'emailTemplates') && config.components.emailTemplates) {
123
+ const emailTemplates = parseEmailTemplates(unpackedPath);
124
+ allEmailTemplates.push(...emailTemplates);
125
+ if (emailTemplates.length > 0) {
126
+ console.log(` Parsed ${emailTemplates.length} email templates from: ${unpackedPath}`);
127
+ }
128
+ }
109
129
  }
110
130
  // ---- Wiki publish ----
111
131
  if (config.wiki && mergedSolution) {
112
- const pages = buildWikiPages(config, allSolutions, mergedSolution, allFlows, allPluginAssemblies, allWebResources, allClassicWorkflows, allBusinessRules, allSecurityRoles, allEnvVars);
132
+ const pages = buildWikiPages(config, allSolutions, mergedSolution, allFlows, allPluginAssemblies, allWebResources, allClassicWorkflows, allBusinessRules, allSecurityRoles, allEnvVars, allGlobalChoices, allEmailTemplates);
113
133
  await publishToWiki(config.wiki, pages);
114
134
  }
115
135
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * IR model for Email Templates.
3
+ * Subject and body are extracted from XSL files as plain text
4
+ * with dynamic field references shown as {fieldName} placeholders.
5
+ */
6
+ export interface EmailTemplateModel {
7
+ id: string;
8
+ title: string;
9
+ description: string;
10
+ targetEntity: string;
11
+ templateTypeCode: number;
12
+ /** Plain text subject with dynamic fields as {fieldName} placeholders */
13
+ subject: string;
14
+ /** Plain text body with dynamic fields as {fieldName} placeholders */
15
+ body: string;
16
+ /** All dynamic field references from subject and body XSL */
17
+ dynamicFields: string[];
18
+ languageCode: number;
19
+ isCustomizable: boolean;
20
+ }
21
+ //# sourceMappingURL=emailTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplate.d.ts","sourceRoot":"","sources":["../../src/ir/emailTemplate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * IR model for Email Templates.
3
+ * Subject and body are extracted from XSL files as plain text
4
+ * with dynamic field references shown as {fieldName} placeholders.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=emailTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplate.js","sourceRoot":"","sources":["../../src/ir/emailTemplate.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * IR model for Global Option Sets (Global Choices).
3
+ * These are solution-level picklists reusable across multiple tables/columns.
4
+ */
5
+ export type OptionSetType = 'picklist' | 'bool' | 'status' | 'state' | 'Unknown';
6
+ export interface ChoiceOptionModel {
7
+ /** Integer value stored in Dataverse */
8
+ value: number;
9
+ /** Display label (English 1033) */
10
+ label: string;
11
+ /** Description if provided */
12
+ description: string;
13
+ /** Whether the option is hidden from the UI */
14
+ isHidden: boolean;
15
+ /** External value for integration mapping (if set) */
16
+ externalValue: string;
17
+ }
18
+ export interface GlobalChoiceModel {
19
+ /** Schema name e.g. "isms_accounttype" */
20
+ schemaName: string;
21
+ /** Display name e.g. "Account type" */
22
+ displayName: string;
23
+ /** Description if provided */
24
+ description: string;
25
+ /** Picklist type */
26
+ optionSetType: OptionSetType;
27
+ /** Whether this is a global (solution-level) option set */
28
+ isGlobal: boolean;
29
+ /** Ordered list of options */
30
+ options: ChoiceOptionModel[];
31
+ }
32
+ //# sourceMappingURL=globalChoice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalChoice.d.ts","sourceRoot":"","sources":["../../src/ir/globalChoice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * IR model for Global Option Sets (Global Choices).
3
+ * These are solution-level picklists reusable across multiple tables/columns.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=globalChoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalChoice.js","sourceRoot":"","sources":["../../src/ir/globalChoice.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -10,5 +10,7 @@ export type { ClassicWorkflowCategory, ClassicWorkflowMode, ClassicWorkflowScope
10
10
  export type { BusinessRuleModel, BusinessRuleCondition, BusinessRuleAction, BusinessRuleActionType, BusinessRuleScope } from './businessRule.js';
11
11
  export type { SecurityRoleModel, EntityPrivileges, PrivilegeLevel } from './securityRole.js';
12
12
  export type { EnvironmentVariableModel, EnvironmentVariableType } from './environmentVariable.js';
13
+ export type { GlobalChoiceModel, ChoiceOptionModel, OptionSetType } from './globalChoice.js';
14
+ export type { EmailTemplateModel } from './emailTemplate.js';
13
15
  export { WEB_RESOURCE_TYPE_MAP } from './webResource.js';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC7G,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClI,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACvL,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjJ,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC7G,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClI,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACvL,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjJ,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAClG,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EmailTemplateModel } from '../ir/emailTemplate.js';
2
+ export declare function parseEmailTemplates(solutionRoot: string): EmailTemplateModel[];
3
+ //# sourceMappingURL=emailTemplateParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplateParser.d.ts","sourceRoot":"","sources":["../../src/parsers/emailTemplateParser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAuGjE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiB9E"}
@@ -0,0 +1,109 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { XMLParser } from 'fast-xml-parser';
4
+ const xmlParser = new XMLParser({
5
+ ignoreAttributes: false,
6
+ attributeNamePrefix: '@_',
7
+ isArray: (name) => name === 'emailtemplate',
8
+ });
9
+ const ENTITY_TYPE_MAP = {
10
+ 0: 'Global',
11
+ 1: 'Account',
12
+ 2: 'Contact',
13
+ 3: 'Opportunity',
14
+ 4: 'Lead',
15
+ 5: 'Case',
16
+ 6: 'Invoice',
17
+ 7: 'Order',
18
+ 8: 'Quote',
19
+ 9: 'Campaign Activity',
20
+ 10: 'Campaign',
21
+ 4700: 'System',
22
+ };
23
+ function resolveEntity(code) {
24
+ return ENTITY_TYPE_MAP[code] ?? `Entity (${code})`;
25
+ }
26
+ /**
27
+ * Reconstructs readable text from an XSL template by interleaving
28
+ * CDATA text content and xsl:value-of dynamic field placeholders in order.
29
+ * Returns { text, dynamicFields }.
30
+ */
31
+ function extractFromXsl(xslPath) {
32
+ if (!fs.existsSync(xslPath))
33
+ return { text: '', dynamicFields: [] };
34
+ const raw = fs.readFileSync(xslPath, 'utf-8');
35
+ const parts = [];
36
+ const dynamicFields = [];
37
+ // Walk CDATA blocks and xsl:value-of selects in document order
38
+ const allMatches = [
39
+ ...raw.matchAll(/\[CDATA\[([\s\S]*?)\]\]|<xsl:value-of select="([^"]+)"/g)
40
+ ];
41
+ for (const m of allMatches) {
42
+ if (m[1] !== undefined) {
43
+ // CDATA block — strip HTML tags, normalise whitespace
44
+ const text = m[1]
45
+ .replace(/<\/?(p|div|li|ul|ol|br)[^>]*>/gi, '\n')
46
+ .replace(/<[^>]+>/g, '')
47
+ .replace(/&nbsp;/g, ' ')
48
+ .replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&')
49
+ .replace(/[ \t]+/g, ' ')
50
+ .replace(/\n[ \t]+/g, '\n')
51
+ .trim();
52
+ if (text)
53
+ parts.push(text);
54
+ }
55
+ else if (m[2] && !m[2].startsWith('/')) {
56
+ // Dynamic field reference — format as {fieldName}
57
+ const field = m[2]
58
+ .replace(/^[a-z_]+\//, '') // strip entity prefix e.g. "contact/"
59
+ .replace(/\/@name$/, ''); // strip @name attribute selector
60
+ parts.push(`{${field}}`);
61
+ if (!dynamicFields.includes(m[2]))
62
+ dynamicFields.push(m[2]);
63
+ }
64
+ }
65
+ const text = parts.join('').replace(/\n{3,}/g, '\n\n').trim();
66
+ return { text, dynamicFields };
67
+ }
68
+ function parseTemplateEntry(entry, emailTemplatesDir) {
69
+ const id = (entry['templateid'] ?? '').replace(/[{}]/g, '');
70
+ const title = entry['title'] ?? '';
71
+ const description = entry['description'] ?? '';
72
+ const templateTypeCode = Number(entry['templatetypecode'] ?? 0);
73
+ const languageCode = Number(entry['languagecode'] ?? 1033);
74
+ const isCustomizable = String(entry['IsCustomizable'] ?? '1') === '1';
75
+ const xslDir = path.join(emailTemplatesDir, 'EmailDocuments', String(languageCode), '{' + id + '}');
76
+ const subjectXslPath = path.join(xslDir, 'subject.xsl');
77
+ const { text: subject, dynamicFields: subjectFields } = extractFromXsl(subjectXslPath);
78
+ const bodyXslPath = path.join(xslDir, 'body.xsl');
79
+ const { text: body, dynamicFields: bodyFields } = extractFromXsl(bodyXslPath);
80
+ const allFields = [...new Set([...subjectFields, ...bodyFields])].sort();
81
+ return {
82
+ id,
83
+ title,
84
+ description,
85
+ targetEntity: resolveEntity(templateTypeCode),
86
+ templateTypeCode,
87
+ subject,
88
+ body,
89
+ dynamicFields: allFields,
90
+ languageCode,
91
+ isCustomizable,
92
+ };
93
+ }
94
+ export function parseEmailTemplates(solutionRoot) {
95
+ const emailTemplatesDir = path.join(solutionRoot, 'Templates');
96
+ const metaPath = path.join(emailTemplatesDir, 'EmailTemplates.xml');
97
+ if (!fs.existsSync(metaPath)) {
98
+ console.log(`No Templates folder found at: ${emailTemplatesDir}`);
99
+ return [];
100
+ }
101
+ const xml = fs.readFileSync(metaPath, 'utf-8');
102
+ const doc = xmlParser.parse(xml);
103
+ const entries = doc['EmailTemplates']?.['emailtemplate'] ?? [];
104
+ return entries
105
+ .map(e => parseTemplateEntry(e, emailTemplatesDir))
106
+ .filter(t => t.isCustomizable && t.title)
107
+ .sort((a, b) => a.title.localeCompare(b.title));
108
+ }
109
+ //# sourceMappingURL=emailTemplateParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailTemplateParser.js","sourceRoot":"","sources":["../../src/parsers/emailTemplateParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { GlobalChoiceModel } from '../ir/globalChoice.js';
2
+ /**
3
+ * Scans the OptionSets/ folder and returns a model per global choice file.
4
+ * Filters to custom choices using the publisher prefix (e.g. "isms_").
5
+ * Sorted alphabetically by display name.
6
+ */
7
+ export declare function parseGlobalChoices(solutionRoot: string, publisherPrefix?: string): GlobalChoiceModel[];
8
+ //# sourceMappingURL=globalChoiceParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalChoiceParser.d.ts","sourceRoot":"","sources":["../../src/parsers/globalChoiceParser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAoC,MAAM,uBAAuB,CAAC;AAsEjG;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,iBAAiB,EAAE,CAgBrB"}
@@ -0,0 +1,83 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { XMLParser } from 'fast-xml-parser';
4
+ const xmlParser = new XMLParser({
5
+ ignoreAttributes: false,
6
+ attributeNamePrefix: '@_',
7
+ isArray: (name) => name === 'option' || name === 'label' || name === 'Description' || name === 'displayname',
8
+ });
9
+ function parseOptionSetType(raw) {
10
+ switch ((raw ?? '').toLowerCase()) {
11
+ case 'picklist': return 'picklist';
12
+ case 'bool': return 'bool';
13
+ case 'status': return 'status';
14
+ case 'state': return 'state';
15
+ default: return 'Unknown';
16
+ }
17
+ }
18
+ function parseOption(raw) {
19
+ const value = Number(raw['@_value'] ?? 0);
20
+ const isHidden = String(raw['@_IsHidden'] ?? '0') === '1';
21
+ const externalValue = String(raw['@_ExternalValue'] ?? '');
22
+ // Label — pick languagecode 1033 (English) first, fall back to first available
23
+ const labels = raw['labels']?.['label'] ?? [];
24
+ const englishLabel = labels.find((l) => String(l['@_languagecode']) === '1033');
25
+ const label = (englishLabel ?? labels[0])?.['@_description'] ?? '';
26
+ // Description
27
+ const descriptions = raw['Descriptions']?.['Description'] ?? [];
28
+ const englishDesc = descriptions.find((d) => String(d['@_languagecode']) === '1033');
29
+ const description = (englishDesc ?? descriptions[0])?.['@_description'] ?? '';
30
+ return { value, label, description, isHidden, externalValue };
31
+ }
32
+ function parseChoiceFile(filePath) {
33
+ try {
34
+ const xml = fs.readFileSync(filePath, 'utf-8');
35
+ const doc = xmlParser.parse(xml);
36
+ const os = doc['optionset'];
37
+ if (!os)
38
+ return null;
39
+ const schemaName = os['@_Name'] ?? path.basename(filePath, '.xml');
40
+ // Display name — prefer localizedName attribute, fall back to displaynames element
41
+ const localizedName = os['@_localizedName'] ?? '';
42
+ const displayNameEl = os['displaynames']?.['displayname'] ?? [];
43
+ const displayNameFromEl = (Array.isArray(displayNameEl) ? displayNameEl[0] : displayNameEl)?.['@_description'] ?? '';
44
+ const displayName = localizedName || displayNameFromEl || schemaName;
45
+ // Description
46
+ const descEl = os['Descriptions']?.['Description'] ?? [];
47
+ const descItem = Array.isArray(descEl) ? descEl[0] : descEl;
48
+ const description = descItem?.['@_description'] ?? '';
49
+ const optionSetType = parseOptionSetType(os['OptionSetType']);
50
+ const isGlobal = String(os['IsGlobal'] ?? '1') === '1';
51
+ // Options — filter out hidden ones by default; keep all and let renderer decide
52
+ const rawOptions = os['options']?.['option'] ?? [];
53
+ const options = rawOptions.map(parseOption);
54
+ return { schemaName, displayName, description, optionSetType, isGlobal, options };
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Scans the OptionSets/ folder and returns a model per global choice file.
62
+ * Filters to custom choices using the publisher prefix (e.g. "isms_").
63
+ * Sorted alphabetically by display name.
64
+ */
65
+ export function parseGlobalChoices(solutionRoot, publisherPrefix) {
66
+ const optionSetsDir = path.join(solutionRoot, 'OptionSets');
67
+ if (!fs.existsSync(optionSetsDir))
68
+ return [];
69
+ return fs
70
+ .readdirSync(optionSetsDir)
71
+ .filter(f => {
72
+ if (!f.endsWith('.xml'))
73
+ return false;
74
+ if (publisherPrefix) {
75
+ return f.toLowerCase().startsWith(`${publisherPrefix.toLowerCase()}_`);
76
+ }
77
+ return true;
78
+ })
79
+ .map(f => parseChoiceFile(path.join(optionSetsDir, f)))
80
+ .filter((m) => m !== null)
81
+ .sort((a, b) => a.displayName.localeCompare(b.displayName));
82
+ }
83
+ //# sourceMappingURL=globalChoiceParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalChoiceParser.js","sourceRoot":"","sources":["../../src/parsers/globalChoiceParser.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,6 @@ export { parseClassicWorkflows } from './classicWorkflowParser.js';
11
11
  export { parseBusinessRules } from './businessRuleParser.js';
12
12
  export { parseSecurityRoles } from './securityRoleParser.js';
13
13
  export { parseEnvironmentVariables } from './environmentVariableParser.js';
14
+ export { parseGlobalChoices } from './globalChoiceParser.js';
15
+ export { parseEmailTemplates } from './emailTemplateParser.js';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -11,4 +11,6 @@ export { parseClassicWorkflows } from './classicWorkflowParser.js';
11
11
  export { parseBusinessRules } from './businessRuleParser.js';
12
12
  export { parseSecurityRoles } from './securityRoleParser.js';
13
13
  export { parseEnvironmentVariables } from './environmentVariableParser.js';
14
+ export { parseGlobalChoices } from './globalChoiceParser.js';
15
+ export { parseEmailTemplates } from './emailTemplateParser.js';
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { DocGenConfig } from '../config/index.js';
2
- import type { SolutionModel, FlowModel, PluginAssemblyModel, WebResourceModel, SecurityRoleModel, ClassicWorkflowModel, BusinessRuleModel, EnvironmentVariableModel } from '../ir/index.js';
2
+ import type { SolutionModel, FlowModel, PluginAssemblyModel, WebResourceModel, SecurityRoleModel, ClassicWorkflowModel, BusinessRuleModel, EnvironmentVariableModel, GlobalChoiceModel, EmailTemplateModel } from '../ir/index.js';
3
3
  import type { WikiPage } from './wikiPublisher.js';
4
- export declare function buildWikiPages(config: DocGenConfig, solutions: SolutionModel[], mergedSolution: SolutionModel, flows: FlowModel[], pluginAssemblies?: PluginAssemblyModel[], webResources?: WebResourceModel[], classicWorkflows?: ClassicWorkflowModel[], businessRules?: BusinessRuleModel[], securityRoles?: SecurityRoleModel[], envVars?: EnvironmentVariableModel[]): WikiPage[];
4
+ export declare function buildWikiPages(config: DocGenConfig, solutions: SolutionModel[], mergedSolution: SolutionModel, flows: FlowModel[], pluginAssemblies?: PluginAssemblyModel[], webResources?: WebResourceModel[], classicWorkflows?: ClassicWorkflowModel[], businessRules?: BusinessRuleModel[], securityRoles?: SecurityRoleModel[], envVars?: EnvironmentVariableModel[], globalChoices?: GlobalChoiceModel[], emailTemplates?: EmailTemplateModel[]): WikiPage[];
5
5
  //# sourceMappingURL=wikiAssembler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wikiAssembler.d.ts","sourceRoot":"","sources":["../../src/publisher/wikiAssembler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAC/D,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EACrF,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA0BnD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,aAAa,EAAE,EAC1B,cAAc,EAAE,aAAa,EAC7B,KAAK,EAAE,SAAS,EAAE,EAClB,gBAAgB,GAAE,mBAAmB,EAAO,EAC5C,YAAY,GAAE,gBAAgB,EAAO,EACrC,gBAAgB,GAAE,oBAAoB,EAAO,EAC7C,aAAa,GAAE,iBAAiB,EAAO,EACvC,aAAa,GAAE,iBAAiB,EAAO,EACvC,OAAO,GAAE,wBAAwB,EAAO,GACvC,QAAQ,EAAE,CA8MZ"}
1
+ {"version":3,"file":"wikiAssembler.d.ts","sourceRoot":"","sources":["../../src/publisher/wikiAssembler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAC/D,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EACpF,iBAAiB,EAAE,kBAAkB,EACtC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA4BnD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,aAAa,EAAE,EAC1B,cAAc,EAAE,aAAa,EAC7B,KAAK,EAAE,SAAS,EAAE,EAClB,gBAAgB,GAAE,mBAAmB,EAAO,EAC5C,YAAY,GAAE,gBAAgB,EAAO,EACrC,gBAAgB,GAAE,oBAAoB,EAAO,EAC7C,aAAa,GAAE,iBAAiB,EAAO,EACvC,aAAa,GAAE,iBAAiB,EAAO,EACvC,OAAO,GAAE,wBAAwB,EAAO,EACxC,aAAa,GAAE,iBAAiB,EAAO,EACvC,cAAc,GAAE,kBAAkB,EAAO,GACxC,QAAQ,EAAE,CAyPZ"}