• Version 5.1.1
  • Published
  • 91.5 kB
  • No dependencies
  • MIT license


npm i rfc6902
yarn add rfc6902
pnpm add rfc6902


Complete implementation of RFC6902 (patch and diff)



function applyPatch

applyPatch: (
object: any,
patch: Operation[]
) => (
| import('./patch').MissingError
| import('./patch').TestError
| import('./patch').InvalidOperationError
| null
  • Apply a 'application/json-patch+json'-type patch to an object.

    patch *must* be an array of operations.

    > Operation objects MUST have exactly one "op" member, whose value > indicates the operation to perform. Its value MUST be one of "add", > "remove", "replace", "move", "copy", or "test"; other values are > errors.

    This method mutates the target object in-place.


    list of results, one for each operation: null indicated success, otherwise, the result will be an instance of one of the Error classes: MissingError, InvalidOperationError, or TestError.

function createPatch

createPatch: (input: any, output: any, diff?: VoidableDiff) => Operation[];
  • Produce a 'application/json-patch+json'-type patch to get from one object to another.

    This does not alter input or output unless they have a property getter with side-effects (which is not a good idea anyway).

    diff is called on each pair of comparable non-primitive nodes in the input/output object trees, producing nested patches. Return undefined to fall back to default behaviour.

    Returns list of operations to perform on input to produce output.

function createTests

createTests: (input: any, patch: Operation[]) => TestOperation[];
  • Produce an 'application/json-patch+json'-type list of tests, to verify that existing values in an object are identical to the those captured at some checkpoint (whenever this function is called).

    This does not alter input or output unless they have a property getter with side-effects (which is not a good idea anyway).

    Returns list of test operations.


class Pointer

class Pointer {}
  • JSON Pointer representation


constructor(tokens?: string[]);

    property tokens

    tokens: string[];

      method add

      add: (token: string) => Pointer;
      • token should be a String. It'll be coerced to one anyway.

        immutable (shallowly)

      method evaluate

      evaluate: (object: any) => PointerEvaluation;
      • Returns an object with 'parent', 'key', and 'value' properties. In the special case that this Pointer's path == "", this object will be {parent: null, key: '', value: object}. Otherwise, parent and key will have the property such that parent[key] == value.

      method fromJSON

      static fromJSON: (path: string) => Pointer;
      • path *must* be a properly escaped string.

      method get

      get: (object: any) => any;

        method push

        push: (token: string) => void;

          method set

          set: (object: any, value: any) => void;

            method toString

            toString: () => string;


              interface TestOperation

              interface TestOperation {}

                property op

                op: 'test';

                  property path

                  path: string;

                    property value

                    value: any;

                      Type Aliases

                      type Operation

                      type Operation =
                      | AddOperation
                      | RemoveOperation
                      | ReplaceOperation
                      | MoveOperation
                      | CopyOperation
                      | TestOperation;

                        type Patch

                        type Patch = Operation[];

                          Package Files (3)

                          Dependencies (0)

                          No dependencies.

                          Dev Dependencies (8)

                          Peer Dependencies (0)

                          No peer dependencies.


                          To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                          You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/rfc6902.

                          • Markdown
                          • HTML
                            <a href="https://www.jsdocs.io/package/rfc6902"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>