Skip to content
This repository has been archived by the owner on Jan 22, 2019. It is now read-only.
/ reftools Public archive

Tools to deal with references in Javascript objects. Now part of oas-kit

License

Notifications You must be signed in to change notification settings

Mermade/reftools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reftools

Greenkeeper badge

Constants

util

TopoSort function is LICENSE: MIT, everything else is BSD-3-Clause

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

ResultResult

Try to get a topological sorting out of directed graph.

util

TopoSort function is LICENSE: MIT, everything else is BSD-3-Clause

Kind: global constant

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

Kind: global function

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