@mcp-consultant-tools/azure-devops 30.0.0-beta.16 → 30.0.0-beta.18

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 (41) hide show
  1. package/build/services/sync-service.d.ts.map +1 -1
  2. package/build/services/sync-service.js +16 -12
  3. package/build/services/sync-service.js.map +1 -1
  4. package/build/sync/annotation-parser.d.ts +49 -0
  5. package/build/sync/annotation-parser.d.ts.map +1 -0
  6. package/build/sync/annotation-parser.js +81 -0
  7. package/build/sync/annotation-parser.js.map +1 -0
  8. package/build/sync/field-aliases.d.ts +35 -0
  9. package/build/sync/field-aliases.d.ts.map +1 -0
  10. package/build/sync/field-aliases.js +76 -0
  11. package/build/sync/field-aliases.js.map +1 -0
  12. package/build/sync/html-detection.d.ts +16 -65
  13. package/build/sync/html-detection.d.ts.map +1 -1
  14. package/build/sync/html-detection.js +63 -112
  15. package/build/sync/html-detection.js.map +1 -1
  16. package/build/sync/image-sync.d.ts +8 -5
  17. package/build/sync/image-sync.d.ts.map +1 -1
  18. package/build/sync/image-sync.js +18 -10
  19. package/build/sync/image-sync.js.map +1 -1
  20. package/build/sync/index.d.ts +4 -0
  21. package/build/sync/index.d.ts.map +1 -1
  22. package/build/sync/index.js +4 -0
  23. package/build/sync/index.js.map +1 -1
  24. package/build/sync/legacy-mappings.d.ts +37 -0
  25. package/build/sync/legacy-mappings.d.ts.map +1 -0
  26. package/build/sync/legacy-mappings.js +75 -0
  27. package/build/sync/legacy-mappings.js.map +1 -0
  28. package/build/sync/markdown-serializer.d.ts +52 -60
  29. package/build/sync/markdown-serializer.d.ts.map +1 -1
  30. package/build/sync/markdown-serializer.js +603 -603
  31. package/build/sync/markdown-serializer.js.map +1 -1
  32. package/build/sync/template-loader.d.ts +56 -0
  33. package/build/sync/template-loader.d.ts.map +1 -0
  34. package/build/sync/template-loader.js +138 -0
  35. package/build/sync/template-loader.js.map +1 -0
  36. package/build/sync/templates/bug.md +25 -0
  37. package/build/sync/templates/epic.md +23 -0
  38. package/build/sync/templates/feature.md +23 -0
  39. package/build/sync/templates/task.md +14 -0
  40. package/build/sync/templates/user-story.md +26 -0
  41. package/package.json +2 -2
@@ -1,147 +1,101 @@
1
1
  /**
2
- * HTML Detection Utility
2
+ * HTML detection for ADO large-text fields.
3
3
  *
4
- * Detects whether ADO work item content is HTML (legacy) or Markdown format.
5
- * ADO supports both formats and we can only sync markdown fields.
6
- */
7
- /**
8
- * Get additional field configuration from environment variables
9
- * Falls back to common default field names
10
- */
11
- export function getAdditionalFieldConfig() {
12
- return {
13
- howToTest: process.env.AZUREDEVOPS_SYNC_FIELD_HOW_TO_TEST || 'Custom.Howtotest',
14
- deploymentInformation: process.env.AZUREDEVOPS_SYNC_FIELD_DEPLOYMENT_INFO || 'Custom.Deploymentinformation',
15
- predeploymentSteps: process.env.AZUREDEVOPS_SYNC_FIELD_PREDEPLOY || 'Custom.7519d1bc-5305-4905-822b-2b380e61b154',
16
- postdeploymentSteps: process.env.AZUREDEVOPS_SYNC_FIELD_POSTDEPLOY || 'Custom.abd6763f-a242-4938-85ed-bda419e34e7e',
17
- };
18
- }
19
- /**
20
- * Human-readable names for additional fields (for display/logging)
4
+ * ADO supports both HTML and Markdown for long-text fields. Sync only
5
+ * works against markdown, so before pulling (or pushing) we auto-detect
6
+ * HTML and either convert it or report it as skipped.
7
+ *
8
+ * This module is intentionally generic it no longer maintains a fixed
9
+ * list of "additional" custom fields. Callers pass in the refname list
10
+ * they care about (usually derived from the loaded template).
21
11
  */
22
- export const ADDITIONAL_FIELD_DISPLAY_NAMES = {
23
- howToTest: 'How to Test',
24
- deploymentInformation: 'Deployment Information',
25
- predeploymentSteps: 'Predeployment Steps',
26
- postdeploymentSteps: 'Postdeployment Steps',
27
- };
28
12
  /**
29
- * Large text fields that support markdown format in Azure DevOps.
30
- * These are the standard ADO fields that can be set to markdown format.
13
+ * Standard ADO large-text fields with native markdown support.
31
14
  */
32
- export const LARGE_TEXT_FIELDS = [
15
+ export const STANDARD_LARGE_TEXT_FIELDS = [
33
16
  'System.Description',
34
17
  'Microsoft.VSTS.Common.AcceptanceCriteria',
35
18
  'Microsoft.VSTS.TCM.ReproSteps',
36
19
  ];
37
20
  /**
38
- * Get all large text fields including custom ones from config.
39
- * Used to determine which fields should have markdown format set.
21
+ * Return the list of large-text fields to check for a work item. Combines
22
+ * the standard set with any caller-supplied custom refnames (from the
23
+ * loaded template).
40
24
  */
41
- export function getAllLargeTextFields() {
42
- const config = getAdditionalFieldConfig();
43
- return [
44
- ...LARGE_TEXT_FIELDS,
45
- config.howToTest,
46
- config.deploymentInformation,
47
- config.predeploymentSteps,
48
- config.postdeploymentSteps,
49
- ];
25
+ export function getAllLargeTextFields(customRefnames = []) {
26
+ const set = new Set([...STANDARD_LARGE_TEXT_FIELDS, ...customRefnames]);
27
+ return [...set];
50
28
  }
51
- // Structural HTML patterns that indicate the content is HTML (not markdown)
29
+ // ---------------------------------------------------------------------------
30
+ // HTML detection (pattern-based heuristic)
31
+ // ---------------------------------------------------------------------------
52
32
  const HTML_STRUCTURAL_PATTERNS = [
53
- /<div[^>]*>/i, // <div> tags
54
- /<p[^>]*>/i, // <p> tags
55
- /<h[1-6][^>]*>/i, // HTML heading tags
56
- /<strong[^>]*>/i, // <strong> tags (instead of **)
57
- /<em[^>]*>/i, // <em> tags (instead of *)
58
- /<ul[^>]*>/i, // HTML unordered lists
59
- /<ol[^>]*>/i, // HTML ordered lists
60
- /<li[^>]*>/i, // List items in HTML
61
- /<table[^>]*>/i, // HTML tables
62
- /<tr[^>]*>/i, // Table rows
63
- /<td[^>]*>/i, // Table cells
64
- /<span[^>]*>/i, // Span elements (ADO often uses these)
33
+ /<div[^>]*>/i,
34
+ /<p[^>]*>/i,
35
+ /<h[1-6][^>]*>/i,
36
+ /<strong[^>]*>/i,
37
+ /<em[^>]*>/i,
38
+ /<ul[^>]*>/i,
39
+ /<ol[^>]*>/i,
40
+ /<li[^>]*>/i,
41
+ /<table[^>]*>/i,
42
+ /<tr[^>]*>/i,
43
+ /<td[^>]*>/i,
44
+ /<span[^>]*>/i,
65
45
  ];
66
- // Markdown patterns that indicate the content is already markdown
67
46
  const MARKDOWN_PATTERNS = [
68
- /^#{1,6}\s+/m, // Markdown headings (# Heading)
69
- /\*\*[^*]+\*\*/, // Bold text with **
70
- /^\s*[-*+]\s+/m, // Unordered list items (-, *, +)
71
- /^\s*\d+\.\s+/m, // Numbered list items (1. item)
72
- /\[.+?\]\(.+?\)/, // Markdown links [text](url)
73
- /```[\s\S]*?```/, // Fenced code blocks
74
- /`[^`]+`/, // Inline code
75
- /^\s*>\s+/m, // Block quotes
47
+ /^#{1,6}\s+/m,
48
+ /\*\*[^*]+\*\*/,
49
+ /^\s*[-*+]\s+/m,
50
+ /^\s*\d+\.\s+/m,
51
+ /\[.+?\]\(.+?\)/,
52
+ /```[\s\S]*?```/,
53
+ /`[^`]+`/,
54
+ /^\s*>\s+/m,
76
55
  ];
77
- /**
78
- * Check if content is HTML format (as opposed to markdown)
79
- *
80
- * @param content - The content string to check
81
- * @returns true if content appears to be HTML, false if markdown or empty
82
- */
83
56
  export function isHtmlContent(content) {
84
- if (!content?.trim()) {
57
+ if (!content?.trim())
85
58
  return false;
86
- }
87
- // If clear markdown syntax is present, treat as markdown (even if some inline HTML exists)
88
- // This handles cases where users mix markdown with allowed inline HTML
89
59
  for (const pattern of MARKDOWN_PATTERNS) {
90
- if (pattern.test(content)) {
60
+ if (pattern.test(content))
91
61
  return false;
92
- }
93
62
  }
94
- // Check for structural HTML patterns that indicate this is HTML content
95
63
  for (const pattern of HTML_STRUCTURAL_PATTERNS) {
96
- if (pattern.test(content)) {
64
+ if (pattern.test(content))
97
65
  return true;
98
- }
99
66
  }
100
- // Default to markdown (plain text is valid markdown)
101
67
  return false;
102
68
  }
103
- /**
104
- * Check field formats for a work item
105
- *
106
- * Primary fields (Description, Acceptance Criteria): If HTML, work item is not ready for sync.
107
- * Secondary fields (How to Test, Deployment fields): If HTML, warn but allow sync (skip those fields).
108
- *
109
- * @param workItem - The work item object from ADO API
110
- * @returns Object with field format information
111
- */
112
- export function checkFieldFormats(workItem) {
69
+ export function checkFieldFormats(workItem, additionalRefnames = []) {
113
70
  const fields = workItem.fields || {};
114
- const fieldConfig = getAdditionalFieldConfig();
115
71
  const description = fields['System.Description'] || '';
116
72
  const acceptanceCriteria = fields['Microsoft.VSTS.Common.AcceptanceCriteria'] || '';
117
73
  const reproSteps = fields['Microsoft.VSTS.TCM.ReproSteps'] || '';
118
74
  const descriptionIsHtml = isHtmlContent(description);
119
75
  const acceptanceCriteriaIsHtml = isHtmlContent(acceptanceCriteria);
120
76
  const reproStepsIsHtml = isHtmlContent(reproSteps);
121
- // Check additional fields
122
77
  const warnings = [];
123
- const additionalFields = {
124
- howToTest: 'not_present',
125
- deploymentInformation: 'not_present',
126
- predeploymentSteps: 'not_present',
127
- postdeploymentSteps: 'not_present',
128
- };
129
- // Helper to check an additional field
130
- const checkAdditionalField = (fieldName, configKey) => {
131
- const content = fields[fieldName];
132
- if (!content || !content.trim()) {
133
- return 'not_present';
78
+ const additionalFields = {};
79
+ for (const refname of additionalRefnames) {
80
+ if (refname === 'System.Description' ||
81
+ refname === 'Microsoft.VSTS.Common.AcceptanceCriteria' ||
82
+ refname === 'Microsoft.VSTS.TCM.ReproSteps') {
83
+ // Covered by the dedicated slots above.
84
+ continue;
134
85
  }
135
- if (isHtmlContent(content)) {
136
- warnings.push(`${ADDITIONAL_FIELD_DISPLAY_NAMES[configKey]} is HTML - will be skipped`);
137
- return 'html';
86
+ const content = fields[refname];
87
+ if (!content || (typeof content === 'string' && !content.trim())) {
88
+ additionalFields[refname] = 'not_present';
89
+ continue;
138
90
  }
139
- return 'markdown';
140
- };
141
- additionalFields.howToTest = checkAdditionalField(fieldConfig.howToTest, 'howToTest');
142
- additionalFields.deploymentInformation = checkAdditionalField(fieldConfig.deploymentInformation, 'deploymentInformation');
143
- additionalFields.predeploymentSteps = checkAdditionalField(fieldConfig.predeploymentSteps, 'predeploymentSteps');
144
- additionalFields.postdeploymentSteps = checkAdditionalField(fieldConfig.postdeploymentSteps, 'postdeploymentSteps');
91
+ if (typeof content === 'string' && isHtmlContent(content)) {
92
+ warnings.push(`${refname} is HTML - will be skipped`);
93
+ additionalFields[refname] = 'html';
94
+ }
95
+ else {
96
+ additionalFields[refname] = 'markdown';
97
+ }
98
+ }
145
99
  let reproStepsFormat = 'not_present';
146
100
  if (reproSteps && reproSteps.trim()) {
147
101
  reproStepsFormat = reproStepsIsHtml ? 'html' : 'markdown';
@@ -157,12 +111,9 @@ export function checkFieldFormats(workItem) {
157
111
  descriptionLength: description.length,
158
112
  acceptanceCriteriaLength: acceptanceCriteria.length,
159
113
  reproStepsLength: reproSteps.length,
160
- }
114
+ },
161
115
  };
162
116
  }
163
- /**
164
- * Get human-readable conversion instructions
165
- */
166
117
  export function getConversionInstructions() {
167
118
  return `To convert HTML fields to markdown in Azure DevOps:
168
119
  1. Open the work item in Azure DevOps
@@ -1 +1 @@
1
- {"version":3,"file":"html-detection.js","sourceRoot":"","sources":["../../src/sync/html-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,kBAAkB;QAC/E,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,8BAA8B;QAC3G,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,6CAA6C;QACjH,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,6CAA6C;KACpH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAgD;IACzF,SAAS,EAAE,aAAa;IACxB,qBAAqB,EAAE,wBAAwB;IAC/C,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,sBAAsB;CAC5C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,oBAAoB;IACpB,0CAA0C;IAC1C,+BAA+B;CACvB,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAC1C,OAAO;QACL,GAAG,iBAAiB;QACpB,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,qBAAqB;QAC5B,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,mBAAmB;KAC3B,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,wBAAwB,GAAG;IAC/B,aAAa,EAAO,aAAa;IACjC,WAAW,EAAS,WAAW;IAC/B,gBAAgB,EAAI,oBAAoB;IACxC,gBAAgB,EAAI,gCAAgC;IACpD,YAAY,EAAQ,2BAA2B;IAC/C,YAAY,EAAQ,uBAAuB;IAC3C,YAAY,EAAQ,qBAAqB;IACzC,YAAY,EAAQ,qBAAqB;IACzC,eAAe,EAAK,cAAc;IAClC,YAAY,EAAQ,aAAa;IACjC,YAAY,EAAQ,cAAc;IAClC,cAAc,EAAM,uCAAuC;CAC5D,CAAC;AAEF,kEAAkE;AAClE,MAAM,iBAAiB,GAAG;IACxB,aAAa,EAAY,gCAAgC;IACzD,eAAe,EAAU,oBAAoB;IAC7C,eAAe,EAAU,iCAAiC;IAC1D,eAAe,EAAU,gCAAgC;IACzD,gBAAgB,EAAS,6BAA6B;IACtD,gBAAgB,EAAS,qBAAqB;IAC9C,SAAS,EAAgB,cAAc;IACvC,WAAW,EAAc,eAAe;CACzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,OAAkC;IAC9D,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2FAA2F;IAC3F,uEAAuE;IACvE,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAkCD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAMjC;IACC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,wBAAwB,EAAE,CAAC;IAE/C,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,0CAA0C,CAAC,IAAI,EAAE,CAAC;IACpF,MAAM,UAAU,GAAG,MAAM,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;IAEjE,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,wBAAwB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAEnD,0BAA0B;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAA2B;QAC/C,SAAS,EAAE,aAAa;QACxB,qBAAqB,EAAE,aAAa;QACpC,kBAAkB,EAAE,aAAa;QACjC,mBAAmB,EAAE,aAAa;KACnC,CAAC;IAEF,sCAAsC;IACtC,MAAM,oBAAoB,GAAG,CAC3B,SAAiB,EACjB,SAAsC,EACzB,EAAE;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YACxF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtF,gBAAgB,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IAC1H,gBAAgB,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IACjH,gBAAgB,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,WAAW,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IAEpH,IAAI,gBAAgB,GAAwC,aAAa,CAAC;IAC1E,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;QACpD,kBAAkB,EAAE,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;QAClE,UAAU,EAAE,gBAAgB;QAC5B,KAAK,EAAE,CAAC,iBAAiB,IAAI,CAAC,wBAAwB,IAAI,gBAAgB,KAAK,MAAM;QACrF,QAAQ;QACR,gBAAgB;QAChB,OAAO,EAAE;YACP,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,wBAAwB,EAAE,kBAAkB,CAAC,MAAM;YACnD,gBAAgB,EAAE,UAAU,CAAC,MAAM;SACpC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;+GAQsG,CAAC;AAChH,CAAC"}
1
+ {"version":3,"file":"html-detection.js","sourceRoot":"","sources":["../../src/sync/html-detection.ts"],"names":[],"mappings":"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"}
@@ -63,14 +63,17 @@ export interface PushImageResult {
63
63
  manifest: AttachmentManifest;
64
64
  }
65
65
  /**
66
- * Apply image push processing to a parsed work item file's content fields.
66
+ * Apply image push processing to a parsed work item file's body fields.
67
+ * Iterates every refname in `bodyFieldMap`, so custom body fields (not just
68
+ * the historical Description/ReproSteps/AC/custom-four) get image handling.
67
69
  * Mutates the parsed object in-place and persists the manifest.
68
70
  */
69
71
  export declare function pushWorkItemImages(parsed: {
70
- description: string;
71
- reproSteps: string;
72
- acceptanceCriteria: string;
73
- additionalFields: any;
72
+ bodyFieldMap: Record<string, string>;
73
+ description?: string;
74
+ reproSteps?: string;
75
+ acceptanceCriteria?: string;
76
+ additionalFields?: any;
74
77
  }, workItemId: number, project: string, syncFolder: string, service: ImageUploadService): Promise<PushImageResult>;
75
78
  /**
76
79
  * Append a manually-uploaded attachment to a work item's manifest.
@@ -1 +1 @@
1
- {"version":3,"file":"image-sync.d.ts","sourceRoot":"","sources":["../../src/sync/image-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAQL,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAa7B,UAAU,oBAAoB;IAC5B,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChF;AAED,UAAU,kBAAkB;IAC1B,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAwED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAqB1B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAsB1B;AAMD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAwHD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,GAAG,CAAA;CAAE,EACtG,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA4B1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACvD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"image-sync.d.ts","sourceRoot":"","sources":["../../src/sync/image-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAQL,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAa7B,UAAU,oBAAoB;IAC5B,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChF;AAED,UAAU,kBAAkB;IAC1B,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAwED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAqB1B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAsB1B;AAMD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAwHD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB,EACD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACvD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf"}
@@ -225,21 +225,29 @@ async function processFieldImagesForPush(content, fieldName, project, workItemId
225
225
  return rewriteImageSrcs(content, (src, _ado) => srcToFinalUrl.get(src) ?? null);
226
226
  }
227
227
  /**
228
- * Apply image push processing to a parsed work item file's content fields.
228
+ * Apply image push processing to a parsed work item file's body fields.
229
+ * Iterates every refname in `bodyFieldMap`, so custom body fields (not just
230
+ * the historical Description/ReproSteps/AC/custom-four) get image handling.
229
231
  * Mutates the parsed object in-place and persists the manifest.
230
232
  */
231
233
  export async function pushWorkItemImages(parsed, workItemId, project, syncFolder, service) {
232
234
  const manifest = await readManifest(syncFolder, workItemId);
233
235
  const result = { uploaded: 0, reused: 0, failed: [], manifest };
234
- parsed.description = await processFieldImagesForPush(parsed.description, 'System.Description', project, workItemId, syncFolder, service, manifest, result);
235
- parsed.reproSteps = await processFieldImagesForPush(parsed.reproSteps, 'Microsoft.VSTS.TCM.ReproSteps', project, workItemId, syncFolder, service, manifest, result);
236
- parsed.acceptanceCriteria = await processFieldImagesForPush(parsed.acceptanceCriteria, 'Microsoft.VSTS.Common.AcceptanceCriteria', project, workItemId, syncFolder, service, manifest, result);
237
- // Additional custom fields too
238
- for (const key of ['howToTest', 'predeploymentSteps', 'postdeploymentSteps', 'deploymentInformation']) {
239
- const value = parsed.additionalFields?.[key];
240
- if (typeof value === 'string' && value) {
241
- parsed.additionalFields[key] = await processFieldImagesForPush(value, `additionalFields.${key}`, project, workItemId, syncFolder, service, manifest, result);
242
- }
236
+ for (const [refname, value] of Object.entries(parsed.bodyFieldMap)) {
237
+ if (typeof value !== 'string' || !value)
238
+ continue;
239
+ parsed.bodyFieldMap[refname] = await processFieldImagesForPush(value, refname, project, workItemId, syncFolder, service, manifest, result);
240
+ }
241
+ // Keep the legacy convenience slots in sync with bodyFieldMap so downstream
242
+ // consumers that still read them (logs, diffs) see the updated content.
243
+ if (parsed.description !== undefined) {
244
+ parsed.description = parsed.bodyFieldMap['System.Description'] ?? '';
245
+ }
246
+ if (parsed.reproSteps !== undefined) {
247
+ parsed.reproSteps = parsed.bodyFieldMap['Microsoft.VSTS.TCM.ReproSteps'] ?? '';
248
+ }
249
+ if (parsed.acceptanceCriteria !== undefined) {
250
+ parsed.acceptanceCriteria = parsed.bodyFieldMap['Microsoft.VSTS.Common.AcceptanceCriteria'] ?? '';
243
251
  }
244
252
  if (result.uploaded > 0 || result.reused > 0 || manifest.attachments.length > 0) {
245
253
  await writeManifest(syncFolder, manifest);
@@ -1 +1 @@
1
- {"version":3,"file":"image-sync.js","sourceRoot":"","sources":["../../src/sync/image-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-sync.js","sourceRoot":"","sources":["../../src/sync/image-sync.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@
5
5
  */
6
6
  export * from './html-detection.js';
7
7
  export * from './html-converter.js';
8
+ export * from './field-aliases.js';
9
+ export * from './annotation-parser.js';
10
+ export * from './legacy-mappings.js';
11
+ export * from './template-loader.js';
8
12
  export * from './markdown-serializer.js';
9
13
  export * from './file-utils.js';
10
14
  export * from './git-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
@@ -5,6 +5,10 @@
5
5
  */
6
6
  export * from './html-detection.js';
7
7
  export * from './html-converter.js';
8
+ export * from './field-aliases.js';
9
+ export * from './annotation-parser.js';
10
+ export * from './legacy-mappings.js';
11
+ export * from './template-loader.js';
8
12
  export * from './markdown-serializer.js';
9
13
  export * from './file-utils.js';
10
14
  export * from './git-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Backwards-compatibility mapping for pre-annotation synced files.
3
+ *
4
+ * Files generated before the annotation-driven sync format have `#`-level
5
+ * section headings with no `<!-- ado-field: ... -->` comment. We can still
6
+ * parse them by matching known headings against a fixed refname table.
7
+ *
8
+ * Type-aware: Bug work items historically used `# Description` for what is
9
+ * semantically Repro Steps. After upgrade, a Bug's `# Description` section
10
+ * maps to `Microsoft.VSTS.TCM.ReproSteps`, not `System.Description`.
11
+ */
12
+ export interface LegacyHeadingRule {
13
+ heading: string;
14
+ refname: string;
15
+ /** Optional type filter — if set, only applies when workItemType matches. */
16
+ typeFilter?: string;
17
+ }
18
+ /**
19
+ * Ordered list of legacy heading → refname rules.
20
+ * First matching rule wins.
21
+ *
22
+ * Evaluated in order — bug-specific rules come before generic rules for
23
+ * the same heading.
24
+ */
25
+ export declare const LEGACY_HEADING_RULES: LegacyHeadingRule[];
26
+ /**
27
+ * Resolve a legacy heading to an ADO refname given the work item type.
28
+ * Returns null if the heading has no known mapping (section stays local-only).
29
+ */
30
+ export declare function resolveLegacyHeading(heading: string, workItemType: string): string | null;
31
+ /**
32
+ * Override the default custom-field refnames from env vars. Preserved so that
33
+ * existing installs relying on `AZUREDEVOPS_SYNC_FIELD_*` env vars still parse
34
+ * their legacy files correctly. New installs should use templates instead.
35
+ */
36
+ export declare function applyLegacyEnvOverrides(): void;
37
+ //# sourceMappingURL=legacy-mappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-mappings.d.ts","sourceRoot":"","sources":["../../src/sync/legacy-mappings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAkBnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAY9C"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Backwards-compatibility mapping for pre-annotation synced files.
3
+ *
4
+ * Files generated before the annotation-driven sync format have `#`-level
5
+ * section headings with no `<!-- ado-field: ... -->` comment. We can still
6
+ * parse them by matching known headings against a fixed refname table.
7
+ *
8
+ * Type-aware: Bug work items historically used `# Description` for what is
9
+ * semantically Repro Steps. After upgrade, a Bug's `# Description` section
10
+ * maps to `Microsoft.VSTS.TCM.ReproSteps`, not `System.Description`.
11
+ */
12
+ /**
13
+ * Ordered list of legacy heading → refname rules.
14
+ * First matching rule wins.
15
+ *
16
+ * Evaluated in order — bug-specific rules come before generic rules for
17
+ * the same heading.
18
+ */
19
+ export const LEGACY_HEADING_RULES = [
20
+ // Bug-specific: legacy bug files wrote repro steps under `# Description`.
21
+ { heading: 'Description', refname: 'Microsoft.VSTS.TCM.ReproSteps', typeFilter: 'Bug' },
22
+ // Generic
23
+ { heading: 'Description', refname: 'System.Description' },
24
+ { heading: 'Repro Steps', refname: 'Microsoft.VSTS.TCM.ReproSteps' },
25
+ { heading: 'Acceptance Criteria', refname: 'Microsoft.VSTS.Common.AcceptanceCriteria' },
26
+ // Deprecated custom fields — historically configurable via env vars
27
+ { heading: 'How to Test', refname: 'Custom.Howtotest' },
28
+ { heading: 'Deployment Information', refname: 'Custom.Deploymentinformation' },
29
+ {
30
+ heading: 'Predeployment Steps',
31
+ refname: 'Custom.7519d1bc-5305-4905-822b-2b380e61b154',
32
+ },
33
+ {
34
+ heading: 'Postdeployment Steps',
35
+ refname: 'Custom.abd6763f-a242-4938-85ed-bda419e34e7e',
36
+ },
37
+ ];
38
+ /**
39
+ * Resolve a legacy heading to an ADO refname given the work item type.
40
+ * Returns null if the heading has no known mapping (section stays local-only).
41
+ */
42
+ export function resolveLegacyHeading(heading, workItemType) {
43
+ const normalized = heading.trim();
44
+ for (const rule of LEGACY_HEADING_RULES) {
45
+ if (rule.heading !== normalized)
46
+ continue;
47
+ if (rule.typeFilter && rule.typeFilter !== workItemType)
48
+ continue;
49
+ return rule.refname;
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Override the default custom-field refnames from env vars. Preserved so that
55
+ * existing installs relying on `AZUREDEVOPS_SYNC_FIELD_*` env vars still parse
56
+ * their legacy files correctly. New installs should use templates instead.
57
+ */
58
+ export function applyLegacyEnvOverrides() {
59
+ const overrides = [
60
+ ['How to Test', process.env.AZUREDEVOPS_SYNC_FIELD_HOW_TO_TEST],
61
+ ['Deployment Information', process.env.AZUREDEVOPS_SYNC_FIELD_DEPLOYMENT_INFO],
62
+ ['Predeployment Steps', process.env.AZUREDEVOPS_SYNC_FIELD_PREDEPLOY],
63
+ ['Postdeployment Steps', process.env.AZUREDEVOPS_SYNC_FIELD_POSTDEPLOY],
64
+ ];
65
+ for (const [heading, envValue] of overrides) {
66
+ if (!envValue)
67
+ continue;
68
+ const rule = LEGACY_HEADING_RULES.find((r) => r.heading === heading && !r.typeFilter);
69
+ if (rule)
70
+ rule.refname = envValue;
71
+ }
72
+ }
73
+ // Apply env overrides once at module load.
74
+ applyLegacyEnvOverrides();
75
+ //# sourceMappingURL=legacy-mappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-mappings.js","sourceRoot":"","sources":["../../src/sync/legacy-mappings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,0EAA0E;IAC1E,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,KAAK,EAAE;IACvF,UAAU;IACV,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACzD,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,+BAA+B,EAAE;IACpE,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,0CAA0C,EAAE;IACvF,oEAAoE;IACpE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACvD,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,8BAA8B,EAAE;IAC9E;QACE,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,6CAA6C;KACvD;IACD;QACE,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,6CAA6C;KACvD;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,YAAoB;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU;YAAE,SAAS;QAC1C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY;YAAE,SAAS;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,SAAS,GAAwC;QACrD,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;QAC/D,CAAC,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;QAC9E,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;QACrE,CAAC,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;KACxE,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACtF,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IACpC,CAAC;AACH,CAAC;AAED,2CAA2C;AAC3C,uBAAuB,EAAE,CAAC"}