mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
Added typings for the JSON-Patch library, called 'fast-json-patch' on npm
This commit is contained in:
parent
6403d490a8
commit
cd1bbd6f2e
43
fast-json-patch/fast-json-patch-tests.ts
Normal file
43
fast-json-patch/fast-json-patch-tests.ts
Normal file
@ -0,0 +1,43 @@
|
||||
/// <reference path="./fast-json-patch.d.ts" />
|
||||
import * as jsonpatch from 'fast-json-patch'
|
||||
|
||||
var myobj:{
|
||||
firstName:string,
|
||||
contactDetails: {
|
||||
phoneNumbers:string[]
|
||||
}
|
||||
} = { firstName:"Albert", contactDetails: { phoneNumbers: [ ] } };
|
||||
var patches = [
|
||||
{op:"replace", path:"/firstName", value:"Joachim" },
|
||||
{op:"add", path:"/lastName", value:"Wester" },
|
||||
{op:"add", path:"/contactDetails/phoneNumbers/0", value:{ number:"555-123" } }
|
||||
];
|
||||
jsonpatch.apply( myobj, patches );
|
||||
|
||||
var myobj2 = { firstName:"Joachim", lastName:"Wester", contactDetails: { phoneNumbers: [ { number:"555-123" }] } };
|
||||
var observer = jsonpatch.observe( myobj2 );
|
||||
myobj2.firstName = "Albert";
|
||||
myobj2.contactDetails.phoneNumbers[0].number = "123";
|
||||
myobj2.contactDetails.phoneNumbers.push({number:"456"});
|
||||
var patches2 = jsonpatch.generate(observer);
|
||||
|
||||
var objA = {user: {firstName: "Albert", lastName: "Einstein"}};
|
||||
var objB = {user: {firstName: "Albert", lastName: "Collins"}};
|
||||
var diff = jsonpatch.compare(objA, objB);
|
||||
|
||||
var obj = {user: {firstName: "Albert"}};
|
||||
var patches3 = [{op: "replace", path: "/user/firstName", value: "Albert"}, {op: "replace", path: "/user/lastName", value: "Einstein"}];
|
||||
var errors = jsonpatch.validate(patches, obj);
|
||||
if (errors.length == 0) {
|
||||
//there are no errors!
|
||||
}
|
||||
else {
|
||||
for (var i=0; i < errors.length; i++) {
|
||||
if (!errors[i]) {
|
||||
console.log("Valid patch at index", i, patches[i]);
|
||||
}
|
||||
else {
|
||||
console.error("Invalid patch at index", i, errors[i], patches[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
67
fast-json-patch/fast-json-patch.d.ts
vendored
Normal file
67
fast-json-patch/fast-json-patch.d.ts
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
// Type definitions for JSON-Patch v1.0.0
|
||||
// Project: https://github.com/Starcounter-Jack/JSON-Patch/releases
|
||||
// Definitions by: Francis O'Brien <https://github.com/itsFrank>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare namespace fastjsonpatch {
|
||||
|
||||
|
||||
interface JsonPatch {
|
||||
/**
|
||||
* Applies an array of patch instructions to an object
|
||||
*/
|
||||
apply(object:any, patches:Patch[], validate?:boolean):boolean
|
||||
|
||||
/**
|
||||
* Observes changes made to an object, which can then be retieved using generate
|
||||
*/
|
||||
observe<T>(object:T, callback?:()=>void):Observer<T>
|
||||
|
||||
/**
|
||||
* Detach an observer from an object
|
||||
*/
|
||||
unobserve<T>(object:T, observer:Observer<T>):void
|
||||
|
||||
/**
|
||||
* Generate an array of patches from an observer
|
||||
*/
|
||||
generate<T>(observer:Observer<T>):Patch[]
|
||||
|
||||
/**
|
||||
* Create an array of patches from the differences in two objects
|
||||
*/
|
||||
compare(object1:any, object2:any):Patch[]
|
||||
|
||||
/**
|
||||
* Ensure a set of patch instructions is valid
|
||||
*/
|
||||
validate(patches:Patch[], tree?:any):JsonPatchError[]
|
||||
}
|
||||
|
||||
interface Observer<T> {
|
||||
object:T
|
||||
patches:Patch[]
|
||||
unobserve():void
|
||||
}
|
||||
|
||||
interface Patch {
|
||||
op:string
|
||||
path:string
|
||||
value?:any
|
||||
from?:string
|
||||
}
|
||||
|
||||
interface JsonPatchError {
|
||||
name:string
|
||||
message:string
|
||||
index:number
|
||||
operation:any
|
||||
tree:any
|
||||
}
|
||||
}
|
||||
|
||||
declare var jsonpatch: fastjsonpatch.JsonPatch;
|
||||
|
||||
declare module "fast-json-patch" {
|
||||
export = jsonpatch
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user