sf-git-merge-driver 1.0.1-dev-70.16864618044-1 → 1.0.1-dev-70.16876630824-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
@@ -48,7 +48,7 @@ EXAMPLES
48
48
  $ sf git merge driver install
49
49
  ```
50
50
 
51
- _See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16864618044-1/src/commands/git/merge/driver/install.ts)_
51
+ _See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16876630824-1/src/commands/git/merge/driver/install.ts)_
52
52
 
53
53
  ## `sf git merge driver run`
54
54
 
@@ -92,7 +92,7 @@ EXAMPLES
92
92
  - output-file is the path to the file where the merged content will be written
93
93
  ```
94
94
 
95
- _See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16864618044-1/src/commands/git/merge/driver/run.ts)_
95
+ _See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16876630824-1/src/commands/git/merge/driver/run.ts)_
96
96
 
97
97
  ## `sf git merge driver uninstall`
98
98
 
@@ -119,7 +119,7 @@ EXAMPLES
119
119
  $ sf git merge driver uninstall
120
120
  ```
121
121
 
122
- _See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16864618044-1/src/commands/git/merge/driver/uninstall.ts)_
122
+ _See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.1-dev-70.16876630824-1/src/commands/git/merge/driver/uninstall.ts)_
123
123
  <!-- commandsstop -->
124
124
 
125
125
  ## How It Works
@@ -1,5 +1,3 @@
1
1
  export declare class MergeDriver {
2
- private static detectEol;
3
- private static applyEol;
4
2
  mergeFiles(ancestorFile: string, ourFile: string, theirFile: string): Promise<boolean>;
5
3
  }
@@ -1,18 +1,8 @@
1
1
  import { readFile, writeFile } from 'node:fs/promises';
2
2
  import { normalize } from 'node:path';
3
3
  import { XmlMerger } from '../merger/XmlMerger.js';
4
+ import { detectEol, normalizeEol } from '../utils/mergeUtils.js';
4
5
  export class MergeDriver {
5
- static detectEol(text) {
6
- if (text.includes('\r\n'))
7
- return '\r\n';
8
- return '\n';
9
- }
10
- static applyEol(text, eol) {
11
- // XML Merge Driver default to \n
12
- if (eol === '\r\n')
13
- return text.split(/\r\n|\n/).join(eol);
14
- return text;
15
- }
16
6
  async mergeFiles(ancestorFile, ourFile, theirFile) {
17
7
  // Read all three versions
18
8
  const [ancestorContent, ourContent, theirContent] = await Promise.all([ancestorFile, ourFile, theirFile]
@@ -20,8 +10,8 @@ export class MergeDriver {
20
10
  .map(path => readFile(path, 'utf8')));
21
11
  const xmlMerger = new XmlMerger();
22
12
  const mergedContent = xmlMerger.mergeThreeWay(ancestorContent, ourContent, theirContent);
23
- const targetEol = MergeDriver.detectEol(ourContent);
24
- const outputWithEol = MergeDriver.applyEol(mergedContent.output, targetEol);
13
+ const targetEol = detectEol(ourContent);
14
+ const outputWithEol = normalizeEol(mergedContent.output, targetEol);
25
15
  process.stderr.write(`[SF-MERGE-DEBUG] wrote to ourFile: ${normalize(ourFile)}\n`);
26
16
  process.stderr.write(`[SF-MERGE-DEBUG] content: ${outputWithEol}\n`);
27
17
  process.stderr.write(`[SF-MERGE-DEBUG] hasConflict: ${mergedContent.hasConflict}\n`);
@@ -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,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,SAAS,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,GAAW;QAC/C,iCAAiC;QACjC,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CACd,YAAoB,EACpB,OAAe,EACf,SAAiB;QAEjB,0BAA0B;QAC1B,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CACnE,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACvC,CAAA;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAC3C,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAA;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACnD,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAE3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC7D,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,aAAa,IAAI,CAAC,CAAA;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iCAAiC,aAAa,CAAC,WAAW,IAAI,CAC/D,CAAA;QAED,2CAA2C;QAC3C,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAA;QAClD,OAAO,aAAa,CAAC,WAAW,CAAA;IAClC,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,WAAW,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAEhE,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,UAAU,CACd,YAAoB,EACpB,OAAe,EACf,SAAiB;QAEjB,0BAA0B;QAC1B,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CACnE,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACvC,CAAA;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAC3C,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAA;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC7D,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,aAAa,IAAI,CAAC,CAAA;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iCAAiC,aAAa,CAAC,WAAW,IAAI,CAC/D,CAAA;QAED,2CAA2C;QAC3C,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAA;QAClD,OAAO,aAAa,CAAC,WAAW,CAAA;IAClC,CAAC;CACF"}
@@ -2,3 +2,5 @@ import type { JsonArray, JsonObject, JsonValue } from '../types/jsonTypes.js';
2
2
  export declare const isObject: (ancestor: JsonValue | undefined | null, local: JsonValue | undefined | null, other: JsonValue | undefined | null) => boolean;
3
3
  export declare const ensureArray: (value: JsonValue) => JsonArray;
4
4
  export declare const getUniqueSortedProps: (...objects: (JsonObject | JsonArray)[]) => string[];
5
+ export declare const detectEol: (text: string) => string;
6
+ export declare const normalizeEol: (text: string, eol: string) => string;
@@ -1,5 +1,21 @@
1
1
  import { castArray, isNil } from 'lodash-es';
2
+ const LF_OR_CRLF_REGEX = /\r?\n/g;
3
+ const CRLF_ONLY_REGEX = /\r\n/g;
4
+ const ISOLATED_CR_ONLY_REGEX = /\r/g;
5
+ const CRLF = '\r\n';
6
+ const LF = '\n';
2
7
  export const isObject = (ancestor, local, other) => typeof [ancestor, other, local].find(ele => !isNil(ele)) === 'object';
3
8
  export const ensureArray = (value) => isNil(value) ? [] : castArray(value);
4
9
  export const getUniqueSortedProps = (...objects) => Array.from(new Set([...objects].map(Object.keys).flat())).sort();
10
+ export const detectEol = (text) => text.includes(CRLF) ? CRLF : LF;
11
+ export const normalizeEol = (text, eol) => {
12
+ if (!eol || !text) {
13
+ return text;
14
+ }
15
+ const regex = eol === CRLF ? LF_OR_CRLF_REGEX : CRLF_ONLY_REGEX;
16
+ const textWithCorrectEol = text.replace(regex, eol);
17
+ return eol === LF
18
+ ? textWithCorrectEol.replace(ISOLATED_CR_ONLY_REGEX, '')
19
+ : textWithCorrectEol;
20
+ };
5
21
  //# sourceMappingURL=mergeUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeUtils.js","sourceRoot":"","sources":["../../src/utils/mergeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAG5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAsC,EACtC,KAAmC,EACnC,KAAmC,EAC1B,EAAE,CACX,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAA;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAa,EAAE,CACzD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,SAAS,CAAC,KAAK,CAAe,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAG,OAAmC,EAC5B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"mergeUtils.js","sourceRoot":"","sources":["../../src/utils/mergeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAG5C,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACjC,MAAM,eAAe,GAAG,OAAO,CAAA;AAC/B,MAAM,sBAAsB,GAAG,KAAK,CAAA;AACpC,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,MAAM,EAAE,GAAG,IAAI,CAAA;AAEf,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAsC,EACtC,KAAmC,EACnC,KAAmC,EAC1B,EAAE,CACX,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAA;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAa,EAAE,CACzD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,SAAS,CAAC,KAAK,CAAe,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAG,OAAmC,EAC5B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAE/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE;IAChE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAA;IAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACnD,OAAO,GAAG,KAAK,EAAE;QACf,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACxD,CAAC,CAAC,kBAAkB,CAAA;AACxB,CAAC,CAAA"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "sf-git-merge-driver",
3
- "version": "1.0.1-dev-70.16864618044-1",
3
+ "version": "1.0.1-dev-70.16876630824-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.1-dev-70.16864618044-1",
9
+ "version": "1.0.1-dev-70.16876630824-1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@oclif/core": "^4.5.2",
@@ -284,5 +284,5 @@
284
284
  ]
285
285
  }
286
286
  },
287
- "version": "1.0.1-dev-70.16864618044-1"
287
+ "version": "1.0.1-dev-70.16876630824-1"
288
288
  }
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.1-dev-70.16864618044-1",
4
+ "version": "1.0.1-dev-70.16876630824-1",
5
5
  "exports": "./lib/driver/MergeDriver.js",
6
6
  "type": "module",
7
7
  "author": "Sébastien Colladon (colladonsebastien@gmail.com)",