sfdx-git-delta 6.41.0 → 6.41.1

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <!-- markdownlint-disable MD040 MD041 -->
2
2
  ![Actions Status](https://github.com/scolladon/sfdx-git-delta/workflows/Main/badge.svg)
3
- [![Performance Dashboard](https://img.shields.io/static/v1?label=Performance&message=Dashboard&color=blue)](https://scolladon.github.io/sfdx-git-delta/dev/bench/)
3
+ [![Performance Dashboard](https://img.shields.io/badge/Performance-Dashboard-58a6ff)](https://scolladon.github.io/sfdx-git-delta/dev/bench/runtime/)
4
4
  [![npm](https://badgen.net/npm/v/sfdx-git-delta)](https://badgen.net/npm/v/sfdx-git-delta)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/95619399c7bb2cf60da4/maintainability)](https://codeclimate.com/github/scolladon/sfdx-git-delta/maintainability)
6
6
  [![Code Coverage](https://codecov.io/gh/scolladon/sfdx-git-delta/branch/main/graph/badge.svg?token=92T8XKKBHN)](https://codecov.io/gh/scolladon/sfdx-git-delta)
@@ -201,7 +201,7 @@ FLAG DESCRIPTIONS
201
201
  of a diff, in which case changes may still be picked up.
202
202
  ```
203
203
 
204
- _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.41.0/src/commands/sgd/source/delta.ts)_
204
+ _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.41.1/src/commands/sgd/source/delta.ts)_
205
205
  <!-- commandsstop -->
206
206
 
207
207
  ### Windows users
@@ -690,12 +690,12 @@ These plugins have been designed to work with SGD:
690
690
  ## Built With
691
691
 
692
692
  - [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) - Validate XML, Parse XML to JS/JSON and vise versa, or parse XML to Nimn rapidly without C/C++ based libraries and no callback
693
+ - [flexible-xml-parser](https://github.com/nodable/flexible-xml-parser) - Fastest XML parser in pure JS with pluggable output builders and value parsers
693
694
  - [fs-extra](https://github.com/jprichardson/node-fs-extra) - Node.js: extra methods for the fs object like copy(), remove(), mkdirs().
694
695
  - [ignore](https://github.com/kaelzhang/node-ignore#readme) - is a manager, filter and parser which implemented in pure JavaScript according to the .gitignore spec 2.22.1.
695
696
  - [lodash](https://github.com/lodash/lodash) - A modern JavaScript utility library delivering modularity, performance & extras.
696
697
  - [MegaLinter](https://megalinter.io) - Open-Source tool for CI/CD workflows that analyzes the consistency of your code, IAC, configuration, and scripts
697
698
  - [simple-git](https://github.com/steveukx/git-js) - A light weight interface for running git commands in any node.js application.
698
- - [xmlbuilder2](https://github.com/oozcitak/xmlbuilder2) - An XML builder for node.js.
699
699
 
700
700
  ## Used by
701
701
 
@@ -1,31 +1,42 @@
1
1
  'use strict';
2
2
  import { __decorate } from "tslib";
3
- import { create } from 'xmlbuilder2';
3
+ import { XMLBuilder } from 'fast-xml-parser';
4
4
  import { OBJECT_TYPE } from '../constant/metadataConstants.js';
5
5
  import { log } from './LoggingDecorator.js';
6
- const xmlConf = { indent: ' ', newline: '\n', prettyPrint: true };
6
+ import { ATTRIBUTE_PREFIX, XML_HEADER_ATTRIBUTE_KEY } from './xmlHelper.js';
7
7
  const frLocale = 'fr';
8
+ const xmlBuilder = new XMLBuilder({
9
+ ignoreAttributes: false,
10
+ format: true,
11
+ indentBy: ' ',
12
+ suppressEmptyNode: false,
13
+ suppressBooleanAttributes: false,
14
+ processEntities: false,
15
+ });
8
16
  export default class PackageBuilder {
9
17
  config;
10
18
  constructor(config) {
11
19
  this.config = config;
12
20
  }
13
21
  buildPackage(strucDiffPerType) {
14
- const xml = create({ version: '1.0', encoding: 'UTF-8' }).ele('Package', {
15
- xmlns: 'http://soap.sforce.com/2006/04/metadata',
16
- });
17
- Array.from(strucDiffPerType.keys())
22
+ const types = Array.from(strucDiffPerType.keys())
18
23
  .sort(this._sortTypesWithMetadata)
19
- .forEach(metadataType => [...strucDiffPerType.get(metadataType)]
20
- .sort(Intl.Collator(frLocale).compare)
21
- .reduce((type, member) => {
22
- type.ele('members').txt(member);
23
- return type;
24
- }, xml.ele('types'))
25
- .ele('name')
26
- .txt(metadataType));
27
- xml.ele('version').txt(`${this.config.apiVersion}.0`);
28
- return xml.end(xmlConf);
24
+ .map(metadataType => ({
25
+ members: [...strucDiffPerType.get(metadataType)].sort(Intl.Collator(frLocale).compare),
26
+ name: metadataType,
27
+ }));
28
+ const jsonObj = {
29
+ [XML_HEADER_ATTRIBUTE_KEY]: {
30
+ [`${ATTRIBUTE_PREFIX}version`]: '1.0',
31
+ [`${ATTRIBUTE_PREFIX}encoding`]: 'UTF-8',
32
+ },
33
+ Package: {
34
+ [`${ATTRIBUTE_PREFIX}xmlns`]: 'http://soap.sforce.com/2006/04/metadata',
35
+ types,
36
+ version: `${this.config.apiVersion}.0`,
37
+ },
38
+ };
39
+ return xmlBuilder.build(jsonObj).trimEnd();
29
40
  }
30
41
  _sortTypesWithMetadata = (x, y) => {
31
42
  // RATIONALE: Why must CustomObject be ordered first in package.xml?
@@ -1 +1 @@
1
- {"version":3,"file":"packageHelper.js","sourceRoot":"","sources":["../../src/utils/packageHelper.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAG9D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAE3C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACpE,MAAM,QAAQ,GAAG,IAAI,CAAA;AAErB,MAAM,CAAC,OAAO,OAAO,cAAc;IACF;IAA/B,YAA+B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAG1C,YAAY,CAAC,gBAA0B;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE;YACvE,KAAK,EAAE,yCAAyC;SACjD,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;aAChC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;aACjC,OAAO,CAAC,YAAY,CAAC,EAAE,CACtB,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;aACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC/B,OAAO,IAAI,CAAA;QACb,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACnB,GAAG,CAAC,MAAM,CAAC;aACX,GAAG,CAAC,YAAY,CAAC,CACrB,CAAA;QACH,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAA;QACrD,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC;IAED,sBAAsB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAChD,oEAAoE;QACpE,+EAA+E;QAC/E,qGAAqG;QACrG,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC,CAAA,CAAC,oFAAoF;QACrH,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC,CAAA;CACF;AA3BQ;IADN,GAAG;kDAmBH"}
1
+ {"version":3,"file":"packageHelper.js","sourceRoot":"","sources":["../../src/utils/packageHelper.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAG9D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAE3E,MAAM,QAAQ,GAAG,IAAI,CAAA;AACrB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;IAChC,gBAAgB,EAAE,KAAK;IACvB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE,KAAK;IACxB,yBAAyB,EAAE,KAAK;IAChC,eAAe,EAAE,KAAK;CACvB,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,OAAO,cAAc;IACF;IAA/B,YAA+B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAG1C,YAAY,CAAC,gBAA0B;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;aAC9C,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;aACjC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,CAAC,IAAI,CACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAChC;YACD,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC,CAAA;QAEL,MAAM,OAAO,GAAG;YACd,CAAC,wBAAwB,CAAC,EAAE;gBAC1B,CAAC,GAAG,gBAAgB,SAAS,CAAC,EAAE,KAAK;gBACrC,CAAC,GAAG,gBAAgB,UAAU,CAAC,EAAE,OAAO;aACzC;YACD,OAAO,EAAE;gBACP,CAAC,GAAG,gBAAgB,OAAO,CAAC,EAAE,yCAAyC;gBACvE,KAAK;gBACL,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI;aACvC;SACF,CAAA;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;IAC5C,CAAC;IAED,sBAAsB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAChD,oEAAoE;QACpE,+EAA+E;QAC/E,qGAAqG;QACrG,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC,CAAA,CAAC,oFAAoF;QACrH,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC,CAAA;CACF;AAhCQ;IADN,GAAG;kDAwBH"}
@@ -1,9 +1,5 @@
1
1
  import type { Config } from '../types/config.js';
2
2
  import type { FileGitRef } from '../types/git.js';
3
- /**
4
- * Represents parsed XML content as a JSON object.
5
- * Used throughout the codebase for XML metadata manipulation.
6
- */
7
3
  export type XmlContent = Record<string, unknown>;
8
4
  export declare const xml2Json: (xmlContent: string) => XmlContent;
9
5
  export declare const parseXmlFileToJson: (forRef: FileGitRef, config: Config) => Promise<XmlContent>;
@@ -1,7 +1,26 @@
1
1
  'use strict';
2
- import { XMLBuilder, XMLParser } from 'fast-xml-parser';
2
+ import FlexXMLParser from '@nodable/flexible-xml-parser';
3
+ import { XMLBuilder } from 'fast-xml-parser';
3
4
  import { readPathFromGit } from './fsHelper.js';
4
5
  const XML_PARSER_OPTION = {
6
+ skip: {
7
+ attributes: false,
8
+ nsPrefix: false,
9
+ comment: false,
10
+ declaration: false,
11
+ },
12
+ nameFor: {
13
+ comment: '#comment',
14
+ },
15
+ attributes: {
16
+ prefix: '@_',
17
+ valueParsers: [],
18
+ },
19
+ tags: {
20
+ valueParsers: ['trim'],
21
+ },
22
+ };
23
+ const JSON_PARSER_OPTION = {
5
24
  commentPropName: '#comment',
6
25
  ignoreAttributes: false,
7
26
  ignoreNameSpace: false,
@@ -10,21 +29,22 @@ const XML_PARSER_OPTION = {
10
29
  parseAttributeValue: false,
11
30
  trimValues: true,
12
31
  processEntities: false,
13
- };
14
- const JSON_PARSER_OPTION = {
15
- ...XML_PARSER_OPTION,
16
32
  format: true,
17
33
  indentBy: ' ',
18
34
  suppressBooleanAttributes: false,
19
35
  suppressEmptyNode: false,
20
36
  };
37
+ const xmlParser = new FlexXMLParser(XML_PARSER_OPTION);
21
38
  export const xml2Json = (xmlContent) => {
22
- let jsonContent = {};
23
- if (xmlContent) {
24
- const xmlParser = new XMLParser(XML_PARSER_OPTION);
25
- jsonContent = xmlParser.parse(xmlContent);
39
+ if (!xmlContent) {
40
+ return {};
41
+ }
42
+ try {
43
+ return xmlParser.parse(xmlContent);
44
+ }
45
+ catch {
46
+ return {};
26
47
  }
27
- return jsonContent;
28
48
  };
29
49
  export const parseXmlFileToJson = async (forRef, config) => {
30
50
  const xmlContent = await readPathFromGit(forRef, config);
@@ -1 +1 @@
1
- {"version":3,"file":"xmlHelper.js","sourceRoot":"","sources":["../../src/utils/xmlHelper.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAQ/C,MAAM,iBAAiB,GAAG;IACxB,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,KAAK;IACrB,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,KAAK;CACvB,CAAA;AACD,MAAM,kBAAkB,GAAG;IACzB,GAAG,iBAAiB;IACpB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,yBAAyB,EAAE,KAAK;IAChC,iBAAiB,EAAE,KAAK;CACzB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,UAAkB,EAAc,EAAE;IACzD,IAAI,WAAW,GAAe,EAAE,CAAA;IAChC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;QAClD,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAkB,EAClB,MAAc,EACO,EAAE;IACvB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAiC,EAAU,EAAE;IAC5E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"xmlHelper.js","sourceRoot":"","sources":["../../src/utils/xmlHelper.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,aAAkC,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAI/C,MAAM,iBAAiB,GAAe;IACpC,IAAI,EAAE;QACJ,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,KAAK;KACnB;IACD,OAAO,EAAE;QACP,OAAO,EAAE,UAAU;KACpB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,EAAe;KAC9B;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,CAAC,MAAM,CAAc;KACpC;CACY,CAAA;AACf,MAAM,kBAAkB,GAAG;IACzB,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,KAAK;IACrB,mBAAmB,EAAE,KAAK;IAC1B,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,KAAK;IACtB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,yBAAyB,EAAE,KAAK;IAChC,iBAAiB,EAAE,KAAK;CACzB,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,UAAkB,EAAc,EAAE;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,KAAK,CAAC,UAAU,CAAe,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAkB,EAClB,MAAc,EACO,EAAE;IACvB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAiC,EAAU,EAAE;IAC5E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA"}