projen
Version:
CDK for software projects
92 lines (91 loc) • 3.04 kB
TypeScript
export declare enum TestFailureBehavior {
/**
* Skip the current patch operation and continue with the next operation.
*/
SKIP = "skip",
/**
* Fail the whole file synthesis.
*/
FAIL_SYNTHESIS = "fail"
}
/**
* Utility for applying RFC-6902 JSON-Patch to a document.
*
* Use the the `JsonPatch.apply(doc, ...ops)` function to apply a set of
* operations to a JSON document and return the result.
*
* Operations can be created using the factory methods `JsonPatch.add()`,
* `JsonPatch.remove()`, etc.
*
* @example
*
*const output = JsonPatch.apply(input,
* JsonPatch.replace('/world/hi/there', 'goodbye'),
* JsonPatch.add('/world/foo/', 'boom'),
* JsonPatch.remove('/hello'));
*
*/
export declare class JsonPatch {
private readonly operation;
/**
* Applies a set of JSON-Patch (RFC-6902) operations to `document` and returns the result.
* @param document The document to patch
* @param ops The operations to apply
* @returns The result document
*/
static apply(document: any, ...ops: JsonPatch[]): any;
/**
* Adds a value to an object or inserts it into an array. In the case of an
* array, the value is inserted before the given index. The - character can be
* used instead of an index to insert at the end of an array.
*
* @example JsonPatch.add('/biscuits/1', { "name": "Ginger Nut" })
*/
static add(path: string, value: any): JsonPatch;
/**
* Removes a value from an object or array.
*
* @example JsonPatch.remove('/biscuits')
* @example JsonPatch.remove('/biscuits/0')
*/
static remove(path: string): JsonPatch;
/**
* Replaces a value. Equivalent to a “remove” followed by an “add”.
*
* @example JsonPatch.replace('/biscuits/0/name', 'Chocolate Digestive')
*/
static replace(path: string, value: any): JsonPatch;
/**
* Copies a value from one location to another within the JSON document. Both
* from and path are JSON Pointers.
*
* @example JsonPatch.copy('/biscuits/0', '/best_biscuit')
*/
static copy(from: string, path: string): JsonPatch;
/**
* Moves a value from one location to the other. Both from and path are JSON Pointers.
*
* @example JsonPatch.move('/biscuits', '/cookies')
*/
static move(from: string, path: string): JsonPatch;
/**
* Tests that the specified value is set in the document. If the test fails,
* then the patch as a whole should not apply.
*
* @example JsonPatch.test('/best_biscuit/name', 'Choco Leibniz')
*/
static test(path: string, value: any, failureBehavior?: TestFailureBehavior): JsonPatch;
/**
* Escapes a json pointer path
* @param path The raw pointer
* @return the Escaped path
*/
static escapePath(path: string): string;
private constructor();
/**
* Returns the JSON representation of this JSON patch operation.
*
* @internal
*/
_toJson(): any;
}