@salesforce/metadata-enrichment 0.0.3 → 0.0.5

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 (51) hide show
  1. package/lib/enrichment/constants/api.d.ts +5 -1
  2. package/lib/enrichment/constants/api.js +10 -1
  3. package/lib/enrichment/constants/api.js.map +1 -1
  4. package/lib/enrichment/constants/component.d.ts +9 -0
  5. package/lib/enrichment/constants/component.js +28 -0
  6. package/lib/enrichment/constants/component.js.map +1 -0
  7. package/lib/enrichment/constants/index.d.ts +3 -2
  8. package/lib/enrichment/constants/index.js +3 -2
  9. package/lib/enrichment/constants/index.js.map +1 -1
  10. package/lib/enrichment/constants/mimeTypes.d.ts +1 -1
  11. package/lib/enrichment/constants/mimeTypes.js +1 -1
  12. package/lib/enrichment/constants/mimeTypes.js.map +1 -1
  13. package/lib/enrichment/enrichmentHandler.d.ts +4 -2
  14. package/lib/enrichment/enrichmentHandler.js +20 -18
  15. package/lib/enrichment/enrichmentHandler.js.map +1 -1
  16. package/lib/enrichment/enrichmentMetrics.d.ts +6 -0
  17. package/lib/enrichment/enrichmentMetrics.js +9 -0
  18. package/lib/enrichment/enrichmentMetrics.js.map +1 -1
  19. package/lib/enrichment/enrichmentRecords.d.ts +16 -0
  20. package/lib/enrichment/enrichmentRecords.js +117 -0
  21. package/lib/enrichment/enrichmentRecords.js.map +1 -0
  22. package/lib/enrichment/index.d.ts +5 -3
  23. package/lib/enrichment/index.js +3 -1
  24. package/lib/enrichment/index.js.map +1 -1
  25. package/lib/enrichment/types/index.d.ts +1 -1
  26. package/lib/enrichment/types/requestTypes.d.ts +1 -1
  27. package/lib/enrichment/types/responseTypes.d.ts +2 -1
  28. package/lib/enrichment/validators/index.d.ts +1 -0
  29. package/lib/enrichment/validators/index.js +17 -0
  30. package/lib/enrichment/validators/index.js.map +1 -0
  31. package/lib/enrichment/validators/lwcComponentValidator.d.ts +8 -0
  32. package/lib/enrichment/validators/lwcComponentValidator.js +26 -0
  33. package/lib/enrichment/validators/lwcComponentValidator.js.map +1 -0
  34. package/lib/files/fileProcessor.d.ts +15 -1
  35. package/lib/files/fileProcessor.js +26 -6
  36. package/lib/files/fileProcessor.js.map +1 -1
  37. package/lib/files/index.d.ts +1 -0
  38. package/lib/files/index.js +1 -0
  39. package/lib/files/index.js.map +1 -1
  40. package/lib/files/lwcProcessor.d.ts +10 -7
  41. package/lib/files/lwcProcessor.js +26 -22
  42. package/lib/files/lwcProcessor.js.map +1 -1
  43. package/lib/files/sourceComponentProcessor.d.ts +24 -0
  44. package/lib/files/sourceComponentProcessor.js +136 -0
  45. package/lib/files/sourceComponentProcessor.js.map +1 -0
  46. package/lib/index.d.ts +3 -3
  47. package/lib/index.js +2 -2
  48. package/lib/index.js.map +1 -1
  49. package/messages/errors.md +31 -0
  50. package/package.json +1 -1
  51. package/messages/enrichment.md +0 -15
@@ -1,3 +1,7 @@
1
1
  export declare const API_ENDPOINT_ENRICHMENT = "/services/data/v66.0/metadata-intelligence/enrichments/on-demand";
2
2
  export declare const ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER = "X-Chatter-Entity-Encoding";
3
- export declare const LWC_METADATA_TYPE_NAME = "LightningComponentBundle";
3
+ export declare const METADATA_TYPE_GENERIC = "Generic";
4
+ export declare const METADATA_TYPE_LWC = "Lwc";
5
+ export declare const METADATA_TYPE_APEX_CLASS = "ApexClass";
6
+ export declare const METADATA_TYPE_FLEXIPAGE = "Flexipage";
7
+ export declare const MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE: Record<string, string>;
@@ -15,5 +15,14 @@
15
15
  */
16
16
  export const API_ENDPOINT_ENRICHMENT = '/services/data/v66.0/metadata-intelligence/enrichments/on-demand';
17
17
  export const ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER = 'X-Chatter-Entity-Encoding';
18
- export const LWC_METADATA_TYPE_NAME = 'LightningComponentBundle';
18
+ export const METADATA_TYPE_GENERIC = 'Generic';
19
+ export const METADATA_TYPE_LWC = 'Lwc';
20
+ export const METADATA_TYPE_APEX_CLASS = 'ApexClass';
21
+ export const METADATA_TYPE_FLEXIPAGE = 'Flexipage';
22
+ export const MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE = {
23
+ ApexClass: METADATA_TYPE_APEX_CLASS,
24
+ Flexipage: METADATA_TYPE_FLEXIPAGE,
25
+ LightningComponentBundle: METADATA_TYPE_LWC,
26
+ Generic: METADATA_TYPE_GENERIC,
27
+ };
19
28
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/enrichment/constants/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kEAAkE,CAAC;AAE1G,MAAM,CAAC,MAAM,yCAAyC,GAAG,2BAA2B,CAAC;AAErF,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/enrichment/constants/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kEAAkE,CAAC;AAE1G,MAAM,CAAC,MAAM,yCAAyC,GAAG,2BAA2B,CAAC;AAErF,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,0CAA0C,GAA2B;IAC9E,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,uBAAuB;IAClC,wBAAwB,EAAE,iBAAiB;IAC3C,OAAO,EAAE,qBAAqB;CACjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { SourceComponent } from '@salesforce/source-deploy-retrieve';
2
+ export declare const LWC_METADATA_TYPE_NAME = "LightningComponentBundle";
3
+ export declare const SUPPORTED_COMPONENT_TYPES: ReadonlySet<string>;
4
+ /**
5
+ * Maps component type names to a validator function that determines if the component
6
+ * meets the requirements for enrichment processing.
7
+ * Returns true if the component is valid, false if it should be skipped.
8
+ */
9
+ export declare const COMPONENT_TYPE_VALIDATORS: ReadonlyMap<string, (component: SourceComponent) => boolean>;
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { LwcComponentValidator } from '../validators/index.js';
17
+ export const LWC_METADATA_TYPE_NAME = 'LightningComponentBundle';
18
+ export const SUPPORTED_COMPONENT_TYPES = new Set([LWC_METADATA_TYPE_NAME]);
19
+ /**
20
+ * Maps component type names to a validator function that determines if the component
21
+ * meets the requirements for enrichment processing.
22
+ * Returns true if the component is valid, false if it should be skipped.
23
+ */
24
+ export const COMPONENT_TYPE_VALIDATORS = new Map([
25
+ // eslint-disable-next-line @typescript-eslint/unbound-method
26
+ [LWC_METADATA_TYPE_NAME, LwcComponentValidator.validate],
27
+ ]);
28
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/enrichment/constants/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEjE,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAEhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAiE,IAAI,GAAG,CAAC;IAC7G,6DAA6D;IAC7D,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CAAC;CACzD,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
- export { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, LWC_METADATA_TYPE_NAME, } from './api.js';
2
- export { LWC_MIME_TYPES } from './mimeTypes.js';
1
+ export { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE, METADATA_TYPE_GENERIC, METADATA_TYPE_LWC, } from './api.js';
2
+ export { COMPONENT_TYPE_VALIDATORS, LWC_METADATA_TYPE_NAME, SUPPORTED_COMPONENT_TYPES } from './component.js';
3
+ export { SUPPORTED_MIME_TYPES } from './mimeTypes.js';
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, LWC_METADATA_TYPE_NAME, } from './api.js';
17
- export { LWC_MIME_TYPES } from './mimeTypes.js';
16
+ export { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE, METADATA_TYPE_GENERIC, METADATA_TYPE_LWC, } from './api.js';
17
+ export { COMPONENT_TYPE_VALIDATORS, LWC_METADATA_TYPE_NAME, SUPPORTED_COMPONENT_TYPES } from './component.js';
18
+ export { SUPPORTED_MIME_TYPES } from './mimeTypes.js';
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enrichment/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,uBAAuB,EACvB,yCAAyC,EACzC,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enrichment/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,uBAAuB,EACvB,yCAAyC,EACzC,0CAA0C,EAC1C,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- export declare const LWC_MIME_TYPES: Record<string, string>;
1
+ export declare const SUPPORTED_MIME_TYPES: Record<string, string>;
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export const LWC_MIME_TYPES = {
16
+ export const SUPPORTED_MIME_TYPES = {
17
17
  '.js': 'application/javascript',
18
18
  '.html': 'text/html',
19
19
  '.css': 'text/css',
@@ -1 +1 @@
1
- {"version":3,"file":"mimeTypes.js","sourceRoot":"","sources":["../../../src/enrichment/constants/mimeTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,eAAe;CACxB,CAAC"}
1
+ {"version":3,"file":"mimeTypes.js","sourceRoot":"","sources":["../../../src/enrichment/constants/mimeTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,eAAe;CACxB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { Connection } from '@salesforce/core';
2
2
  import type { MetadataType, SourceComponent } from '@salesforce/source-deploy-retrieve';
3
- import type { EnrichmentRequestBody, EnrichMetadataResult } from './types/index.js';
3
+ import type { EnrichmentRequestBody, EnrichMetadataResponse } from './types/index.js';
4
4
  export declare enum EnrichmentStatus {
5
5
  NOT_PROCESSED = "NOT_PROCESSED",
6
6
  SUCCESS = "SUCCESS",
@@ -11,7 +11,7 @@ export type EnrichmentRequestRecord = {
11
11
  componentName: string;
12
12
  componentType: MetadataType;
13
13
  requestBody: EnrichmentRequestBody | null;
14
- response: EnrichMetadataResult | null;
14
+ response: EnrichMetadataResponse | null;
15
15
  message: string | null;
16
16
  status: EnrichmentStatus;
17
17
  };
@@ -19,6 +19,8 @@ export declare function getMimeTypeFromExtension(filePath: string): string;
19
19
  export declare class EnrichmentHandler {
20
20
  /**
21
21
  * Processes and sends metadata enrichment requests for the input source components in the project.
22
+ * Automatically determines the metadata type for enrichment requests based on the source component.
23
+ * Supported component types are defined in SUPPORTED_COMPONENT_TYPES. All other component types are skipped.
22
24
  *
23
25
  * @param connection Salesforce connection instance
24
26
  * @param sourceComponents Array of source components to enrich
@@ -17,9 +17,9 @@ import { basename, extname } from 'node:path';
17
17
  import { SfError } from '@salesforce/core';
18
18
  import { Messages } from '@salesforce/core/messages';
19
19
  import { FileProcessor } from '../files/index.js';
20
- import { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, LWC_METADATA_TYPE_NAME, LWC_MIME_TYPES, } from './constants/index.js';
20
+ import { API_ENDPOINT_ENRICHMENT, ENRICHMENT_REQUEST_ENTITY_ENCODING_HEADER, SUPPORTED_MIME_TYPES, MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE, METADATA_TYPE_GENERIC, SUPPORTED_COMPONENT_TYPES, } from './constants/index.js';
21
21
  Messages.importMessagesDirectory(import.meta.dirname);
22
- const messages = Messages.loadMessages('@salesforce/metadata-enrichment', 'enrichment');
22
+ const messages = Messages.loadMessages('@salesforce/metadata-enrichment', 'errors');
23
23
  export var EnrichmentStatus;
24
24
  (function (EnrichmentStatus) {
25
25
  EnrichmentStatus["NOT_PROCESSED"] = "NOT_PROCESSED";
@@ -29,32 +29,33 @@ export var EnrichmentStatus;
29
29
  })(EnrichmentStatus || (EnrichmentStatus = {}));
30
30
  export function getMimeTypeFromExtension(filePath) {
31
31
  const ext = extname(filePath).toLowerCase();
32
- return LWC_MIME_TYPES[ext] || 'application/octet-stream';
32
+ return SUPPORTED_MIME_TYPES[ext] || 'application/octet-stream';
33
33
  }
34
34
  export class EnrichmentHandler {
35
35
  /**
36
36
  * Processes and sends metadata enrichment requests for the input source components in the project.
37
+ * Automatically determines the metadata type for enrichment requests based on the source component.
38
+ * Supported component types are defined in SUPPORTED_COMPONENT_TYPES. All other component types are skipped.
37
39
  *
38
40
  * @param connection Salesforce connection instance
39
41
  * @param sourceComponents Array of source components to enrich
40
42
  * @returns Promise resolving to enrichment request records
41
43
  */
42
44
  static async enrich(connection, sourceComponents) {
43
- // Enrichment is only conducted for LWC components; non-LWC components are returned as SKIPPED
44
- const lwcComponents = [];
45
- const nonLwcComponents = [];
45
+ const supportedComponents = [];
46
+ const unsupportedComponents = [];
46
47
  for (const component of sourceComponents) {
47
- if (component.type?.name === LWC_METADATA_TYPE_NAME) {
48
- lwcComponents.push(component);
48
+ if (SUPPORTED_COMPONENT_TYPES.has(component.type?.name ?? '')) {
49
+ supportedComponents.push(component);
49
50
  }
50
51
  else {
51
- nonLwcComponents.push(component);
52
+ unsupportedComponents.push(component);
52
53
  }
53
54
  }
54
- const lwcRecords = await EnrichmentHandler.createEnrichmentRequestRecords(lwcComponents);
55
- const nonLwcRecords = await EnrichmentHandler.createEnrichmentRequestRecords(nonLwcComponents, EnrichmentStatus.SKIPPED, messages.getMessage('error.enrich.lwc.only'));
56
- const enrichmentResults = await EnrichmentHandler.sendEnrichmentRequests(connection, lwcRecords);
57
- return [...enrichmentResults, ...nonLwcRecords];
55
+ const supportedRecords = await EnrichmentHandler.createEnrichmentRequestRecords(supportedComponents);
56
+ const unsupportedRecords = await EnrichmentHandler.createEnrichmentRequestRecords(unsupportedComponents, EnrichmentStatus.SKIPPED, messages.getMessage('errors.unsupported.type.default'));
57
+ const enrichmentResults = await EnrichmentHandler.sendEnrichmentRequests(connection, supportedRecords);
58
+ return [...enrichmentResults, ...unsupportedRecords];
58
59
  }
59
60
  static async createEnrichmentRequestRecord(component, status, message) {
60
61
  const componentName = component.fullName ?? component.name;
@@ -65,12 +66,13 @@ export class EnrichmentHandler {
65
66
  componentType: component.type ?? null,
66
67
  requestBody: null,
67
68
  response: null,
68
- message: messages.getMessage('error.file.read.failed', [componentName]),
69
+ message: messages.getMessage('errors.file.read.failed', [componentName]),
69
70
  status: EnrichmentStatus.SKIPPED,
70
71
  };
71
72
  }
72
73
  const contentBundle = EnrichmentHandler.createContentBundle(componentName, files);
73
- const requestBody = EnrichmentHandler.createEnrichmentRequestBody(contentBundle);
74
+ const metadataType = MAP_SOURCE_COMPONENT_TYPE_TO_METADATA_TYPE[component.type?.name ?? ''] ?? METADATA_TYPE_GENERIC;
75
+ const requestBody = EnrichmentHandler.createEnrichmentRequestBody(contentBundle, metadataType);
74
76
  return {
75
77
  componentName,
76
78
  componentType: component.type ?? null,
@@ -110,10 +112,10 @@ export class EnrichmentHandler {
110
112
  files: contentBundleFiles,
111
113
  };
112
114
  }
113
- static createEnrichmentRequestBody(contentBundle) {
115
+ static createEnrichmentRequestBody(contentBundle, metadataType = METADATA_TYPE_GENERIC) {
114
116
  return {
115
117
  contentBundles: [contentBundle],
116
- metadataType: 'Generic',
118
+ metadataType,
117
119
  maxTokens: 50,
118
120
  };
119
121
  }
@@ -132,7 +134,7 @@ export class EnrichmentHandler {
132
134
  }
133
135
  catch (error) {
134
136
  const errorMessage = error instanceof Error ? error.message : String(error);
135
- throw new SfError(messages.getMessage('error.enrichment.request', [record.componentName, errorMessage]));
137
+ throw new SfError(messages.getMessage('errors.enrichment.request', [record.componentName, errorMessage]));
136
138
  }
137
139
  }
138
140
  static async sendEnrichmentRequests(connection, records) {
@@ -1 +1 @@
1
- {"version":3,"file":"enrichmentHandler.js","sourceRoot":"","sources":["../../src/enrichment/enrichmentHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enrichmentHandler.js","sourceRoot":"","sources":["../../src/enrichment/enrichmentHandler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  import type { ComponentEnrichmentStatus } from '../common/types.js';
2
2
  import type { EnrichmentRequestRecord } from './enrichmentHandler.js';
3
+ /**
4
+ * A metrics data object for storing the final enrichment results.
5
+ * This includes components that were successfully enriched, failed, or skipped.
6
+ * This metrics object can be used to generate the final console or json output.
7
+ */
3
8
  export declare class EnrichmentMetrics {
4
9
  success: {
5
10
  count: number;
@@ -14,6 +19,7 @@ export declare class EnrichmentMetrics {
14
19
  components: ComponentEnrichmentStatus[];
15
20
  };
16
21
  total: number;
22
+ requestId?: string;
17
23
  constructor();
18
24
  static createEnrichmentMetrics(enrichmentResults: EnrichmentRequestRecord[]): EnrichmentMetrics;
19
25
  addSuccessComponent(component: ComponentEnrichmentStatus): void;
@@ -14,11 +14,17 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { EnrichmentStatus } from './enrichmentHandler.js';
17
+ /**
18
+ * A metrics data object for storing the final enrichment results.
19
+ * This includes components that were successfully enriched, failed, or skipped.
20
+ * This metrics object can be used to generate the final console or json output.
21
+ */
17
22
  export class EnrichmentMetrics {
18
23
  success;
19
24
  fail;
20
25
  skipped;
21
26
  total;
27
+ requestId;
22
28
  constructor() {
23
29
  this.success = {
24
30
  count: 0,
@@ -37,6 +43,9 @@ export class EnrichmentMetrics {
37
43
  static createEnrichmentMetrics(enrichmentResults) {
38
44
  const metrics = new EnrichmentMetrics();
39
45
  for (const record of enrichmentResults) {
46
+ if (record.response?.metadata?.requestId) {
47
+ metrics.requestId = record.response.metadata.requestId;
48
+ }
40
49
  const componentName = record.componentName;
41
50
  let typeName = '';
42
51
  if (record.componentType) {
@@ -1 +1 @@
1
- {"version":3,"file":"enrichmentMetrics.js","sourceRoot":"","sources":["../../src/enrichment/enrichmentMetrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,iBAAiB;IACrB,OAAO,CAGZ;IACK,IAAI,CAGT;IACK,OAAO,CAGZ;IACK,KAAK,CAAS;IAErB;QACE,IAAI,CAAC,OAAO,GAAG;YACb,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;QACF,IAAI,CAAC,IAAI,GAAG;YACV,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;QACF,IAAI,CAAC,OAAO,GAAG;YACb,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,EAAE;SACf,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,uBAAuB,CACnC,iBAA4C;QAE5C,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAExC,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YAE3C,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YACvC,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,CAAC;YAED,0DAA0D;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAA8B;gBAC3C,QAAQ;gBACR,aAAa;gBACb,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC;aAC3G,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC/C,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBACtD,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,mBAAmB,CAAC,SAAoC;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,SAAoC;QAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEM,mBAAmB,CAAC,SAAoC;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"enrichmentMetrics.js","sourceRoot":"","sources":["../../src/enrichment/enrichmentMetrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SourceComponent } from '@salesforce/source-deploy-retrieve';
2
+ import type { MetadataTypeAndName } from '../common/types.js';
3
+ import type { EnrichmentRequestRecord } from './enrichmentHandler.js';
4
+ import { EnrichmentStatus } from './enrichmentHandler.js';
5
+ /**
6
+ * An all-in-one data object used for tracking the enrichment process storing the components,
7
+ * their enrichment request and responses, and their enrichment results.
8
+ */
9
+ export declare class EnrichmentRecords {
10
+ readonly recordSet: Set<EnrichmentRequestRecord>;
11
+ constructor(projectSourceComponents: SourceComponent[]);
12
+ addSkippedComponents(componentsToSkip: Set<MetadataTypeAndName>): void;
13
+ updateWithStatus(componentsToUpdate: Set<MetadataTypeAndName>, status: EnrichmentStatus): void;
14
+ updateWithResults(results: EnrichmentRequestRecord[]): void;
15
+ generateSkipReasons(componentsToSkip: Set<MetadataTypeAndName>, projectSourceComponents: SourceComponent[]): void;
16
+ }
@@ -0,0 +1,117 @@
1
+ import { Messages } from '@salesforce/core/messages';
2
+ import { EnrichmentStatus } from './enrichmentHandler.js';
3
+ import { COMPONENT_TYPE_VALIDATORS, SUPPORTED_COMPONENT_TYPES } from './constants/component.js';
4
+ Messages.importMessagesDirectory(import.meta.dirname);
5
+ const messages = Messages.loadMessages('@salesforce/metadata-enrichment', 'errors');
6
+ const DEFAULT_REQUEST_BODY = {
7
+ contentBundles: [],
8
+ metadataType: 'Generic',
9
+ maxTokens: 50,
10
+ };
11
+ /**
12
+ * An all-in-one data object used for tracking the enrichment process storing the components,
13
+ * their enrichment request and responses, and their enrichment results.
14
+ */
15
+ export class EnrichmentRecords {
16
+ recordSet;
17
+ constructor(projectSourceComponents) {
18
+ this.recordSet = new Set();
19
+ // Create initial records for all provided source components with default request body
20
+ for (const component of projectSourceComponents) {
21
+ const componentName = component.fullName ?? component.name;
22
+ if (componentName && component.type) {
23
+ this.recordSet.add({
24
+ componentName,
25
+ componentType: component.type,
26
+ requestBody: DEFAULT_REQUEST_BODY,
27
+ response: null,
28
+ message: null,
29
+ status: EnrichmentStatus.NOT_PROCESSED,
30
+ });
31
+ }
32
+ }
33
+ }
34
+ addSkippedComponents(componentsToSkip) {
35
+ for (const component of componentsToSkip) {
36
+ if (!component.componentName)
37
+ continue;
38
+ // Check if record already exists
39
+ const existingRecord = Array.from(this.recordSet).find((r) => r.componentName === component.componentName);
40
+ if (existingRecord)
41
+ continue;
42
+ // Create a new record for the skipped component
43
+ this.recordSet.add({
44
+ componentName: component.componentName,
45
+ componentType: { name: component.typeName },
46
+ requestBody: DEFAULT_REQUEST_BODY,
47
+ response: null,
48
+ message: null,
49
+ status: EnrichmentStatus.SKIPPED,
50
+ });
51
+ }
52
+ }
53
+ updateWithStatus(componentsToUpdate, status) {
54
+ const componentsToUpdateMap = new Map();
55
+ for (const component of componentsToUpdate) {
56
+ if (component.componentName) {
57
+ componentsToUpdateMap.set(component.componentName, component);
58
+ }
59
+ }
60
+ for (const record of this.recordSet) {
61
+ const componentToUpdate = componentsToUpdateMap.get(record.componentName);
62
+ if (componentToUpdate) {
63
+ record.status = status;
64
+ }
65
+ }
66
+ }
67
+ updateWithResults(results) {
68
+ const resultsMap = new Map(results.map((r) => [r.componentName, r]));
69
+ for (const record of this.recordSet) {
70
+ const processedResult = resultsMap.get(record.componentName);
71
+ if (processedResult) {
72
+ record.requestBody = processedResult.requestBody;
73
+ record.response = processedResult.response;
74
+ if (record.status !== EnrichmentStatus.SKIPPED) {
75
+ record.status = processedResult.response ? EnrichmentStatus.SUCCESS : EnrichmentStatus.FAIL;
76
+ }
77
+ record.message = processedResult.message;
78
+ }
79
+ }
80
+ }
81
+ generateSkipReasons(componentsToSkip, projectSourceComponents) {
82
+ const sourceComponentMap = new Map();
83
+ for (const component of projectSourceComponents) {
84
+ const componentName = component.fullName ?? component.name;
85
+ if (componentName) {
86
+ sourceComponentMap.set(componentName, component);
87
+ }
88
+ }
89
+ for (const skip of componentsToSkip) {
90
+ if (!skip.componentName)
91
+ continue;
92
+ const record = Array.from(this.recordSet).find((r) => r.componentName === skip.componentName);
93
+ if (!record || record.status !== EnrichmentStatus.SKIPPED || record.message)
94
+ continue;
95
+ const sourceComponent = sourceComponentMap.get(skip.componentName);
96
+ const componentTypeName = sourceComponent?.type?.name ?? '';
97
+ let message;
98
+ if (!sourceComponent) {
99
+ message = messages.getMessage('errors.component.not.found');
100
+ }
101
+ else if (!SUPPORTED_COMPONENT_TYPES.has(componentTypeName)) {
102
+ message = messages.getMessage('errors.unsupported.type', [componentTypeName]);
103
+ }
104
+ else {
105
+ const validator = COMPONENT_TYPE_VALIDATORS.get(componentTypeName);
106
+ if (validator && !validator(sourceComponent)) {
107
+ message = messages.getMessage('errors.component.configuration.not.found');
108
+ }
109
+ else {
110
+ message = messages.getMessage('errors.unknown');
111
+ }
112
+ }
113
+ record.message = message;
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=enrichmentRecords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichmentRecords.js","sourceRoot":"","sources":["../../src/enrichment/enrichmentRecords.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ export type { EnrichmentRequestRecord } from './enrichmentHandler.js';
2
+ export type { ContentBundleFile, ContentBundle, EnrichmentRequestBody, EnrichmentMetadata, EnrichmentResult, EnrichMetadataResponse, } from './types/index.js';
3
+ export { API_ENDPOINT_ENRICHMENT, SUPPORTED_MIME_TYPES } from './constants/index.js';
1
4
  export { getMimeTypeFromExtension, EnrichmentHandler, EnrichmentStatus } from './enrichmentHandler.js';
2
- export { API_ENDPOINT_ENRICHMENT, LWC_MIME_TYPES } from './constants/index.js';
5
+ export { EnrichmentRecords } from './enrichmentRecords.js';
3
6
  export { EnrichmentMetrics } from './enrichmentMetrics.js';
4
- export type { EnrichmentRequestRecord } from './enrichmentHandler.js';
5
- export type { ContentBundleFile, ContentBundle, EnrichmentRequestBody, EnrichmentMetadata, EnrichmentResult, EnrichMetadataResult, } from './types/index.js';
7
+ export { LwcComponentValidator } from './validators/index.js';
@@ -13,7 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ export { API_ENDPOINT_ENRICHMENT, SUPPORTED_MIME_TYPES } from './constants/index.js';
16
17
  export { getMimeTypeFromExtension, EnrichmentHandler, EnrichmentStatus } from './enrichmentHandler.js';
17
- export { API_ENDPOINT_ENRICHMENT, LWC_MIME_TYPES } from './constants/index.js';
18
+ export { EnrichmentRecords } from './enrichmentRecords.js';
18
19
  export { EnrichmentMetrics } from './enrichmentMetrics.js';
20
+ export { LwcComponentValidator } from './validators/index.js';
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enrichment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enrichment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export type { ContentBundleFile, ContentBundle, EnrichmentRequestBody, } from './requestTypes.js';
2
- export type { EnrichmentMetadata, EnrichmentResult, EnrichMetadataResult, } from './responseTypes.js';
2
+ export type { EnrichmentMetadata, EnrichmentResult, EnrichMetadataResponse, } from './responseTypes.js';
@@ -10,6 +10,6 @@ export type ContentBundle = {
10
10
  };
11
11
  export type EnrichmentRequestBody = {
12
12
  contentBundles: ContentBundle[];
13
- metadataType: 'Generic';
13
+ metadataType: string;
14
14
  maxTokens: number;
15
15
  };
@@ -1,6 +1,7 @@
1
1
  export type EnrichmentMetadata = {
2
2
  durationMs: number;
3
3
  failureCount: number;
4
+ requestId?: string;
4
5
  successCount: number;
5
6
  timestamp: string;
6
7
  };
@@ -12,7 +13,7 @@ export type EnrichmentResult = {
12
13
  description: string;
13
14
  descriptionScore: number;
14
15
  };
15
- export type EnrichMetadataResult = {
16
+ export type EnrichMetadataResponse = {
16
17
  metadata: EnrichmentMetadata;
17
18
  results: EnrichmentResult[];
18
19
  };
@@ -0,0 +1 @@
1
+ export { LwcComponentValidator } from './lwcComponentValidator.js';
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export { LwcComponentValidator } from './lwcComponentValidator.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enrichment/validators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SourceComponent } from '@salesforce/source-deploy-retrieve';
2
+ /**
3
+ * Validator for LWC - "LightningComponentBundle" source components processing
4
+ * Validates that a corresponding metadata XML file exists
5
+ */
6
+ export declare class LwcComponentValidator {
7
+ static validate(this: void, component: SourceComponent): boolean;
8
+ }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Validator for LWC - "LightningComponentBundle" source components processing
18
+ * Validates that a corresponding metadata XML file exists
19
+ */
20
+ export class LwcComponentValidator {
21
+ static validate(component) {
22
+ const hasMetadataFile = (component.xml !== undefined);
23
+ return hasMetadataFile;
24
+ }
25
+ }
26
+ //# sourceMappingURL=lwcComponentValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lwcComponentValidator.js","sourceRoot":"","sources":["../../../src/enrichment/validators/lwcComponentValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,QAAQ,CAAa,SAA0B;QAC3D,MAAM,eAAe,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACtD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
@@ -6,8 +6,22 @@ export type FileReadResult = {
6
6
  fileContents: string;
7
7
  mimeType: string;
8
8
  };
9
+ /**
10
+ * Contract for all component-type-specific processors.
11
+ * To add support for a new component type, implement this interface and register
12
+ * the processor in COMPONENT_TYPE_PROCESSOR_MAP below.
13
+ */
14
+ export type ComponentTypeProcessor = {
15
+ updateMetadata(components: SourceComponent[], enrichmentRecords: Set<EnrichmentRequestRecord>): Promise<Set<EnrichmentRequestRecord>>;
16
+ };
17
+ /**
18
+ * A main entryway for processing file operations for metadata files.
19
+ * This includes reading and writing component files.
20
+ * Supported component types are defined in SUPPORTED_COMPONENT_TYPES and each maps
21
+ * to a dedicated processor in COMPONENT_TYPE_PROCESSOR_MAP.
22
+ */
9
23
  export declare class FileProcessor {
10
- static updateMetadataFiles(componentsToProcess: SourceComponent[], enrichmentRecords: Set<EnrichmentRequestRecord>): Promise<Set<EnrichmentRequestRecord>>;
24
+ static updateMetadata(componentsToProcess: SourceComponent[], enrichmentRecords: Set<EnrichmentRequestRecord>): Promise<Set<EnrichmentRequestRecord>>;
11
25
  static readComponentFile(componentName: string, filePath: string): Promise<FileReadResult | null>;
12
26
  static readComponentFiles(component: SourceComponent): Promise<FileReadResult[]>;
13
27
  private static groupComponentsByType;
@@ -15,16 +15,36 @@
15
15
  */
16
16
  import { readFile } from 'node:fs/promises';
17
17
  import { getMimeTypeFromExtension } from '../enrichment/enrichmentHandler.js';
18
+ import { LWC_METADATA_TYPE_NAME, SUPPORTED_COMPONENT_TYPES } from '../enrichment/constants/component.js';
18
19
  import { LwcProcessor } from './lwcProcessor.js';
20
+ /**
21
+ * Maps each supported component type to its corresponding processor.
22
+ * Add new entries here when introducing support for additional component types.
23
+ */
24
+ const COMPONENT_TYPE_PROCESSOR_MAP = new Map([
25
+ [LWC_METADATA_TYPE_NAME, new LwcProcessor()],
26
+ ]);
27
+ /**
28
+ * A main entryway for processing file operations for metadata files.
29
+ * This includes reading and writing component files.
30
+ * Supported component types are defined in SUPPORTED_COMPONENT_TYPES and each maps
31
+ * to a dedicated processor in COMPONENT_TYPE_PROCESSOR_MAP.
32
+ */
19
33
  export class FileProcessor {
20
- static async updateMetadataFiles(componentsToProcess, enrichmentRecords) {
34
+ static async updateMetadata(componentsToProcess, enrichmentRecords) {
21
35
  const componentsByType = FileProcessor.groupComponentsByType(componentsToProcess);
22
- // Only LightningComponentBundle components are supported for now
23
- const lightningComponentBundles = componentsByType.get('LightningComponentBundle') ?? [];
24
- if (lightningComponentBundles.length === 0) {
25
- return enrichmentRecords;
36
+ for (const [componentType, components] of componentsByType) {
37
+ if (!SUPPORTED_COMPONENT_TYPES.has(componentType)) {
38
+ continue;
39
+ }
40
+ const processor = COMPONENT_TYPE_PROCESSOR_MAP.get(componentType);
41
+ if (!processor) {
42
+ continue;
43
+ }
44
+ // eslint-disable-next-line no-await-in-loop
45
+ enrichmentRecords = await processor.updateMetadata(components, enrichmentRecords);
26
46
  }
27
- return LwcProcessor.updateMetadataFiles(lightningComponentBundles, enrichmentRecords);
47
+ return enrichmentRecords;
28
48
  }
29
49
  static async readComponentFile(componentName, filePath) {
30
50
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"fileProcessor.js","sourceRoot":"","sources":["../../src/files/fileProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,MAAM,OAAO,aAAa;IAEjB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACrC,mBAAsC,EACtC,iBAA+C;QAE/C,MAAM,gBAAgB,GAAG,aAAa,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;QAElF,iEAAiE;QACjE,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;QACzF,IAAI,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,OAAO,YAAY,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;IACxF,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAqB,EAAE,QAAgB;QAC3E,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO;gBACL,aAAa;gBACb,QAAQ;gBACR,YAAY;gBACZ,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAA0B;QAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE/G,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAA4B,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,UAA6B;QAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC9D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC;YAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"fileProcessor.js","sourceRoot":"","sources":["../../src/files/fileProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ export { SourceComponentProcessor } from './sourceComponentProcessor.js';
1
2
  export { FileProcessor } from './fileProcessor.js';
2
3
  export type { FileReadResult } from './fileProcessor.js';
@@ -13,5 +13,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ export { SourceComponentProcessor } from './sourceComponentProcessor.js';
16
17
  export { FileProcessor } from './fileProcessor.js';
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,11 +1,14 @@
1
1
  import type { SourceComponent } from '@salesforce/source-deploy-retrieve';
2
2
  import type { EnrichmentRequestRecord } from '../enrichment/enrichmentHandler.js';
3
3
  import type { EnrichmentResult } from '../enrichment/types/index.js';
4
- import type { FileReadResult } from './fileProcessor.js';
5
- export declare class LwcProcessor {
6
- static readComponentFiles(sourceComponents: SourceComponent[]): Promise<FileReadResult[]>;
7
- static updateMetadataFiles(lightningComponentBundles: SourceComponent[], enrichmentRecords: Set<EnrichmentRequestRecord>): Promise<Set<EnrichmentRequestRecord>>;
8
- static updateMetaXml(xmlContent: string, result: EnrichmentResult): string;
9
- static isMetaXmlFile(filePath: string): boolean;
10
- private static isSkipUpliftEnabled;
4
+ import type { ComponentTypeProcessor, FileReadResult } from './fileProcessor.js';
5
+ /**
6
+ * A LWC specific processor for reading and updating LWC metadata files.
7
+ */
8
+ export declare class LwcProcessor implements ComponentTypeProcessor {
9
+ updateMetadata(lightningComponentBundles: SourceComponent[], enrichmentRecords: Set<EnrichmentRequestRecord>): Promise<Set<EnrichmentRequestRecord>>;
10
+ readComponentFiles(sourceComponents: SourceComponent[]): Promise<FileReadResult[]>;
11
+ updateMetaXml(xmlContent: string, result: EnrichmentResult): string;
12
+ isMetaXmlFile(filePath: string): boolean;
13
+ private isSkipUpliftEnabled;
11
14
  }
@@ -21,24 +21,16 @@ import { XMLParser, XMLBuilder } from 'fast-xml-parser';
21
21
  import { EnrichmentStatus } from '../enrichment/enrichmentHandler.js';
22
22
  import { FileProcessor } from './fileProcessor.js';
23
23
  Messages.importMessagesDirectory(import.meta.dirname);
24
- const messages = Messages.loadMessages('@salesforce/metadata-enrichment', 'enrichment');
24
+ const messages = Messages.loadMessages('@salesforce/metadata-enrichment', 'errors');
25
+ /**
26
+ * A LWC specific processor for reading and updating LWC metadata files.
27
+ */
28
+ /* eslint-disable class-methods-use-this */
25
29
  export class LwcProcessor {
26
- static async readComponentFiles(sourceComponents) {
27
- const fileReadPromises = [];
28
- for (const component of sourceComponents) {
29
- const componentName = component.fullName ?? component.name;
30
- if (!componentName || !component.xml) {
31
- continue;
32
- }
33
- fileReadPromises.push(FileProcessor.readComponentFile(componentName, component.xml));
34
- }
35
- const fileResults = await Promise.all(fileReadPromises);
36
- return fileResults.filter((result) => result !== null);
37
- }
38
- static async updateMetadataFiles(lightningComponentBundles, enrichmentRecords) {
39
- const fileContents = await LwcProcessor.readComponentFiles(lightningComponentBundles);
30
+ async updateMetadata(lightningComponentBundles, enrichmentRecords) {
31
+ const fileContents = await this.readComponentFiles(lightningComponentBundles);
40
32
  for (const file of fileContents) {
41
- if (!LwcProcessor.isMetaXmlFile(file.filePath)) {
33
+ if (!this.isMetaXmlFile(file.filePath)) {
42
34
  continue;
43
35
  }
44
36
  let enrichmentRecord;
@@ -56,13 +48,13 @@ export class LwcProcessor {
56
48
  continue;
57
49
  }
58
50
  // Check if skipUplift is enabled before processing
59
- if (LwcProcessor.isSkipUpliftEnabled(file.fileContents)) {
51
+ if (this.isSkipUpliftEnabled(file.fileContents)) {
60
52
  enrichmentRecord.message = 'skipUplift is set to true';
61
53
  enrichmentRecord.status = EnrichmentStatus.SKIPPED;
62
54
  continue;
63
55
  }
64
56
  try {
65
- const updatedXml = LwcProcessor.updateMetaXml(file.fileContents, enrichmentResult);
57
+ const updatedXml = this.updateMetaXml(file.fileContents, enrichmentResult);
66
58
  // eslint-disable-next-line no-await-in-loop
67
59
  await writeFile(file.filePath, updatedXml, 'utf-8');
68
60
  }
@@ -73,7 +65,19 @@ export class LwcProcessor {
73
65
  }
74
66
  return enrichmentRecords;
75
67
  }
76
- static updateMetaXml(xmlContent, result) {
68
+ async readComponentFiles(sourceComponents) {
69
+ const fileReadPromises = [];
70
+ for (const component of sourceComponents) {
71
+ const componentName = component.fullName ?? component.name;
72
+ if (!componentName || !component.xml) {
73
+ continue;
74
+ }
75
+ fileReadPromises.push(FileProcessor.readComponentFile(componentName, component.xml));
76
+ }
77
+ const fileResults = await Promise.all(fileReadPromises);
78
+ return fileResults.filter((result) => result !== null);
79
+ }
80
+ updateMetaXml(xmlContent, result) {
77
81
  const parser = new XMLParser({
78
82
  htmlEntities: true,
79
83
  ignoreAttributes: false,
@@ -99,14 +103,14 @@ export class LwcProcessor {
99
103
  return builtXml.trim().replace(/\n{3,}/g, '\n\n');
100
104
  }
101
105
  catch (error) {
102
- throw new SfError(messages.getMessage('error.parsing.xml', [error instanceof Error ? error.message : String(error)]));
106
+ throw new SfError(messages.getMessage('errors.parsing.xml', [error instanceof Error ? error.message : String(error)]));
103
107
  }
104
108
  }
105
- static isMetaXmlFile(filePath) {
109
+ isMetaXmlFile(filePath) {
106
110
  const fileName = basename(filePath);
107
111
  return fileName.endsWith('.js-meta.xml');
108
112
  }
109
- static isSkipUpliftEnabled(xmlContent) {
113
+ isSkipUpliftEnabled(xmlContent) {
110
114
  try {
111
115
  const parser = new XMLParser({ ignoreAttributes: false, preserveOrder: false, trimValues: true });
112
116
  const xmlObj = parser.parse(xmlContent);
@@ -1 +1 @@
1
- {"version":3,"file":"lwcProcessor.js","sourceRoot":"","sources":["../../src/files/lwcProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lwcProcessor.js","sourceRoot":"","sources":["../../src/files/lwcProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type SourceComponent } from '@salesforce/source-deploy-retrieve';
2
+ import type { MetadataTypeAndName } from '../common/types.js';
3
+ export declare class SourceComponentProcessor {
4
+ /**
5
+ *
6
+ * Determine the components to SKIP based on the source components and the metadata entries.
7
+ * This includes:
8
+ * - Input components that do not exist in the source project
9
+ * - Components of unsupported types (not in SUPPORTED_COMPONENT_TYPES)
10
+ * - Components that fail type-specific validation (e.g., missing metadata configuration file)
11
+ *
12
+ * @param sourceComponents
13
+ * @param metadataEntries
14
+ * @param projectDir
15
+ * @returns
16
+ */
17
+ static getComponentsToSkip(sourceComponents: SourceComponent[], metadataEntries: string[], projectDir?: string): Set<MetadataTypeAndName>;
18
+ private static filterComponents;
19
+ private static diffRequestedComponents;
20
+ private static parseRequestedComponents;
21
+ private static getExistingSourceComponentNames;
22
+ private static createSourceComponentMap;
23
+ private static parseMetadataEntry;
24
+ }
@@ -0,0 +1,136 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { RegistryAccess } from '@salesforce/source-deploy-retrieve';
17
+ import { COMPONENT_TYPE_VALIDATORS, SUPPORTED_COMPONENT_TYPES } from '../enrichment/constants/component.js';
18
+ export class SourceComponentProcessor {
19
+ /**
20
+ *
21
+ * Determine the components to SKIP based on the source components and the metadata entries.
22
+ * This includes:
23
+ * - Input components that do not exist in the source project
24
+ * - Components of unsupported types (not in SUPPORTED_COMPONENT_TYPES)
25
+ * - Components that fail type-specific validation (e.g., missing metadata configuration file)
26
+ *
27
+ * @param sourceComponents
28
+ * @param metadataEntries
29
+ * @param projectDir
30
+ * @returns
31
+ */
32
+ static getComponentsToSkip(sourceComponents, metadataEntries, projectDir) {
33
+ const requestedComponents = SourceComponentProcessor.parseRequestedComponents(metadataEntries, projectDir);
34
+ const missingComponents = SourceComponentProcessor.diffRequestedComponents(sourceComponents, requestedComponents);
35
+ const filteredComponents = SourceComponentProcessor.filterComponents(sourceComponents, requestedComponents);
36
+ return new Set([...missingComponents, ...filteredComponents]);
37
+ }
38
+ static filterComponents(sourceComponents, requestedComponents) {
39
+ const sourceComponentMap = SourceComponentProcessor.createSourceComponentMap(sourceComponents);
40
+ const filteredComponents = new Set();
41
+ for (const requestedComponent of requestedComponents) {
42
+ if (!requestedComponent?.componentName)
43
+ continue;
44
+ const sourceComponent = sourceComponentMap.get(requestedComponent.componentName);
45
+ if (!sourceComponent)
46
+ continue;
47
+ const typeName = sourceComponent.type?.name ?? '';
48
+ // Filter out unsupported component types
49
+ if (!SUPPORTED_COMPONENT_TYPES.has(typeName)) {
50
+ filteredComponents.add({
51
+ typeName: sourceComponent.type.name,
52
+ componentName: requestedComponent.componentName,
53
+ });
54
+ continue;
55
+ }
56
+ // Run type-specific validation
57
+ const validator = COMPONENT_TYPE_VALIDATORS.get(typeName);
58
+ if (validator && !validator(sourceComponent)) {
59
+ filteredComponents.add({
60
+ typeName: sourceComponent.type.name,
61
+ componentName: requestedComponent.componentName,
62
+ });
63
+ }
64
+ }
65
+ return filteredComponents;
66
+ }
67
+ static diffRequestedComponents(sourceComponents, requestedComponents) {
68
+ const existingSourceComponentNames = SourceComponentProcessor.getExistingSourceComponentNames(sourceComponents);
69
+ const missingComponents = new Set();
70
+ for (const requestedComponent of requestedComponents) {
71
+ if (requestedComponent.componentName && !existingSourceComponentNames.has(requestedComponent.componentName)) {
72
+ missingComponents.add(requestedComponent);
73
+ }
74
+ }
75
+ return missingComponents;
76
+ }
77
+ static parseRequestedComponents(metadataEntries, projectDir) {
78
+ const requestedComponents = new Set();
79
+ for (const entry of metadataEntries) {
80
+ const parsed = SourceComponentProcessor.parseMetadataEntry(entry, projectDir);
81
+ if (!parsed) {
82
+ continue;
83
+ }
84
+ // Ignore wildcarded component names
85
+ if (parsed.componentName?.includes('*')) {
86
+ continue;
87
+ }
88
+ requestedComponents.add(parsed);
89
+ }
90
+ return requestedComponents;
91
+ }
92
+ static getExistingSourceComponentNames(sourceComponents) {
93
+ const existingSourceComponentNames = new Set();
94
+ for (const component of sourceComponents) {
95
+ const componentName = component.fullName ?? component.name;
96
+ if (componentName) {
97
+ existingSourceComponentNames.add(componentName);
98
+ }
99
+ }
100
+ return existingSourceComponentNames;
101
+ }
102
+ static createSourceComponentMap(sourceComponents) {
103
+ const componentMap = new Map();
104
+ for (const component of sourceComponents) {
105
+ const componentName = component.fullName ?? component.name;
106
+ if (componentName) {
107
+ componentMap.set(componentName, component);
108
+ }
109
+ }
110
+ return componentMap;
111
+ }
112
+ static parseMetadataEntry(rawEntry, projectDir) {
113
+ try {
114
+ const registry = new RegistryAccess(undefined, projectDir);
115
+ // Split on the first colon, and then join the rest back together to support names that include colons
116
+ const [typeName, ...nameParts] = rawEntry.split(':');
117
+ const type = registry.getTypeByName(typeName.trim());
118
+ if (!type) {
119
+ return null;
120
+ }
121
+ const metadataName = nameParts.length > 0 ? nameParts.join(':').trim() : '*';
122
+ // Return null for wildcards since componentName is required
123
+ if (metadataName === '*') {
124
+ return null;
125
+ }
126
+ return {
127
+ typeName: type.name,
128
+ componentName: metadataName,
129
+ };
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=sourceComponentProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceComponentProcessor.js","sourceRoot":"","sources":["../../src/files/sourceComponentProcessor.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { FileProcessor } from './files/index.js';
1
+ export { SourceComponentProcessor, FileProcessor } from './files/index.js';
2
2
  export type { FileReadResult } from './files/index.js';
3
- export { getMimeTypeFromExtension, EnrichmentHandler, EnrichmentStatus, API_ENDPOINT_ENRICHMENT, LWC_MIME_TYPES, EnrichmentMetrics, } from './enrichment/index.js';
4
- export type { ContentBundleFile, ContentBundle, EnrichmentRequestBody, EnrichmentMetadata, EnrichmentResult, EnrichMetadataResult, EnrichmentRequestRecord, } from './enrichment/index.js';
3
+ export { getMimeTypeFromExtension, API_ENDPOINT_ENRICHMENT, SUPPORTED_MIME_TYPES, EnrichmentHandler, EnrichmentMetrics, EnrichmentRecords, EnrichmentStatus, LwcComponentValidator, } from './enrichment/index.js';
4
+ export type { ContentBundleFile, ContentBundle, EnrichmentRequestBody, EnrichmentMetadata, EnrichmentResult, EnrichMetadataResponse, EnrichmentRequestRecord, } from './enrichment/index.js';
5
5
  export type { ComponentEnrichmentStatus, MetadataTypeAndName } from './common/index.js';
package/lib/index.js CHANGED
@@ -13,6 +13,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export { FileProcessor } from './files/index.js';
17
- export { getMimeTypeFromExtension, EnrichmentHandler, EnrichmentStatus, API_ENDPOINT_ENRICHMENT, LWC_MIME_TYPES, EnrichmentMetrics, } from './enrichment/index.js';
16
+ export { SourceComponentProcessor, FileProcessor } from './files/index.js';
17
+ export { getMimeTypeFromExtension, API_ENDPOINT_ENRICHMENT, SUPPORTED_MIME_TYPES, EnrichmentHandler, EnrichmentMetrics, EnrichmentRecords, EnrichmentStatus, LwcComponentValidator, } from './enrichment/index.js';
18
18
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,31 @@
1
+ # errors.component.not.found
2
+
3
+ Component not found in project.
4
+
5
+ # errors.unsupported.type.default
6
+
7
+ This component type is not currently supported for enrichment.
8
+
9
+ # errors.unsupported.type
10
+
11
+ Component type '%s' is not currently supported for enrichment.
12
+
13
+ # errors.component.configuration.not.found
14
+
15
+ The component's metadata configuration file doesn't exist.
16
+
17
+ # errors.enrichment.request
18
+
19
+ Error sending request for component %s %s.
20
+
21
+ # errors.unknown
22
+
23
+ An unknown error occurred.
24
+
25
+ # errors.parsing.xml
26
+
27
+ Failed to parse XML: %s.
28
+
29
+ # errors.file.read.failed
30
+
31
+ Failed to read file for component %s.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/metadata-enrichment",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "A library for handling metadata enrichment",
5
5
  "author": "Salesforce",
6
6
  "main": "lib/index",
@@ -1,15 +0,0 @@
1
- # error.enrichment.request
2
-
3
- Error sending request for component %s %s.
4
-
5
- # error.parsing.xml
6
-
7
- Failed to parse XML: %s.
8
-
9
- # error.file.read.failed
10
-
11
- Failed to read file for component %s.
12
-
13
- # error.enrich.lwc.only
14
-
15
- Enrichment currently supports only Lightning Web Components, represented by the LightningComponentBundle metadata type.