mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
feat(parse-conflict-json): new definition (#47041)
Small module to work with JSON files: - definition file - tests https://github.com/npm/parse-conflict-json https://github.com/npm/parse-conflict-json#usage Thanks!
This commit is contained in:
parent
343d20ccd1
commit
964a95ea8d
36
types/parse-conflict-json/index.d.ts
vendored
Normal file
36
types/parse-conflict-json/index.d.ts
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
// Type definitions for parse-conflict-json 1.1
|
||||
// Project: https://github.com/npm/parse-conflict-json#readme
|
||||
// Definitions by: Piotr Błażejewicz <https://github.com/peterblazejewicz>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
/// <reference types="node" />
|
||||
|
||||
/**
|
||||
* Parse a JSON string that has git merge conflicts, resolving if possible.
|
||||
* If the JSON is valid, it just does JSON.parse as normal.
|
||||
* If either side of the conflict is invalid JSON, then an error is thrown for that.
|
||||
*/
|
||||
declare function parseConflictJSON(
|
||||
text: string,
|
||||
reviver?: (this: any, key: string, value: any) => any,
|
||||
prefer?: parseConflictJSON.Prefer,
|
||||
): any;
|
||||
|
||||
declare namespace parseConflictJSON {
|
||||
/**
|
||||
* returns true if the data looks like a conflicted diff file
|
||||
*/
|
||||
function isDiff(text: string): boolean;
|
||||
|
||||
/**
|
||||
* If prefer is set to theirs, then the vaules of theirs and ours are switched in the resolver function.
|
||||
* (Ie, we'll apply their changes on top of our object, rather than the other way around.)
|
||||
* Parse the conflicted file into 3 pieces: ours, theirs, and parent
|
||||
* Get the diff from parent to ours.
|
||||
* Apply each change of that diff to theirs.
|
||||
* If any change in the diff set cannot be applied (ie, because they changed an object into a non-object and we changed a field on that object),
|
||||
* then replace the object at the specified path with the object at the path in ours.
|
||||
*/
|
||||
type Prefer = 'theirs' | 'ours';
|
||||
}
|
||||
|
||||
export = parseConflictJSON;
|
||||
12
types/parse-conflict-json/parse-conflict-json-tests.ts
Normal file
12
types/parse-conflict-json/parse-conflict-json-tests.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import parseConflictJson = require('parse-conflict-json');
|
||||
import fs = require('fs');
|
||||
|
||||
const data = fs.readFileSync('tsconfig.json', 'utf8');
|
||||
|
||||
parseConflictJson.isDiff(data); // $ExpectType boolean
|
||||
parseConflictJson.isDiff(JSON.stringify({})); // $ExpectType boolean
|
||||
|
||||
parseConflictJson(data); // $ExpectType any
|
||||
parseConflictJson(data, (name, value) => value); // $ExpectType any
|
||||
parseConflictJson(data, (name, value) => value, 'theirs'); // $ExpectType any
|
||||
parseConflictJson(data, (name, value) => value, 'ours'); // $ExpectType any
|
||||
23
types/parse-conflict-json/tsconfig.json
Normal file
23
types/parse-conflict-json/tsconfig.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictFunctionTypes": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"parse-conflict-json-tests.ts"
|
||||
]
|
||||
}
|
||||
1
types/parse-conflict-json/tslint.json
Normal file
1
types/parse-conflict-json/tslint.json
Normal file
@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Loading…
Reference in New Issue
Block a user