RefTools
Functions
- nop(obj) ⇒
-
a no-op placeholder which returns the given object unchanged useful for when a clone function needs to be passed but cloning is not required
- clone(obj) ⇒
-
clones the given object using JSON.parse and JSON.stringify
- shallowClone(obj) ⇒
-
clones the given object's properties shallowly, ignores properties from prototype
- deepClone(obj) ⇒
-
clones the given object's properties deeply, ignores properties from prototype
- fastClone(obj) ⇒
-
clones the given object's properties shallowly, using Object.assign
- circularClone()
-
Source: stackoverflow http://bit.ly/2A1Kha6
- dereference(o) ⇒
-
dereferences the given object
- flatten(obj, callback) ⇒
-
flattens an object into an array of properties
- jpescape(s) ⇒
-
escapes JSON Pointer using ~0 for ~ and ~1 for /
- jpunescape(s) ⇒
-
unescapes JSON Pointer using ~0 for ~ and ~1 for /
- jptr(obj, prop, newValue) ⇒
-
from obj, return the property with a JSON Pointer prop, optionally setting it to newValue
- recurse(object, state, callback)
-
recurses through the properties of an object, given an optional starting state anything you pass in state.payload is passed to the callback each time
- reref(obj, options) ⇒
-
Simply modifies an object to have no self-references by replacing them with $ref pointers
- objToGraph(obj, containerName) ⇒
-
Takes an object and creates a graph of JSON Pointer / References
- visit(obj, comparison, callbacks) ⇒
-
Given an expanded object and an optional object to compare to (e.g. its $ref'd form), will call the following functions:
- callbacks.before - lets you modify the initial starting state, must return it
- callbacks.where - lets you select a subset of properties, return a truthy value
- callbacks.filter - called for all selected properties, can mutate/remove (by setting to undefined)
- callbacks.compare - allowing the objects to be compared by path (i.e. for $ref reinstating)
- callbacks.identity - called on any object identity (previously seen) properties
- callbacks.selected - called for all selected/unfiltered properties, does not mutate directly
- callbacks.count - called at the end with the number of selected properties
- callbacks.finally - called at the end of the traversal
Typedefs
nop(obj) ⇒
a no-op placeholder which returns the given object unchanged useful for when a clone function needs to be passed but cloning is not required
Kind: global function
Returns: the input object, unchanged
Param | Description |
---|---|
obj | the input object |
clone(obj) ⇒
clones the given object using JSON.parse and JSON.stringify
Kind: global function
Returns: the cloned object
Param | Description |
---|---|
obj | the object to clone |
shallowClone(obj) ⇒
clones the given object's properties shallowly, ignores properties from prototype
Kind: global function
Returns: the cloned object
Param | Description |
---|---|
obj | the object to clone |
deepClone(obj) ⇒
clones the given object's properties deeply, ignores properties from prototype
Kind: global function
Returns: the cloned object
Param | Description |
---|---|
obj | the object to clone |
fastClone(obj) ⇒
clones the given object's properties shallowly, using Object.assign
Kind: global function
Returns: the cloned object
Param | Description |
---|---|
obj | the object to clone |
circularClone()
Source: stackoverflow http://bit.ly/2A1Kha6
dereference(o) ⇒
dereferences the given object
Kind: global function
Returns: the dereferenced object
Definitions: a source of definitions to reference
Options: optional settings (used recursively)
Param | Description |
---|---|
o | the object to dereference |
flatten(obj, callback) ⇒
flattens an object into an array of properties
Kind: global function
Returns: the flattened object as an array of properties
Param | Description |
---|---|
obj | the object to flatten |
callback | a function which can mutate or filter the entries (by returning null) |
jpescape(s) ⇒
escapes JSON Pointer using ~0 for ~ and ~1 for /
Kind: global function
Returns: the escaped string
Param | Description |
---|---|
s | the string to escape |
jpunescape(s) ⇒
unescapes JSON Pointer using ~0 for ~ and ~1 for /
Kind: global function
Returns: the unescaped string
Param | Description |
---|---|
s | the string to unescape |
jptr(obj, prop, newValue) ⇒
from obj, return the property with a JSON Pointer prop, optionally setting it to newValue
Kind: global function
Returns: the found property, or false
Param | Description |
---|---|
obj | the object to point into |
prop | the JSON Pointer or JSON Reference |
newValue | optional value to set the property to |
recurse(object, state, callback)
recurses through the properties of an object, given an optional starting state anything you pass in state.payload is passed to the callback each time
Kind: global function
Param | Description |
---|---|
object | the object to recurse through |
state | optional starting state, can be set to null or |
callback | the function which receives object,key,state on each property |
reref(obj, options) ⇒
Simply modifies an object to have no self-references by replacing them with $ref pointers
Kind: global function
Returns: the re-referenced object (mutated)
Param | Description |
---|---|
obj | the object to re-reference |
options | may contain a prefix property for the generated refs |
objToGraph(obj, containerName) ⇒
Takes an object and creates a graph of JSON Pointer / References
Kind: global function
Returns: the graph suitable for passing to toposort()
Param | Description |
---|---|
obj | the object to convert |
containerName | the property containing definitions. Default: definitions |
visit(obj, comparison, callbacks) ⇒
Given an expanded object and an optional object to compare to (e.g. its $ref'd form), will call the following functions:
- callbacks.before - lets you modify the initial starting state, must return it
- callbacks.where - lets you select a subset of properties, return a truthy value
- callbacks.filter - called for all selected properties, can mutate/remove (by setting to undefined)
- callbacks.compare - allowing the objects to be compared by path (i.e. for $ref reinstating)
- callbacks.identity - called on any object identity (previously seen) properties
- callbacks.selected - called for all selected/unfiltered properties, does not mutate directly
- callbacks.count - called at the end with the number of selected properties
- callbacks.finally - called at the end of the traversal
Kind: global function
Returns: the possibly mutated object
Param | Description |
---|---|
obj | the object to visit |
comparison | optional object to compare to |
callbacks | object containing functions as above |
Result
Result ⇒ Try to get a topological sorting out of directed graph.
Kind: global typedef
Param | Type | Description |
---|---|---|
nodes | Object |
A list of nodes, including edges (see below). |
Properties
Name | Type | Description |
---|---|---|
sort | array |
the sort, empty if not found |
nodesWithEdges, | array |
will be empty unless a cycle is found |