sf-git-merge-driver 1.0.0-dev-3.13729918030-1 → 1.0.0-dev-3.13770819265-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
@@ -47,7 +47,7 @@ EXAMPLES
47
47
  $ sf git merge driver install
48
48
  ```
49
49
 
50
- _See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13729918030-1/src/commands/git/merge/driver/install.ts)_
50
+ _See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13770819265-1/src/commands/git/merge/driver/install.ts)_
51
51
 
52
52
  ## `sf git merge driver run`
53
53
 
@@ -85,7 +85,7 @@ EXAMPLES
85
85
  - output-file is the path to the file where the merged content will be written
86
86
  ```
87
87
 
88
- _See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13729918030-1/src/commands/git/merge/driver/run.ts)_
88
+ _See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13770819265-1/src/commands/git/merge/driver/run.ts)_
89
89
 
90
90
  ## `sf git merge driver uninstall`
91
91
 
@@ -112,7 +112,7 @@ EXAMPLES
112
112
  $ sf git merge driver uninstall
113
113
  ```
114
114
 
115
- _See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13729918030-1/src/commands/git/merge/driver/uninstall.ts)_
115
+ _See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.13770819265-1/src/commands/git/merge/driver/uninstall.ts)_
116
116
  <!-- commandsstop -->
117
117
 
118
118
 
@@ -9,7 +9,7 @@ export class MergeDriver {
9
9
  readFile(theirFile, 'utf8'),
10
10
  ]);
11
11
  const xmlMerger = new XmlMerger();
12
- const mergedContent = await xmlMerger.tripartXmlMerge(ancestorContent, ourContent, theirContent);
12
+ const mergedContent = xmlMerger.tripartXmlMerge(ancestorContent, ourContent, theirContent);
13
13
  // Write the merged content to the output file
14
14
  await writeFile(outputFile, mergedContent);
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MergeDriver.js","sourceRoot":"","sources":["../../src/driver/MergeDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;QAC3D,0BAA0B;QAC1B,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;YAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5B,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEjC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,eAAe,CACnD,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAA;QAED,8CAA8C;QAC9C,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"MergeDriver.js","sourceRoot":"","sources":["../../src/driver/MergeDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;QAC3D,0BAA0B;QAC1B,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;YAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5B,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAC7C,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAA;QAED,8CAA8C;QAC9C,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC5C,CAAC;CACF"}
@@ -1,3 +1,3 @@
1
1
  export declare class XmlMerger {
2
- tripartXmlMerge(ancestorContent: string, ourContent: string, theirContent: string): Promise<any>;
2
+ tripartXmlMerge(ancestorContent: string, ourContent: string, theirContent: string): string;
3
3
  }
@@ -1,22 +1,28 @@
1
1
  import { XMLBuilder, XMLParser } from 'fast-xml-parser';
2
2
  import { JsonMerger } from './JsonMerger.js';
3
- const options = {
4
- attributeNamePrefix: '@_',
5
- commentPropName: '#comment',
6
- format: true,
3
+ const XML_DECL = '<?xml version="1.0" encoding="UTF-8"?>\n';
4
+ const XML_COMMENT_PROP_NAME = '#xml__comment';
5
+ const parserOptions = {
7
6
  ignoreAttributes: false,
8
- ignoreNameSpace: false,
9
- indentBy: ' ',
10
- parseAttributeValue: false,
11
- parseNodeValue: false,
12
7
  parseTagValue: false,
13
- processEntities: false,
14
- suppressEmptyNode: false,
15
- trimValues: true,
8
+ parseAttributeValue: false,
9
+ cdataPropName: '__cdata',
10
+ ignoreDeclaration: true,
11
+ numberParseOptions: { leadingZeros: false, hex: false },
12
+ commentPropName: XML_COMMENT_PROP_NAME,
13
+ };
14
+ const builderOptions = {
15
+ format: true,
16
+ indentBy: ' ',
17
+ ignoreAttributes: false,
18
+ cdataPropName: '__cdata',
19
+ commentPropName: XML_COMMENT_PROP_NAME,
16
20
  };
21
+ const correctComments = (xml) => xml.includes('<!--') ? xml.replace(/\s+<!--(.*?)-->\s+/g, '<!--$1-->') : xml;
22
+ const handleSpecialEntities = (xml) => xml.replaceAll('&amp;#160;', '&#160;');
17
23
  export class XmlMerger {
18
- async tripartXmlMerge(ancestorContent, ourContent, theirContent) {
19
- const parser = new XMLParser(options);
24
+ tripartXmlMerge(ancestorContent, ourContent, theirContent) {
25
+ const parser = new XMLParser(parserOptions);
20
26
  const ancestorObj = parser.parse(ancestorContent);
21
27
  const ourObj = parser.parse(ourContent);
22
28
  const theirObj = parser.parse(theirContent);
@@ -24,9 +30,9 @@ export class XmlMerger {
24
30
  const jsonMerger = new JsonMerger();
25
31
  const mergedObj = jsonMerger.mergeObjects(ancestorObj, ourObj, theirObj);
26
32
  // Convert back to XML and format
27
- const builder = new XMLBuilder(options);
33
+ const builder = new XMLBuilder(builderOptions);
28
34
  const mergedXml = builder.build(mergedObj);
29
- return mergedXml;
35
+ return correctComments(XML_DECL.concat(handleSpecialEntities(mergedXml)));
30
36
  }
31
37
  }
32
38
  //# sourceMappingURL=XmlMerger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"XmlMerger.js","sourceRoot":"","sources":["../../src/merger/XmlMerger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,OAAO,GAAG;IACd,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,UAAU;IAC3B,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,MAAM;IAChB,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,IAAI;CACjB,CAAA;AAED,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,eAAe,CACnB,eAAuB,EACvB,UAAkB,EAClB,YAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;QAErC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAE3C,oCAAoC;QAEpC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAExE,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"XmlMerger.js","sourceRoot":"","sources":["../../src/merger/XmlMerger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,QAAQ,GAAG,0CAA0C,CAAA;AAC3D,MAAM,qBAAqB,GAAG,eAAe,CAAA;AAE7C,MAAM,aAAa,GAAG;IACpB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,KAAK;IACpB,mBAAmB,EAAE,KAAK;IAC1B,aAAa,EAAE,SAAS;IACxB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;IACvD,eAAe,EAAE,qBAAqB;CACvC,CAAA;AAED,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,qBAAqB;CACvC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE,CAC9C,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AAE9E,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAU,EAAE,CACpD,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAExC,MAAM,OAAO,SAAS;IACpB,eAAe,CACb,eAAuB,EACvB,UAAkB,EAClB,YAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAA;QAE3C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAE3C,oCAAoC;QAEpC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAExE,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1C,OAAO,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "sf-git-merge-driver",
3
- "version": "1.0.0-dev-3.13729918030-1",
3
+ "version": "1.0.0-dev-3.13770819265-1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "sf-git-merge-driver",
9
- "version": "1.0.0-dev-3.13729918030-1",
9
+ "version": "1.0.0-dev-3.13770819265-1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@oclif/core": "^4.2.8",
@@ -248,5 +248,5 @@
248
248
  ]
249
249
  }
250
250
  },
251
- "version": "1.0.0-dev-3.13729918030-1"
251
+ "version": "1.0.0-dev-3.13770819265-1"
252
252
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sf-git-merge-driver",
3
3
  "description": "git remote add origin git@github.com:scolladon/sf-git-merge-driver.git",
4
- "version": "1.0.0-dev-3.13729918030-1",
4
+ "version": "1.0.0-dev-3.13770819265-1",
5
5
  "exports": "./lib/driver/MergeDriver.js",
6
6
  "type": "module",
7
7
  "author": "Sébastien Colladon (colladonsebastien@gmail.com)",